[英] Composite Primary Keys : Good or Bad?
虽然可以使用复合主键,但在下面的例子中,这真的是一种糟糕的做法吗?关于Stackoveflow seems to go both ways on this issue的共识.
为什么?
我想把订单的付款存储在一个单独的表中.原因是,一个订单可以有许多项,这些项以多对多关系的形式在单独的表中处理.现在,如果我不为我的支付表使用复合主键,我将丢失唯一的PaymentID
:
[PaymentId] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[OrderId] INT NOT NULL PRIMARY KEY --Also a Foreign Key--
现在,如果我删除OrderId
的主键,我会失去一对一的关系,所以Many OrderIds can be associated to many PaymentIds
,我不想要这个.
这似乎就是为什么其他答案(大部分)认为复合键是个坏主意的原因.如果不好,那么最好的做法是什么?