【问题标题】:Database Normalisation based on functional dependency基于函数依赖的数据库规范化
【发布时间】:2020-05-04 18:43:56
【问题描述】:

这种关系在 1NF、2NF、3NF 和 BCNF 中的分解是什么

关系 - 转机(目的地、出发地、航空公司、登机口、姓名、联系人、接机)

函数依赖 -

目的地、出发地、航空公司→登机口

登机口→航空公司

联系人→姓名

姓名、出发→登机口、接机

登机口,出发→目的地

我尝试使用闭包找到候选键,发现它是 (contact,departs)

然后根据那个候选键,我尝试将其分解为后续的范式。

2NF - 没有部分依赖

R1(联系人、姓名)

R4(姓名、出发、登机口、接机、航空公司)

R5(登机口、出发地、目的地)

3NF- 无传递依赖 & BCNF

R1(联系人、姓名)

R2(姓名、出发、登机口、接机)

R3(登机口,航空公司)

R4(登机口、出发地、目的地)

这是对的还是这里有问题?因为我对 2NF 的分解并没有真正描述第一个 FD。

【问题讨论】:

  • 现在您只是要求我们用定制的教程重写您的教科书并完成您的(家庭)作业,而您没有表现出任何研究或其他努力。请参阅How to Ask,点击谷歌搜索“stackexchange 作业”和投票箭头鼠标悬停文本。按照教科书的理由展示您的工作步骤,并在您遇到问题的第一个地方提出 1 个经过研究的特定非重复问题。
  • 您的“我有这些 FD”没有意义。 “这些都是持有的FD”?--不可能。 “这些都是持有的不平凡的FD”?--不可能。 “这些是一些持有的FD”?--问题无法回答。找出什么是cover以及应用特定定义/规则/算法的确切条件。要确定 CK 和 NF,我们必须得到构成掩护的 FD。有时是最小/不可约覆盖。并且必须给出所有属性的集合。 See this answer.
  • @philipxy 该帖子已被编辑。你能看看吗?
  • Re“这是对的”:根据您的参考/教科书显示您的工作步骤,并说明理由 - 并非所有术语/符号都是标准的,我们不确切知道您使用什么算法/方法正在关注,我们想检查你的工作,但不重做,当算法允许时,我们需要你的选择,否则我们无法告诉你哪里对错,我们不想重写你的教科书。 PS 此外,所有步骤都将重复。 PS“描绘(一个FD)”不清楚。使用足够多的单词、句子和对部分示例的引用来清楚完整地表达你的意思。
  • 你还没有对我所有的cmets采取行动。最根本的是,您没有说过那些 FD 构成封面,也没有参考教科书、定义或算法。你没有给出并证明每一步。那么答案应该是什么?--“您只是要求我们用定制的教程重写您的教科书”。等等 PS请阅读编辑帮助,在行尾放2个空格作为换行符。

标签: sql database database-normalization functional-dependencies database-management


【解决方案1】:

假设依赖关系是一个覆盖,在你的分解中依赖关系:

airline departs destination → gate

不保留。所有分解的关系都在 3NF 中并保留数据和依赖关系的分解是:

R1 (airline departs destination gate)
R2 (contact name)
R3 (departs gate name pickup)
R4 (contact departs)

请注意,由于依赖gate → airlinegate 不是超级键),R1 在 3NF 中但不在 BCNF 中。此外请注意,众所周知,在某些情况下,BCNF 中的分解不会保留依赖关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-08
    • 2015-06-28
    • 2012-03-08
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2013-07-31
    相关资源
    最近更新 更多