Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-多重继承_Sql_Database_Inheritance_Modeling - Fatal编程技术网

SQL-多重继承

SQL-多重继承,sql,database,inheritance,modeling,Sql,Database,Inheritance,Modeling,我有一个“子表”(C)和两个“超级表”(A、B): A(id主键) B(id主键) C(id1、id2、C_col) 要进行多重继承,我可以通过创建外键轻松地声明C.id1引用A.id,C.id2引用B.id。但是,由于我的模型(实际上因为A和B也是另一个超级表的继承),id1和id2在一次出现时总是具有相同的值。我的问题是,您认为除了“id1”和“id2”forein键之外,我还需要在C表中创建一个附加的“id”列作为主键吗?更简单的是,我可以任意选择id1或id2列并将其定义为主键吗 我

我有一个“子表”(C)和两个“超级表”(A、B):

  • A(id主键)
  • B(id主键)
  • C(id1、id2、C_col)
要进行多重继承,我可以通过创建外键轻松地声明C.id1引用A.id,C.id2引用B.id。但是,由于我的模型(实际上因为A和B也是另一个超级表的继承),id1和id2在一次出现时总是具有相同的值。我的问题是,您认为除了“id1”和“id2”forein键之外,我还需要在C表中创建一个附加的“id”列作为主键吗?更简单的是,我可以任意选择id1或id2列并将其定义为主键吗


我不知道我是否很清楚。如果没有,请告诉我您通常如何在SQL中建模多重继承。

您不应该任意选择id1或id2列并将其定义为主键。 最好在C表中使用不同的id作为主键。
如果不清楚,希望您清楚。请更新。

如果
id1==id2
您为什么一直需要表C?您的问题不清楚。“A和B也是其他超级表的继承”是什么意思?它们是否表示另一个类的重叠子类?你为什么不回答@Barmar的评论问题?你说“C中的主键是不同的id”是什么意思?如何强制C的行要求A和B中都有相应的行?@NicolasCanac本文可能会解释prashant答案背后的原因→