最佳答案
虽然可以使用复合主键,但对于下面的情况,这真的是一个坏的做法吗?关于 Stackovflow 在这个问题上似乎是双向的的一致意见。
为什么?
我想在一个单独的表中存储订单的付款。其原因是,订单可以包含许多项,这些项以多对多关系的形式在单独的表中处理。现在,如果我不为我的支付表使用复合主键,我将失去我唯一的 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
,我不想这样。
这似乎就是为什么关于 SO 的其他答案(大多数情况下)得出结论,复合键是一个坏主意。如果是坏的,那么什么是最好的练习呢?