当我怀疑时,我正在研究EER模型。你能告诉我为什么我们有一个UNION类型来描述3个超类的联合。难道我们只有一个多继承模型吗?
或者两者之间还有其他一些区别吗?
Union of person,bank,company into owner relation Multiple inheritance of the same relations
答案 0 :(得分:6)
您提供的所有者示例经常在EER文献中用于解释联合(或类别)。我不觉得这个例子特别有启发性,因为它也很容易用继承来表达。
union和inheritance之间的区别在于,从父实体P继承的每个子实体C都从P继承了所有属性(属性,关系),而对于union没有这样的继承机制。联盟只包含其成员实体的一部分。
现在,所有者示例中的子实体都包含名称和地址,因此可以通过继承来表示。事实上,父母实体应该被称为人(自然或合法),这将明确每个人都有某些属性,也可以作为所有者。
更好的例子可能是档案。它可以包含很多不需要共同点的东西,除了像对象这样的琐事。所以你可能有实体Letter,Bill和ProductDescription,它们没有共同的属性,但都可以充当ArchiveContent。
因此建议如下:如果实体具有由公共属性表示的某种语义关系,请使用继承。如果它们只是为了特定目的而被抛在一起,请使用union。