首先,請參閱核心數據文檔on relationships。使用你的榜樣,考慮是這樣的:
- 一個CarAttributeType實體,一個名稱,如「重磅」
與爲2765.
- 這樣的價值汽車實體
- 一個CarAttribute實體,與你提到所需的值(例如,「顏色」,「製造」,等)
然後,具有CarAttribute和CarAttributeType(許多CarAttributes可以具有相同類型),一個一個之間的多對一的關係Car和CarAttribute之間的一對多關係(每輛車可以有很多屬性)。這個解決方案比硬編碼的NULL字段要複雜一些。但是,它避免了repeating groups並希望更易於維護。
編輯:是的,我錯過了。我想你會想要一個StringCarAttribute,StringCarAttributeType,FloatCarAttribute,FloatCarAttributeType等等。然後,在StringCarAttribute和StringCarAttributeType之間有一個多對一的關係,等等。汽車將具有一個具有StringCarAttribute和FloatCarAttribute的manys。多類型實體的原因是您沒有StringCarAttribute和FloatCarAttribute,都聲明自己使用單個權重屬性類型。
擁有一個所有類型的CarAttribute都違背了1NF#4。
你可以嘗試解釋你如何設想在實踐中使用這些虛擬的屬性? – 2010-03-16 03:40:03
當然,假設你的模型中有一個汽車實體,並且你可能有一些屬性,如顏色,製造商,型號,年份。但是,你可能會創建一些虛擬的特徵,使用戶可以重命名用於重你的「自定義整個1號」屬性,因爲使用的應用程序,特別是經銷商可能需要跟蹤重量計算運費什麼的,我無法預料。軟件的另一個用戶可以使用「自定義整數1」作爲他們的庫存控制編號或其他類似的東西。 – Gouldsc 2010-03-16 03:50:03