Mysql 多个表之一的外键?

Mysql 多个表之一的外键?,mysql,database,postgresql,polymorphic-associations,Mysql,Database,Postgresql,Polymorphic Associations,设置外键约束的常用方法是选择外键将指向哪个表 我在一个表和一组表之间有一个多态关系 这意味着此表将与集合中的其中一个表建立关系 例如 在上面的示例中,如果person_type是“submissions”,那么person_id应该是submissions.id的外键,产品也是如此 所以我想知道,是否有可能在许多表中的一个表上有一个外键,或者在分配一个表时,您是否必须专门设置它指向哪个表 这个问题适用于MySQL和PostgreSQL 感谢根据定义,外键必须指向一个表上的主键或候选键,并且在典型

设置外键约束的常用方法是选择外键将指向哪个表

我在一个表和一组表之间有一个多态关系

这意味着此表将与集合中的其中一个表建立关系

例如

在上面的示例中,如果person_type是“submissions”,那么person_id应该是submissions.id的外键,产品也是如此

所以我想知道,是否有可能在许多表中的一个表上有一个外键,或者在分配一个表时,您是否必须专门设置它指向哪个表

这个问题适用于MySQL和PostgreSQL


感谢

根据定义,外键必须指向一个表上的主键或候选键,并且在典型的DBMS中只有一个表-primary-only可用。最好使用单个“person”表,并使用与此相关的表,例如经理信息。

否,外键约束始终只引用一个父表

这个问题经常出现。以下是我过去对此的一些回答:


有关多态关联的更多信息,请参阅我的演示文稿或我的书。

列只是值的占位符。外键约束意味着存储在该列中的数据只能是与约束中定义的表的列相匹配的值。每个表都有外键约束


没有什么可以阻止您在列上定义多个外键约束。但这意味着唯一允许存储的值将是所有其他与外部相关的表中已经存在的值。IE:表_1有值1和2,表_2有值2和3-表_3有定义到表_3的
col
列上的表1和2的外键关系。。。我可以插入到
表3.col
中的唯一有效值是2,因为它在两个表中(假设
col
不可为空)

外键只能指向一个表

在我看来,您真正想做的是在persons表中创建一个父id。下属将有一个家长id指向他们的经理。如果一个下属需要有多个经理,则可以创建一个单独的联接表,其中包含两列,每列包含一个人员id—一个是下属,另一个是经理之一


如果您想限制谁可以被分配到parentid字段,可以通过检查约束来完成。

MySQL有但没有强制执行检查约束。您描述的仍然是一个外键关系,只是到同一个表-这通常意味着需要递归/分层查询,而MySQL没有(PostgreSQL 8.x)。这不是我想要做的,我不太清楚我的意思。看看我更新过的表格和专栏,你就会明白我在寻找什么。虽然我讨厌这种类型的答案,但我肯定会觉得“你想要的是错误的”。我认为@Bill Karwin的想法是正确的。按用户id和标签搜索:
user:20860[多态关联]
images: person_id, person_type
subordinates: id, col1, col2...col9
products: id, colA, colB...colZ