我制作了Photo
实体,该实体具有Data
属性来存储图像数据。 Photo
是Thumbnail
实体的父级。我还在Photo
和Thumbnail
之间添加了一对一关系,以便Photo
可以拥有Thumbnail
。
这似乎有效,但有点令人困惑。
你认为设计另一个名为Image
的实体具有图像数据属性并制作Photo
& Thumbnail
的{{1}}个孩子?
答案 0 :(得分:1)
你认为这是更好的设计吗? 制作另一个名为Image的实体 具有图像数据属性和make 照片& 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存储,则父实体的所有子实体最终都在同一个表中。对于非常大的数据集,这可能会产生性能问题。所以,这是另一个不使用实体继承只是为了整洁的原因。