我想创建一个包含设备列表的数据库。所有的设备都有一些共同的属性(例如制造商,型号#,序列号等),然后还有其他属性是特定于某个设备的(即,一个调制解调器将有一个访问#,而太阳能电池板将具有输出容量)。我不知道如何用良好的数据库设计原则来表示这些不断变化的属性,我尝试过在网上搜索,但我并不完全知道要搜索什么。良好的数据库设计,可变数量的属性
我拿出他们以下可能的解决方案和我最初的想法:
与每一个可能的属性的一个大表,只是把空的地方是不适用的。显然这有一些缺陷。
为每种设备类型都有一个单独的表格。这似乎可能是一个噩梦使用,如果我想打印所有设备的列表,我怎么知道哪些表查找?
拥有一个表格,其中包含通用属性和其他用于存储额外属性的外键访问的每种设备类型的表格。我大概可以完成这项工作,但这会很麻烦,只是觉得不是一个很好的解决方案。
实体属性值类型模型。只是看起来不适合我想要做的事情。
我没有很多与数据库,所以我的学习经验,因为我去这里,关于这个问题的任何链接或“必读”数据库设计篇,将不胜感激。谢谢!
编辑: 首先,我发现我需要谷歌“继承映射”,这可能会帮助其他人有类似的问题。为了解决这个问题,我最终使用了#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