建模以下类型关系的最佳方法是什么?
假设我有代表两种类型实体的表:company
和person
. 我有一个customer
带有entity_id
字段的表,它应该引用 acompany
或 a person
。
如果我只是将 acompany_id
或 a存储person_id
在其中,entity_id
那么我将不知道在哪个表中查找实体。我想到的第一个解决方案是有一个entity_type
字段,customer
其中将值“company”或“person”告诉我我的外键entity_id
指的是哪个表。我不确定这是否是最好的方法。
这似乎应该是数据库设计中相当普遍的问题,所以我希望有一种我可以采用的设计模式。
我在更广泛的意义上在标题中使用了多态这个词,所以我不是指继承。在我的示例中,公司不是人(反之亦然),但它们仍然可以互换。我在 Stack Exchange 网站上发现的其他问题假设继承也是一项要求,所以我不确定是否有合适的副本。