考虑下表:
主键是由PatID和PhysName组成的复合键。我的教授说这张桌子是第3种正常形式。我认为它甚至不是第二种正常形式,因为非键属性Name不依赖于整个主键。您只需查看PatID即可识别名称。它不依赖于PhysName。
答案 0 :(得分:4)
为了真正了解表是否在2NF中,您必须明确为您准备功能依赖。
从少量数据样本中推断FD是一项有风险的业务。样本越小,风险越大。
我们必须在这里看到一位患有两名医生的患者,看看名字是否相同。我希望它会,但这只是常识。
当你从课堂练习转向百万美元的项目时,你会发现常识是数据分析的不可靠替代品。
答案 1 :(得分:-1)
给定一个表值,我们可以看到它中包含哪些FD(功能依赖性),因此它的CK(候选键)是什么以及它满足哪些NF(正常形式)(直到BCNF) 。 (在不知道FD的情况下,我们无法知道CK和NF。)
FD(或任何约束)在变量中保存可能出现的每个值。然后它的CK和满意的NF基于那些FD。因此,对于变量,示例数据告诉我们某些FD 不持有,并且"平凡的" FD 必须保留,但对于其他FD,示例数据只是不会告诉我们它们是否成立。
由于表值没有{PatId,PhysName}作为CK,因此您的教师必须表示具有该值的某些变量具有该CK。 (当然,无论如何,你应该有变量值和变量。)为了考虑该变量具有该CK,他们必须决定:
你需要知道它的价值与变量之间的关系,在你同意谓词和BR(业务规则)之前,争论变量和约束(包括FD)毫无意义。 / p>
PS Re BRs,谓词&约束:
命题是关于某种情况的陈述:"名为' Scholl,F。'倾向于他们认为是99999的患者并且通过名字知道Gore,Z。'"。 谓词是一个语句模板,映射来自一行列名称&命题的值:"名为 PhysName 的医生倾向于他们识别为 PatId 的患者,并且通过名称知道 PatName " 。表变量保存在某种情况下形成真实命题的行。
BRs (业务规则)提供变量谓词并描述可能出现的情况。因此,可以产生哪些表变量值,因此FD持有什么,因此CK等等。