相册的多个所有者 - 架构问题

时间:2011-01-14 20:40:55

标签: database-design schema photos

我如何为属于用户,事件,群组,网络,网页的相册创建关系(我想支持x个可能的所有者)?如果可能的话,甚至可以支持多个所有者。

一种方法是在相册表中包含这些列,其中一列具有FK ID,其余为空。但问题是,当我添加更多所有者类型时,我必须不断更改表以添加更多列

另一种方法是为每个所有者类型分别设置照片表。

这些方法都不能很好地扩展。任何其他方法拥有不同所有者类型的相册来自一个可扩展的表(意味着连接较少并且易于查询作为读取性能是我的第一要求?

平台是MySQL / PHP。

2 个答案:

答案 0 :(得分:2)

创建一个包含三列的表格,相册FK,所有者FK和所有者类型,所有者类型为用户,偶数,组等的可枚举类型。

答案 1 :(得分:2)

在概念数据模型中考虑您的问题而不是纯粹的物理问题。如果你做OO工作,那也没关系。 CDM

半圆是一个继承运算符。所以Event,User,Network,Page都继承自Owner。

当您将其生成为物理模型时,您将使用这些设置。

alt text

通过这种方式,您可以获得一张可以拥有照片和所有常用属性的表格。然后,每个子表将从父级继承PI,并具有特定于它的属性。照片表的FK将转到所有者表。

许多所有者对照片的未来目标会从照片桌上的所有者ID作为FK更改为所有者和照片之间的多个:to:many映射表。如果你使用这些结构,真的很容易。