0

我有一个可能是愚蠢的问题,但它就在这里。

我有一个 ORDER_T 表、一个 CUSTOMER_T 表和一个 ORDERLINE_T 表。

我还有一组需要标准化的数据。这个“坏数据”中的每条记录最多有 3 个项目存储在名为 Item1、Item2 和 Item3 的属性中。我认为我通过获取每个项目,将其分开并让它构成它自己的记录来正确地对其进行规范化是很好的。例如

ORDER_T

OrderID ItemID ItemDescription CustomerID
1        1001   Apple             100
1        1002   Grape             100
1        1003   Pear              100

OrderIDPKCustomerIDFK。当我试图插入我的数据库时,我意识到它通过 PK 抱怨了多个重复记录。呃——有道理。现在我的问题是:

我相信我错了,但是在每个 OrderID 由多个项目组成的情况下,规范化数据(到第三种形式)的正确方法是什么?是否具有诸如 Item1、Item2、Item3 等“坏形式”的属性,它不能像那样可扩展和静态设置?我是不是想太多了,应该简单地不管它吗?

我只是相信我需要一些方向,我会很好的。

4

1 回答 1

1

你需要下一张桌子:

所有独特的客户

customers:
CustomerId (PK)
Name

所有独特的物品

Items:
ItemId (PK)
ItemName

所有独特的订单:

Orders:
OrderId (PK)
CustomerID (FK)
OrderDate

然后你需要多对多关系表:

OrderItems:
OrderId (FK)
ItemId (FK)
count
primary key (OrderId, ItemId)

然后您将能够插入订单(可以为空),然后通过 OrderItems 表从该订单中添加/删除项目

于 2013-11-12T02:44:30.270 回答