2011-01-14 20 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