你會如何在db中建立這些關係?關於數據庫建模的問題
您有一個可包含PageElements的Page實體。
PageElement可以是例如文章或圖片。文章表格明顯具有除圖片之外的其他成員/列。一篇文章可能有ie。 「Title」,「Lead」,「Body」列都是nvarchar類型,而圖片可能有類似「AltText」,「Path」,「Width」,「Height」的內容。我喜歡這是可擴展的,誰知道在3個月內我可能需要什麼PageElements?所以我想我需要一個PageElementTypes表。
對於關係,那這樣的表:
網頁一個ID,和其他魔神。 (創建日期,可見,什麼不該)
Pages_PageElements用的PageId和PageElementId。
PageElements帶有Id和PageElementTypeId以及更多的mumbojumbo(SortOrder,Visibility等)。
PageElementTypes用一個ID和一個名稱(如「條」,「圖片」,「AddressBlock」)
現在,我應該建立在每一個第一個PageElementId列,圖片,AddressBlocks表完成東西了嗎?這是我有點卡住,這是一個簡單的1:1關係,所以這應該工作,但不知何故,我可能會錯過一些東西。
追問:
下面設有獨立的屬性會強迫我的所有屬性存儲爲同一類型,或不推薦的解決方案?如果一個PageElement的屬性是nvarchar(255),而其中一些屬於nvarchar(1000),那麼如果某些是整數?
如果我得到了EAV的方式,我將不得不創建大量的表來保存所有不同數據類型的屬性值。
This Works。這基本上是實體屬性值(EAV)。它有優點和缺點。 – BobbyShaftoe 2008-12-02 09:26:28
這不需要所有的參數都是相同的類型嗎? – kitsune 2008-12-02 09:36:13
有辦法。首先,如果你使用MSSQL,使用nvarchar(MAX),否則檢查你的DBVS。其次,對於int/datetime/decimal /等,在同一個表中創建幾個列。對於每個記錄,只填寫一個。 – 2008-12-02 10:16:30