1

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

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

另一种方法是为每种所有者类型设置单独的照片表。

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

平台是 MySQL/PHP。

4

2 回答 2

2

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

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

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

替代文字

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

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

于 2011-01-14T22:53:39.263 回答
2

创建一个包含三列的表,专辑 FK、所有者 FK 和所有者类型,所有者类型是用户、偶数、组等的可枚举类型。

于 2011-01-14T20:44:31.657 回答