我制作了一个Photo
实体,它有一个Data
属性来存储图像数据。Photo
是Thumbnail
实体的父实体。我还在Photo
和Thumbnail
之间添加了一对一的关系,以便Photo
可以拥有Thumbnail
。
这似乎可以工作,但有点令人困惑。
你认为这是更好的设计,使另一个实体称为Image
具有图像数据属性,并使Photo
&Thumbnail
的子Image
?
你认为这样设计更好吗创建另一个名为Image的实体有图像数据属性和制作吗照片,图像的子缩略图?
你不应该把实体继承看作是做一个整洁的设计的手段,相反,它应该被用来使多个实体可以居住在相同的关系中。
假设你有一个Person
实体,它有图像数据,但是图像的大小或类型不同,但是你需要所有的图像实体处于相同的关系中。你可以这样设置:
Person{
images<-->>Image.person
}
Image{
person<<-->Person.images
}
GIF:Image{
//... GIF related attributes
}
JPG:Image{
//... JPG related attributes
}
因为GIF
和JPG
实体继承自Image
,所以可以将它们放在Person.images
关系中。
在您的例子中,除了与类类似之外,似乎没有什么特别的原因使Photo
和Thumbnail
继承自一个共同的超实体。
同样,如果使用SQLite存储,父实体的所有子实体最终都在同一个表中。对于非常大的数据集,这可能会产生性能问题。因此,这是不使用实体继承的另一个原因,只是为了整洁。