【问题标题】:Have I done this database normalization question right?我是否已经完成了这个数据库规范化问题?
【发布时间】:2019-01-19 12:42:45
【问题描述】:

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

这是我的解决方案:

【问题讨论】:

  • 规范化不会引入新属性。您介绍了“客户名字”、“客户姓氏”、“客户 ID”、“项目 ID”。
  • 显示你工作的所有步骤,参考和遵循你的教科书,直到卡住,然后问一个具体的问题。现在你只是要求我们重写一本教科书。当我们可以检查步骤时,不要指望我们重做你的作业。请参阅How to Ask 并点击谷歌搜索“stackexchange 作业”。 PS“使用以下 FD”信息不足。你的意思是那些FD形成了一个掩护。 PS 对文本使用文本,而不是图像/链接,包括表格和 ERD。

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


【解决方案1】:

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

我的解决方案

我只是像这样更改你的数据

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

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

现在客户关系在

  • 第一范式,因为没有多值
  • 第二范式,因为没有部分依赖
  • 第三种范式,因为只包含 非传递依赖于主键

Shopper 关系是这样的,但它还处于第 0 范式

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

现在购买关系在

  • 第一范式,因为没有多值
  • 第二范式,因为没有部分依赖
  • 第三种范式,因为只包含 非传递依赖

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

IDItem_ID 都是主键(复合主键)

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

最终关系:

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

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

【讨论】:

  • 规范化不会引入新属性。
  • @MikeSherrill'CatRecall' 感谢您在我的解决方案中指出这个问题
  • 对文本使用文本,而不是图像/链接,包括表格和 ERD。
猜你喜欢
  • 2012-01-25
  • 2018-07-08
  • 2012-06-02
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 1970-01-01
相关资源
最近更新 更多