5

在此处输入图像描述

被告知将其放入 UNF/1NF/2NF/3NF,这是正确的吗?

将上述数据显示为 UNF(非标准化数据)中的关系。

客户(客户 ID、名字、姓氏、地址、城市、电话、州、邮政编码、数量、产品编号、描述、单价、总计、小计、运费、税率、日期、订单号))

将数据显示为 1NF 中的关系。(指出任何键。)

客户(客户 ID、名字、姓氏、地址、城市、州、电话、州、邮政编码) 产品(产品编号、数量、描述、单价、总计、小计、运费、税率、客户 ID(FK)。)订单(订单号、日期、产品号(FK)。)

在 2NF 中将数据显示为关系。(指出任何键。)

客户(客户 ID、名字、姓氏、地址、城市、电话、州、邮政编码)产品(产品编号、数量、说明、单价、客户 ID(FK)、总计(FK)。)订单(订单号、日期、客户 ID(FK)、 ProductNo(FK).) Total(Total, subtotal, shipping, Tax Rates, ProductNo(FK),CustomerID(FK) )

在 3NF 中将数据显示为关系。(指出任何键。)

客户 (CustomerID, FirstName, LastName, Address, City, Phone, State, Postcode) 产品 (ProductNo, , Description, Unit Price. CustomerID(FK), Total(FK) ) 订单 (OrderNo, Date, CustomerID(FK).ProductNo (FK) ) Total(Total, subtotal, ProductNo(FK), CustomerID(FK) ) Shipping(Shipping, Tax Rates, Total(FK), OrderNo(FK) ) Qty( QtyID, Qty, ProductNo(FK), OrderNo( FK)。)

4

3 回答 3

4

对我来说它看起来不错,但是您缺少设计的一个关键部分。尽管您已经确定了外键,但您尚未在表上定义任何主键(使用您必须在每个表上计算出主键的外键 :))。

于 2013-03-18T12:29:23.293 回答
0

关于发票的一个有趣的事情......J Frompton 今天订购了一个耙子,但在未来的某个时间价格会发生变化。然而,这并没有改变 Frompton 今天支付的价格。

一旦发票完成,它们真的应该被移动到一个 1NF 的表中。

于 2013-03-18T13:29:28.913 回答
0

将上述数据显示为 UNF(非标准化数据)中的关系。

客户(客户 ID、名字、姓氏、地址、城市、电话、州、邮政编码、数量、产品编号、描述、单价、总计、小计、运费、税率、日期、订单号))

不,这是不对的。发票上似乎没有任何客户 ID 号。规范化不涉及引入新属性。作为非规范化的属性集合,将该列表标记为“客户”还为时过早。

将数据显示为 1NF 中的关系。(指出任何键。)

  • 客户(客户 ID、名字、姓氏、地址、城市、州、电话、州、邮政编码)
  • 产品(产品编号、数量、描述、单价、总计、小计、运费、税率、客户 ID(FK)。)
  • 订单(订单号、日期、产品号(FK)。)

删除客户 ID。(见上文。)我猜“Product”表的候选键之一是“ProductNo”。如果是这样,为什么该表包含“CustomerID”?

在 2NF 中将数据显示为关系。(指出任何键。)

  • Customer( CustomerID, FirstName, LastName, Address, City, Phone, State, Postcode)
  • Product ( ProductNo, Qty, Description, UnitPrice, CustomerID(FK), Total(FK).)
  • Order( OrderNo, Date, CustomerID(FK), ProductNo(FK).)
  • Total(Total, subtotal, shipping, Tax Rates, ProductNo(FK),CustomerID(FK) )

2NF has to do with removing partial key dependencies. What partial key dependency did you identify that justified creating the table "Total"? (Hint: there isn't any justification for that.) Do this thought experiment (or build it in SQL): If "Total" is the primary key for the table "Total", what will you do if two orders result in the same total?

我现在就停在那里,因为你真的走错了路。您需要从所有属性的列表开始,然后确定候选键和功能依赖项。如果不从那里开始,您不太可能找到 3NF。

于 2013-03-18T14:31:57.370 回答