数据库非平凡函数依赖

对于每一个关系模式,找到所有在模式中有效的非平凡函数依赖

PROJECT(title, deadline, manager-number, manager-full-name)
关系表  PROJECT  包含有关项目的信息。项目由标题、截止日期、项目经理的员工编号和项目经理的全名来描
述。一个项目有一个截止日期和一个经理。在截止日期之前不能更换经理。一名员工可以管理多个项目。

COURSE(course-code, credits, student#, full-name)
课程由课程代码和学分总数描述。课程由学生注册。一个学生可以报读多门课程,一门课程可以被很多学生 报读。学生由学号和全名描述

DEGREE(title, total-credits, department, head-of-department,
course-code)
大学学位由名称、所需总学分、授予学位的部门和核心必修课程代码来描述。部门由其负责人的全名描述

ARTICLE(title, journal, author, keyword)
科学文章由一对唯一的标题和期刊属性标识。一篇文章也由作者姓名和一些关键字来描述。一篇文章可以由 许多作者撰写,并且可以被许多关键字索引。一个作者可以写很多文章

对于非平凡函数依赖还不是太了解,希望能通过几个例子学习一下

基于Monster 组和GPT的调写:
先看看下面文献,理解一下:
函数依赖:https://blog.csdn.net/weixin_56937141/article/details/127643455?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167930841116800217252486%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167930841116800217252486&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-127643455-null-null.142^v74^pc_search_v2,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=%E5%87%BD%E6%95%B0%E4%BE%9D%E8%B5%96%E6%98%AF%E4%BB%80%E4%B9%88&spm=1018.2226.3001.4449
非平凡函数依赖:https://blog.csdn.net/weixin_51656605/article/details/112513228?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167930869116782427420482%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167930869116782427420482&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-112513228-null-null.142^v74^pc_search_v2,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=%E4%BB%80%E4%B9%88%E6%98%AF%E9%9D%9E%E5%B9%B3%E5%87%A1%E5%87%BD%E6%95%B0%E4%BE%9D%E8%B5%96&spm=1018.2226.3001.4449
下面是4个例子例子,关于非平凡函数依赖,你理解理解。
1.

PROJECT(title, deadline, manager-number, manager-full-name)
title → deadline
manager-number → manager-full-name

标题可以唯一地决定截止日期,每个项目只有一个截止日期。经理的员工编号可以唯一地决定经理的全名,因为每个员工只能管理一个项目。

2.

COURSE(course-code, credits, student#, full-name)
course-code → credits
student# → full-name

课程代码唯一地决定学分总数,因为每个课程只有一个学分总数。学生的学号可以唯一地决定全名,因为每个学生只有一个全名。
3.

DEGREE(title, total-credits, department, head-of-department, course-code)
title → total-credits
department → head-of-department

学位名称唯一地决定所需总学分,因为每个学位只需要一定数量的学分。部门可以唯一地决定其负责人的全名,因为每个部门只有一个负责人。

4.

ARTICLE(title, journal, author, keyword)
title → journal
title, author → keyword

标题可以唯一地决定期刊,因为每篇文章只能在一个期刊上发表。另外,标题和作者共同决定了关键字,因为同一篇文章的关键字可能会因为不同的作者而不同。

参考GPT和自己的思路:

非平凡函数依赖是指如果一个属性或者属性集合 A 能够唯一地决定另一个属性 B 的取值,则称 B 是 A 的函数依赖关系。如果存在一个属性集合 A,使得 A 能够唯一地决定 B 的取值,但是 A 的一个子集不能决定 B 的取值,那么就称这是一个非平凡函数依赖。

对于给定的关系模式,我们需要找到所有有效的非平凡函数依赖。下面是每个关系模式的有效非平凡函数依赖的示例:

  • 在 PROJECT 关系模式中,一个项目的截止日期可以唯一地决定项目经理的全名,所以 (deadline) → (manager-full-name) 是一个有效的非平凡函数依赖。
  • 在 COURSE 关系模式中,一个学生的学号可以唯一地决定他的全名,所以 (student#) → (full-name) 是一个有效的非平凡函数依赖。
  • 在 DEGREE 关系模式中,核心必修课程代码和所需总学分共同可以唯一地决定学位的名称,所以 (course-code, total-credits) → (title) 是一个有效的非平凡函数依赖。
  • 在 ARTICLE 关系模式中,一篇文章的标题和期刊属性可以唯一决定作者姓名,所以 (title, journal) → (author) 是一个有效的非平凡函数依赖。