2009-10-18 33 views
2

2部分的問題:數據庫關係,很多表和代表性

什麼是設置的最佳方式表/關係結構給出的以下情形:我有一個存儲不同類型的多個表的數據(即:書籍,電影,雜誌 - 每個都是不同的表格),然後是一張存儲可鏈接到任何表格類型的評論的表格。因此評論表中的一行可以鏈接到書籍或雜誌表格。

我現在怎麼也得是有一個第三表,定義可用的表,並給他們一個ID號。最終沒有存儲從評論到書籍的真實關係。這是做這件事的最好方法嗎?

2nd 如何表示實體框架中的假關係?我可以做一個查詢來加入這3個表,但有沒有一種方法可以在表映射中對它進行建模?

回答

2

的另一種方式去思考的是要考慮書籍,電影,雜誌的子類型REVIEWABLE_ITEMS的。他們可能有一些共同的特點 - 不知道更多關於你的問題領域,這將是很難確定的。這種方法的優點是,您可以將REVIEWS建模爲REVIEWABLE_ITEMS的依賴關係,爲您提供單個表,用於評論之間的強制關係。

編輯

是的,這就像在OO模式擴展類型。你沒有說你打算使用哪種數據庫,但是this article by Joe Celko顯示瞭如何在SQL Server中使用它。完全相同的實現在Oracle中有效,我預計它也可以在其他大多數RDBMS產品中使用。

+0

因此,這將類似於創建reviewable_items一個基類,擴展它的書和電影? – 2009-10-18 20:41:31

1

這真的取決於你想如何訪問/查看評論。

我會爲每一種迴應實施一張表:一種用於書籍,一種用於電影等,每種都有一對多的關係(在書籍和書評,電影和電影評論等之間) )。如果您需要在一個表格中查看所有評論,請創建一個視圖,使用UNION ALL選擇所有評論。

0

要麼你有一個概念「應審查」,它可以是一本書或一本雜誌...其中,到「評論」可以指,要不然你可以有一個概念,「審查」,這既可以成爲可以參考書籍的「書評」,或者可以參考雜誌的「雜誌評論」,或者可以參考報紙的「報紙評論」,...

因爲真正的關係系統不存在如果沒有在數據庫設計中明確說明這兩種抽象中的一種,就無法做到這一點。 (除非也許,如果你願意實施了大量的觸發代碼。)