2011-01-14 51 views
1

我将如何去为属于用户,事件,组,网络,页面(我想支持x个可能的所有者)的相册创建关系?如果可能的话,甚至可以支持多个业主。相册的多个所有者 - 架构问题

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

另一种方法是为这些所有者类型中的每个拥有单独的照片表。

这些方法都不能很好地扩展。任何其他方法,以自己从一个表所有者不同类型的将规模(意思相册有较少的连接和易于查询的读取性能是我的#1的要求?

平台是MySQL的/ PHP。

回答

2

想象您在概念数据模型中的问题,而不是纯粹的物理问题。如果你做OO工作,那也可以。 CDM

半圆是一个继承操作符。所以事件,用户,网络,页面都从所有者继承。

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

alt text

这样你得到的一切的一个表,它可以自己的照片,所有的公共属性。然后,每个子表将从父项继承PI,并具有特定于其的属性。照片表的FK将转到所有者表。

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

2

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

+0

这就是“所有者FK”的问题 - FK在哪里?用户表,事件表,页表等?据我所知,我们只能在一张桌子上拼到一个柱子,或者我们可以从一个柱子拼到多个桌子? – Cory 2011-01-14 20:47:19

+0

这是每桌一个FK。代码将根据应该设置的类型来确定。 – JOTN 2011-01-14 20:56:35