这个数据库规范化问题我做对了吗?

Have I done this database normalization question right?

我正在学习数据库规范化,有一个问题,但不知道我是否正确地完成了这件事。

这是我的解决方案:

据我所知,您的解决方案并不好

我的解决方案

干脆我把你的数据改成这样

现在我可以看到这个关系是第 0 范式

所以删除名称列并创建如下新关系

现在客户关系处于

  • 第一范式因为没有多值
  • 第二范式因为没有部分依赖
  • 第三范式因为只包含符合以下条件的列 非传递性地依赖于主键

购物者关系是这样的,但它是第0范式

现在我从购物者关系中删除 purchased_item 列并创建新关系,如下所示

现在购买关系在

  • 第一范式因为没有多值
  • 第二范式因为没有部分依赖
  • 第三范式因为只包含符合以下条件的列 非传递依赖

所以现在我更新购物者关系如下

IDItem_ID都是主键(复合主键)

现在customer、purchased、shopper关系是第三范式,因为没有多值属性,都完全依赖主键,没有传递属性。

最终关系:

  • 客户(ID,姓名)
  • Purchased_items (Item_ID, Item_Name)
  • 购物者 (Customer_ID, Item_ID)

糟糕,我忘了特别提到在规范化中我们不能添加新属性或删除属性。所以在这里我只是简单地将您的数据关系更改为更易于理解的关系。感谢@Mike Sherrill 'Cat Recall 指出这个问题。