我想創建一個包含設備列表的數據庫。所有的設備都有一些共同的屬性(例如製造商,型號#,序列號等),然後還有其他屬性是特定於某個設備的(即,一個調制解調器將有一個訪問#,而太陽能電池板將具有輸出容量)。我不知道如何用良好的數據庫設計原則來表示這些不斷變化的屬性,我嘗試過在網上搜索,但我並不完全知道要搜索什麼。良好的數據庫設計,可變數量的屬性
我拿出他們以下可能的解決方案和我最初的想法:
與每一個可能的屬性的一個大表,只是把空的地方是不適用的。顯然這有一些缺陷。
爲每種設備類型都有一個單獨的表格。這似乎可能是一個噩夢使用,如果我想打印所有設備的列表,我怎麼知道哪些表查找?
擁有一個表格,其中包含通用屬性和其他用於存儲額外屬性的外鍵訪問的每種設備類型的表格。我大概可以完成這項工作,但這會很麻煩,只是覺得不是一個很好的解決方案。
實體屬性值類型模型。只是看起來不適合我想要做的事情。
我沒有很多與數據庫,所以我的學習經驗,因爲我去這裏,關於這個問題的任何鏈接或「必讀」數據庫設計篇,將不勝感激。謝謝!
編輯: 首先,我發現我需要谷歌「繼承映射」,這可能會幫助其他人有類似的問題。爲了解決這個問題,我最終使用了#2和#3的混合。實際上它非常簡單,運行良好,並且解決了添加額外設備類型而沒有EAV複雜性的問題。感謝所有的意見和建議!
chek在下面的帖子中的答案:http://stackoverflow.com/questions/870808/entity-attribute-value-database-vs-strict-relational-model-ecommerce-question – 2012-07-21 04:11:21
這篇文章與一些其他文章相矛盾我閱讀說應該避免EAV,想到任何人? – neurotik 2012-07-21 04:37:24