【问题标题】:Is this table in 1NF or 2NF?这张表是 1NF 还是 2NF?
【发布时间】:2020-02-21 15:20:37
【问题描述】:

假设我有一个关系表:

FinalYearProject(主管、研究主题、咨询日、学生)

以及以下功能依赖:

    student -> researchTopic
    student, researchTopic -> supervisor
    researchTopic,supervisor -> consultationDay 

从那里我确定我的最小超级密钥是:student where

student -> researchTopic,supervisor, consultationDay

我说 存在部分依赖 对吗,因为 supervisor 不仅仅依赖于 student 基于功能依赖:

student, researchTopic -> supervisor

任何帮助将不胜感激。

【问题讨论】:

  • “我有这些 FD”是什么意思? “这些都是持有的FD”?--不可能。 “这些都是持有的不平凡的FD”?--不可能。 “这些是一些持有的FD”?--问题无法回答。找出什么是 cover 以及应用特定定义/规则/算法的确切条件。要确定 CK 和 NF,我们必须得到构成掩护的 FD。有时是最小/不可约覆盖。并且必须给出所有属性的集合。 See this answer.
  • “不完全依赖学生”不清楚,您的推理也没有使用它。如果 A 依赖于 X 的真子集,则 X -> A 是部分的。因此,如果主管在功能上依赖于 {student}、{researchTopic} 或 {} 中的任何一个,则 {student, researchTopic} -> supervisor 是部分的。此外,您在标题中提出一个问题,但在正文中提出另一个问题。此外,2NF 不仅基于部分 FD,还基于 CK 上非主属性的部分 FD。一个模式也可以有多个 CK。所以也许你可以看到,当你问“这对不对”时,你应该给出所有的步骤和理由。

标签: relational-database normalization database-normalization functional-dependencies


【解决方案1】:

由于student是候选key,所以supervisor依赖它。

事实上,考虑到给定student -> researchTopic,研究主题取决于学生:因此在依赖关系student, researchTopic -> supervisor 中,属性researchTopic 是多余的(依赖关系student -> supervisor 成立)。使用阿姆斯壮公理很容易证明这一点。

并且由于当非主属性在功能上依赖于候选键的适当子集时,关系不属于 2NF,因此在此示例中不存在这种情况,并且该关系属于 2NF。

【讨论】:

    猜你喜欢
    • 2013-05-11
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 2014-12-14
    • 2013-05-12
    相关资源
    最近更新 更多