这个数据库规范化问题我做对了吗?
Have I done this database normalization question right?
我正在学习数据库规范化,有一个问题,但不知道我是否正确地完成了这件事。
这是我的解决方案:
据我所知,您的解决方案并不好
我的解决方案
干脆我把你的数据改成这样
现在我可以看到这个关系是第 0 范式
所以删除名称列并创建如下新关系
现在客户关系处于
- 第一范式因为没有多值
- 第二范式因为没有部分依赖
- 第三范式因为只包含符合以下条件的列
非传递性地依赖于主键
购物者关系是这样的,但它是第0范式
现在我从购物者关系中删除 purchased_item
列并创建新关系,如下所示
现在购买关系在
- 第一范式因为没有多值
- 第二范式因为没有部分依赖
- 第三范式因为只包含符合以下条件的列
非传递依赖
所以现在我更新购物者关系如下
ID
和Item_ID
都是主键(复合主键)
现在customer、purchased、shopper关系是第三范式,因为没有多值属性,都完全依赖主键,没有传递属性。
最终关系:
- 客户(ID,姓名)
- Purchased_items (Item_ID, Item_Name)
- 购物者 (Customer_ID, Item_ID)
糟糕,我忘了特别提到在规范化中我们不能添加新属性或删除属性。所以在这里我只是简单地将您的数据关系更改为更易于理解的关系。感谢@Mike Sherrill 'Cat Recall 指出这个问题。
我正在学习数据库规范化,有一个问题,但不知道我是否正确地完成了这件事。
这是我的解决方案:
据我所知,您的解决方案并不好
我的解决方案
干脆我把你的数据改成这样
现在我可以看到这个关系是第 0 范式
所以删除名称列并创建如下新关系
现在客户关系处于
- 第一范式因为没有多值
- 第二范式因为没有部分依赖
- 第三范式因为只包含符合以下条件的列 非传递性地依赖于主键
购物者关系是这样的,但它是第0范式
现在我从购物者关系中删除 purchased_item
列并创建新关系,如下所示
现在购买关系在
- 第一范式因为没有多值
- 第二范式因为没有部分依赖
- 第三范式因为只包含符合以下条件的列 非传递依赖
所以现在我更新购物者关系如下
ID
和Item_ID
都是主键(复合主键)
现在customer、purchased、shopper关系是第三范式,因为没有多值属性,都完全依赖主键,没有传递属性。
最终关系:
- 客户(ID,姓名)
- Purchased_items (Item_ID, Item_Name)
- 购物者 (Customer_ID, Item_ID)
糟糕,我忘了特别提到在规范化中我们不能添加新属性或删除属性。所以在这里我只是简单地将您的数据关系更改为更易于理解的关系。感谢@Mike Sherrill 'Cat Recall 指出这个问题。