Database 数据库-候选密钥和FD

Database 数据库-候选密钥和FD,database,functional-dependencies,Database,Functional Dependencies,现在问题要求我找出函数依赖项和候选键 当我计算FD和候选密钥时,我有点困惑。根据我的理解,如果“给定X的一个值,我知道Y的一个值吗?”,你可以找到FDs?例如,如果给我一个studentID,我会知道studentName吗?对这很简单 对于候选密钥,我认为它们可能是主键,但必须用作主键 现在我有一个场景: 一家职业介绍所正在创建一个数据库来记录 面试预约详情。该机构雇用“安置经理” (PLM)帮助“候选人”(CND)找到工作的人。每个位置 经理面试了许多候选人。然而,一名候选人被分配到 一名就

现在问题要求我找出函数依赖项和候选键

当我计算FD和候选密钥时,我有点困惑。根据我的理解,如果“给定X的一个值,我知道Y的一个值吗?”,你可以找到FDs?例如,如果给我一个studentID,我会知道studentName吗?对这很简单

对于候选密钥,我认为它们可能是主键,但必须用作主键

现在我有一个场景:

一家职业介绍所正在创建一个数据库来记录 面试预约详情。该机构雇用“安置经理” (PLM)帮助“候选人”(CND)找到工作的人。每个位置 经理面试了许多候选人。然而,一名候选人被分配到 一名就业经理。这意味着,对于每个约会 候选人有,它将始终与同一个职位经理。任何 指定的任命是在一名候选人和其指定人员之间进行的 就业经理

该机构的初始模式为: 任命(Appt、PLM、PLMname、CND、CNDname、CNDaddress、Job)

Appt是约会的日期和时间。PLM#&PLMname是的ID和名称 职位经理CND是候选人的ID。CNDname是 候选人姓名。CNDADRESS是候选人的联系地址。 工作是面试中讨论的工作

因此,对于上述场景,候选密钥可能是:

{PLM# Appt} and {CND#, Appt}
我这里的问题是,我不确定是按照上面的方式写出来,还是只有一个候选密钥

{PLM#,CND#,Appt}

FDs:

假设 任命期间讨论了1项工作 候选人每天只能有一次约会


只是想在我恢复正常之前检查一下我的FD。

FD
CND⟶ 作业
可疑,尤其是考虑到
CND,Appt⟶ 工作
;这意味着CND只能申请或讨论一份工作

FD
CND⟶ Appt
可疑;这意味着即使有50个PLM,也没有两个可以同时预约

关于键的问题:两个列键中的每一个都是候选键并且是不可约的。建议的三列键不是不可约键(因为它可以减少为两列候选键中的任何一个)。因此,三列键是(严格的)超级键,而不是候选键

PLM# -> PLMName
CND# -> CNDName
CND# -> CNDAddress
CND#, PLM# -> Appt
CND#, Appt -> Job
CND# -> Appt
CND# -> Job
CND# -> PLM#