我有一个名为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列选择适当的源。

09-16 04:12