0

在我目前正在做的问题中,给出了两个令人困惑的句子:

1. A property can be either be a house or an apartment. For a house it records ..bula bula
   For an apartment, it records .. bula bula

2. A property can be either for sale or rent, or for both. If a property is for sale, it 
   records .. bula bula. If the property is for rent, it records .. bula bula

这两个是同一个问题。我是否必须通过使用子类或如何来表示它?

非常感谢。

4

2 回答 2

2

是的,一个实体可以有多个子类和多个超类。教职员工和学生助理都可以是员工的子类,学生助理可以是员工和学生的子类。

您可以创建具有四个子类 House、Appartment、PropertyForRent 和 PropertyForSale 的 Property 实体。

一处房产不能既是房子又是公寓。因此,使用一个带有d的圆圈来表示它是不相交的。物业可能既可供出租又可供出售。使用带有o的圆圈表示它可能重叠。

EER图中的不相交关系

这在Advanced Data Modeling的第 443 页进行了描述,另一个示例可以在本演示文稿的第 30 页找到。

于 2012-11-13T16:02:41.430 回答
0

Sjoerd 的回答是正确的。

ER 建模告诉您如何绘制子类,但它没有告诉您如何实现它们。也不应该。

如果您对设计实现子类的 SQL 表感兴趣,请在 SO 中查找这些主题或它们的标签:

Single Table Inheritance
Class Table Inheritance
Shared Primary Key
于 2012-11-14T07:48:06.763 回答