Database design 可以将复合键设置为另一个表的主键吗?
可以将复合键设置为另一个表的主键吗 例如,我有以下表格:Database design 可以将复合键设置为另一个表的主键吗?,database-design,primary-key,composite-key,Database Design,Primary Key,Composite Key,可以将复合键设置为另一个表的主键吗 例如,我有以下表格: 书籍-主键:产品ID 客户端-主键:客户端ID Clients\u book-具有复合主键:Product\u Id和Client\u Id 我想将Clients_Books中的这个复合主键设置为另一个名为Order_Details表的主键。但我不想使用书籍、客户表中的产品ID和客户ID 这有意义吗?所有的意见都是受欢迎的。你正走在一条黑暗肮脏的道路上。不要这样做。坚持最佳实践-在表上使用一个简单的主键,如果需要,在其他表上使用外键。
-主键:书籍
产品ID
-主键:客户端
客户端ID
-具有复合主键:Clients\u book
和Product\u Id
Client\u Id
这有意义吗?所有的意见都是受欢迎的。你正走在一条黑暗肮脏的道路上。不要这样做。坚持最佳实践-在表上使用一个简单的主键,如果需要,在其他表上使用外键。简单的回答是,不-不能这样做。PK(或其他备用键)中的所有列必须出现在FK定义中。还要记住,一个表可以有多个键,称为候选键(有时是备用键)。主键只是设计/使用的“最佳”键(通常是最窄的一个-字节大小最小)。我们将这些其他唯一索引的名称前缀为“AK_{name}”-AK=备用键 我们在这种情况下所做的是两件事之一:
我还想请您评估订单细节是否真的是客户手册?通常,订单会导致客户拥有新书。我认为订单独立于库存-因此订单详细信息上的主键不应该是客户账簿上的主键,订单详细信息应该有自己的独立主键。请提供有关
订单详细信息
表的更多信息-为什么您认为需要复合主键?谢谢回复,我需要复合主键,因为Order\u Details表应该有“来自”Clients\u Books表的条目。示例:一个clients\u Books条目:Product\u ID:1 Clint\u ID:1可能是Order\u Details表的条目。虽然订单详细信息条目(如:订单ID:1、产品ID:1、客户ID:5)具有有效的产品ID和客户ID,但考虑到书籍,Clietns表可能不是客户书籍表的实际条目。希望它更清楚..+1说得好。可能是迄今为止我所看到的一个问题最完整的答案之一。