外键可以引用具有复合(即两列组合)键的表吗?

时间:2014-01-01 04:56:03

标签: php mysql sql mysqli

**Table 1**
BOOK(bookID,bookEdition,bookName)

其中(bookID,bookEdition)的组合用作键

**Table2**
SHELF(id,shelfCode,book)

现在我希望table2中的列“book”引用Table1中的复合键(bookID,bookEdition)。

任何人都可以请指导我这样做的正确方法。或者如果我的方法不对,请纠正我

或者我们不能向具有复合键的表添加外键约束?

1 个答案:

答案 0 :(得分:2)

如果你有一个复合主键(由多个列组成),所有外键必须使用PK的所有列来引用该表。因此,外键约束只能添加引用整个键,而不是键的一部分。

您可以将bookIDbookEdition同时添加到SHELF表格中(对我来说更合理的是bookIDbookEdition一起可以唯一地识别预订)或为Book创建一个单独的主表(使用键bookID)并在所有其他表中引用该表。

相关问题