使用单个ID列引用多个表

时间:2012-03-17 21:48:36

标签: php mysql database-design

在MySQL中,拥有如下所示的表结构是不好的......

Table stuffA
ID

Table stuffB
ID

Table superStuff
ID
type
stuffID

...在哪里取决于superStuff(type)的值,superStuff(stuffID)可以引用stuffA(ID)或stuffB(ID)?

先谢谢你的帮助

2 个答案:

答案 0 :(得分:3)

我认为你的意思相反:

Table stuffA
ID
superStuffID

Table stuffB
ID
superStuffID

Table superStuff
ID

此外,您不需要type属性,因为当您查询一个表或另一个表时它是隐式的。

注意:我假设您在表格中还有其他字段,并且您已经将它们省略,以便做出最小的示例。如果不是这种情况,那么你可能不需要在那里进行层次分析。

answer可能有助于理解这一点。

答案 1 :(得分:2)

如果站在Superstuff上你想知道谁是该行的父亲,你的解决方案是正确的。

可能是一个选项,但不符合您的解决方案中的建议。

考虑:

id是整个数据库中指示的唯一Superstuff,在表stuffB和stuffA上,ID是Superstuff的ID。在stuffB和stuffA上的ID是Superstuff的外键。

Table Superstuff
ID

Table stuffA
ID (exist on superStuff)

Table stuffB
ID (exist on superStuff)