数据库规范化 2NF 和 3NF

Database normalization 2NF and 3NF

假设关系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 -> manufacturermanufacturer -> color因为传递依赖违反了3NF所以,我分解Appliance如下:

R1(model, manufacturer)
R2(model, year, price)
R3(model, color)

我的问题是我的标准化有什么问题?

您对 2NF 的归一化是正确的。您可能需要更深入地思考 关系 是否违反 2NF 或 3NF,或者 功能依赖性 是否违反 2NF 或 3NF。你说两个。

在您的 2NF 分解中,R1、R2 和 R3 在 5NF 中。 (因此,根据定义,它们也在 3NF 和 2NF 中。)

对于 3NF,您丢失了 FD manufacturer -> color。所以这是错误的。

在现实世界中,对 "Appliance" 这样的关系进行归一化可能 会导致不止一个 5NF 分解。