0

我有一个查询,我已经搜索了一段时间,但无法充分回答。

我正在为我的 SQL 类将记录插入到我的 2008 SQL Server 中,并且我必须将数据规范化为第三种形式。我相信我这样做是正确的,给我的例子是将记录分成它们自己的原子行(在其他要求中)。这产生了具有相同 OrderID(这是我的主键)的几行,并将订单的各个部分拆分为所述行。

例子:

OrderID ItemNumber Price  QTY
101     1          $1.00  5
101     2          $9.00  4
101     3          $5.00  3

但是,如何插入这些行,而我的 PK (OrderID) 重复了这么多次?我已经尝试过一次,它拒绝除第一个不重复的实例之外的每个 INSERT INTO(给我一个 PK 约束错误)。如果这是一个愚蠢的问题,我深表歉意,但我正在努力理解。我上面发布的小例子正是我的导师想要的。

4

1 回答 1

0

因此,您可能在课堂上学过,也可能没有学过,主键的约束之一是它必须是唯一的。

从更合乎逻辑的角度来看,主键本质上应该定义每行对业务用户表示的内容。在这种情况下,每一行代表一个项目,而不是一个订单。每个项目由订单号和该订单的项目号定义。

您的主键应该是 OrderID 和 ItemNumber 的组合。

于 2013-03-04T17:41:22.710 回答