我正在尝试创建一个包含设备列表的数据库。所有的设备都会有某些共同的属性(例如制造商、型号#、序列号等),然后还有特定于某个设备的其他属性(即调制解调器将具有访问权限#,而太阳能电池板将具有输出能力)。我不确定如何用良好的数据库设计原则来表示这些不断变化的属性,我尝试过在网上搜索,但我不完全确定要搜索什么。
我提出了以下可能的解决方案以及我对它们的初步想法:
拥有一个包含所有可能属性的大表,并将 null 放在不适用的地方。显然,这有一些缺陷。
每种设备类型都有一个单独的表格。这似乎使用起来可能是一场噩梦,如果我想打印所有设备的列表,我怎么知道要查找哪些表?
有一个包含公共属性的表,以及使用外键访问的每种设备类型的其他表,以存储额外的属性。我可能可以完成这项工作,但这会很麻烦,而且感觉不是一个很好的解决方案。
实体-属性-值类型模型。只是看起来不太适合我想做的事情。
我在数据库方面没有很多经验,所以我在这里边学习边学习,任何与此问题相关的链接或关于数据库设计的“必读”文章将不胜感激。谢谢!
编辑:首先,我发现我需要谷歌“继承映射”,这可能会帮助其他有类似问题的人。为了解决这个问题,我最终使用了#2 和#3 的混合体。它实际上非常简单,运行良好,并且解决了添加额外设备类型的问题,而没有 EAV 的复杂性。感谢所有的意见和建议!