【发布时间】:2010-11-26 09:04:29
【问题描述】:
我有一个关于数据库的理论问题。为了更具体,我想出了一个例子。
假设我有一家产品商店。我有很多不同的产品。并非每种产品都具有相同的适用特性。例如,我可以以千兆字节为单位定义硬盘的大小,但不能在 CPU 上使用相同的属性,因为它不适用。我想要的是一个数据库,我可以在其中动态地向产品添加属性。我唯一能想到的就是:
一个带有 ID、名称和描述的产品表。
一个包含 ID、Product_ID、属性和值的属性表。
通过这种方式,我可能会得到一个巨大的、我认为效率不高的属性表。这一直困扰着我很长时间。有谁知道我的问题的更好解决方案?
【问题讨论】:
-
如果您完全不知道可能的属性集是什么样的,那么您的动态方案确实有效。这是有问题的,因为您需要保持可能的属性一致(因此您最终不会为同一事物获得多个属性,例如“memory_size”,“gigabytes”,“bytes”,...)替代方案,如果您确实知道拥有一系列专用表的属性可能是什么,例如StorageProducts、ProcessingProducts 等拥有适用于各种产品类别的属性。
-
@John Pickup:你为什么不把那个好答案放到..an answer中?我会投赞成票,这是对 PerformanceDBA 答案的一个很好的补充。
标签: database-design relational