我有一个名为Person的表:
person_id | first_name | middle_name |姓| group_id | property_id
(group_id将引用表GroupOfPerson的group_id列,
property_id将引用表Property的property_id列)
还有另一个称为GroupOfPerson的表:
group_id | group_name | property_id
(property_id将引用表Property的property_id列)
还有另一个表叫做Property:
property_id | property_name
在此,如果Person属于GroupOfPerson,则Person表中的property_id将被GroupOfPerson表中的property_id覆盖为相应的Person。在设计数据库架构时如何有效地做到这一点?提前致谢。
最佳答案
我认为您不能在表设计级别中定义它。
但是,您可以使用Person
表上的插入/更新触发器来强制执行此操作。如果property_id
表中的GroupOfPerson
值不为空,则触发器会将Person
的值从group_id
表复制到Person
表。
或者,您可以在查询级别执行此操作。每当从Person
表中选择数据时,都将其与GroupOfPerson
表联接,并根据property_id
列中的null / notnull值为group_id
列选择适当的源。