我想知道是否應爲多對多關係創建多態連接表,還是應該創建多個連接表。確定多態連接表是否合適的最佳方法是什麼
對於像評論這樣的東西,我總是使用多態聯接表。對於用戶之間的關係,例如Twitter上的關注,我不使用多態聯接表。這只是出於習慣。
有沒有什麼好的經驗法則來決定?
我想知道是否應爲多對多關係創建多態連接表,還是應該創建多個連接表。確定多態連接表是否合適的最佳方法是什麼
對於像評論這樣的東西,我總是使用多態聯接表。對於用戶之間的關係,例如Twitter上的關注,我不使用多態聯接表。這只是出於習慣。
有沒有什麼好的經驗法則來決定?
傳統的數據庫設計教導說,許多關係應該下放到兩個1:與中間表之間的許多關係。
L:M = 1:M,M:1
通常情況下,除非數據的你正在處理量是巨大的,它可以是最好的標準化數據庫架構 - 它有助於防止更新異常,笛卡爾加入,以及數據庫設計師希望避免的所有令人討厭的東西。
也就是說,Kimball數據倉庫設計方法有時會應用星形或雪花模式,其中數據將被「剝落」成一種小型數據庫。這是數據庫架構師爲OLAP系統(業務分析)設計的類型。我知道幾乎所有我曾經使用的大型企業系統都運行在雪花或星型模式上。對於規模而言,我們正在談論1GB plus - 因此它不一定非常龐大,但超出了Microsoft Access的規模。
快速鏈接: 數據庫規範化:http://en.wikipedia.org/wiki/Database_normalization
數據庫標準化(About.com):http://databases.about.com/od/specificproducts/a/normalization.htm
金博爾集團的數據倉庫檔案:http://www.kimballgroup.com/html/articles.html
金博爾檔案有關於如何一些好的導遊以及何時創建倉庫。
編輯:爲了確定何時需要使用表來連接數據庫上的兩個表,可以開發數據庫模式。在開始編碼之前,這是您設計佈局的典型方式。開發數據庫模式可能需要很多工作 - 在我的程序中,它是作爲數據庫設計課程的一部分教授的。我添加了幾個鏈接供您查看,並且您可能希望在Stack Overflow中查找數據庫設計,以獲得更好的想法。特別值得注意的是微軟的教程,這很不錯。即使您不使用Microsoft SQL Server,本教程也會有所幫助。
數據庫模式:http://en.wikipedia.org/wiki/Database_schema
微軟數據庫架構教程:http://msdn.microsoft.com/en-gb/express/bb403186.aspx
超好用。您如何知道何時創建兩個不同的連接表以及何時重用相同的連接表。 – Cyrus 2012-02-27 22:25:49
「規範化你的關係 - 它有助於防止數據鎖定」 - 我想你可能誤解了規範化的過程。提示:它適用於relvars(而不是'關係')以避免某些更新異常(「有助於防止數據鎖定」聽起來更像植入考慮)。 – onedaywhen 2012-02-28 12:56:31
我添加了一些關於數據庫模式設計的知識,它解釋瞭如何/爲什麼/何時製作不同的連接表的基本原因。此外,爲了響應onedaywhen的評論,更改了文本。通常,設計越簡單越好 - 所以如果您真的可以重新使用不同的連接表,則它應該是有效的。也就是說,我從來沒有真正有過這樣的幸運。 – 2012-02-29 13:39:48
我用Google搜索「多態連接表」,並得到了很多對軌引用,但你已經標記這是「SQL」。你能否定義SQL意義上的「多態連接表」的含義?謝謝。 – onedaywhen 2012-02-28 12:50:55