核心数据:我可以向父实体添加关系吗?



我制作了一个Photo实体,它有一个Data属性来存储图像数据。PhotoThumbnail实体的父实体。我还在PhotoThumbnail之间添加了一对一的关系,以便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
}

因为GIFJPG实体继承自Image,所以可以将它们放在Person.images关系中。

在您的例子中,除了与类类似之外,似乎没有什么特别的原因使PhotoThumbnail继承自一个共同的超实体。

同样,如果使用SQLite存储,父实体的所有子实体最终都在同一个表中。对于非常大的数据集,这可能会产生性能问题。因此,这是不使用实体继承的另一个原因,只是为了整洁。

最新更新