【发布时间】:2018-04-10 18:10:14
【问题描述】:
假设关系Appliance(model, year, price, manufacturer, color)
以{model, year} 为键并遵循 FD:
model -> manufacturer
model, year -> price
manufacturer -> color
找出 2NF 和 3NF。
我的解决方案是这样的:
由于model -> manufacturer由于部分依赖而违反了2NF,我将Appliance分解如下:
R1(model, manufacturer)
R2(model, year, price)
R3(manufacturer, color)
同样,model -> manufacturer 和 manufacturer -> color 因为传递依赖违反了 3NF,所以我将 Appliance 分解如下:
R1(model, manufacturer)
R2(model, year, price)
R3(model, color)
我的问题是我的标准化有什么问题?
【问题讨论】:
-
{model, year} 是一个 CK,所以它在功能上决定了每个属性。所以提到 {model, year} -> price 没有意义。问题 FD 也来自所有持有的非平凡 FD,但您只列出了 一些 持有的非平凡 FD。此外,不好的不是部分和传递的 FD,而是 某些 部分和传递的 FD 不好。根据特定定义,坏的只是坏的。所以引用你正在使用的定义。 PS 我们没有通过 2NF 得到最好的 3NF 设计。 (尽管有些教科书是这么说的。)
标签: database-normalization 3nf