我有一个表格,其中包含两种类型的数据,无论是公司还是员工。
通过“C”或“E”识别数据&一个存储它的主键的列。
那么如何根据所包含的数据提供外键呢?动态维护参照完整性。
id | referenceid | documenttype
-------------------------------
1 | 12 | E
2 | 7 | C
现在,带有id 1的行应该引用带有pk 12&的Employee表。 id为2的行应该使用pk 7引用Company表。
否则我必须为两者制作两个不同的表。 还有其他方法可以实现它。
答案 0 :(得分:2)
如果你真的想这样做,你可以有两个可为空的列,一个用于CompanyId,另一个用于EmployeeId,用作外键。
但我希望您尝试检查数据库架构设计。
答案 1 :(得分:1)
规范化表格会更好 - 为公司和员工创建单独的表格。标准化后,您也可以获得更好的性能。由于公司和员工是独立的实体,最好不要重叠它们。
答案 2 :(得分:1)
就个人而言,我会选择两种不同的表格。
但是,如果您确实仍想将其存储在一个表中,那么维持参照完整性的一种方法是通过触发器。
就个人而言,我宁愿避免这样的逻辑,因为众所周知,触发器很难调试。