我是否已完成此数据库规范化问题?

时间:2019-01-19 12:42:45

标签: database data-science data-analysis database-normalization

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

enter image description here

这是我的解决方案: enter image description here

1 个答案:

答案 0 :(得分:0)

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

我的解决方案

我只是这样更改您的数据

enter image description here

现在我可以看到这种关系处于0范式

因此删除名称列并创建如下所示的新关系

enter image description here

现在有客户关系了

  • 第一个范式,因为没有多值
  • 第二范式,因为没有部分依赖
  • 第三范式,因为仅包含以下列 非传递性地依赖于主键

购物者关系是这样的,但是它仍然是第0范式 enter image description here

现在,我从购物者关系中删除Purchased_item列,并如下创建新关系 enter image description here

现在已购买的关系位于

  • 第一个范式,因为没有多值
  • 第二范式,因为没有部分依赖
  • 第三范式,因为仅包含以下列 非传递性依赖

所以现在我更新购物者关系如下 enter image description here

ID和Item_ID均为主键(复合主键)

现在,客户关系,购买关系和购物者关系处于第三范式,因为没有多值属性,所有属性都完全依赖主键,没有传递属性。

最终关系:

  • 客户( ID ,姓名)
  • 已购买的商品( Item_ID ,Item_Name)
  • 购物者( Customer_ID,Item_ID

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