数据库设计 - 实体属性值(EAV)的替代方案

时间:2010-05-24 08:44:22

标签: sql database ms-access

请参阅How to design a product table for many kinds of product where each product has many parameters了解类似主题。

我的问题:我想设计一个数据库,该数据库将用于不同类型产品的生产设施,其中每个产品都有自己的(数量)参数。 因为为了概览目的我希望序列号在一个表格中,我对这些不同的副词有问题。

一个解决方案可能是EAV,但它有其缺点,当然因为我们有+ - 5个产品,每个产品+ - 20.000个序列号(记录)。它看起来有点矫枉过正......

我只是不知道如何设计一个数据库,以便你有一个mastertable属性,说:'嘿,你可以在THAT detail-table中找到这条记录的详细信息。 '以某种方式,你可以轻松地查询结果)

当前我正在使用Visual Basic& Acces 2007.但我要去Visual Basic&的MySQL。

感谢您的帮助。

鲍勃

2 个答案:

答案 0 :(得分:1)

我会选择这样的东西:

product [productid, title, price, datecreated, datemodified, etc]
attribute [attributeid, title]
productattribute [productid, attributeid, value, unit]

示例:

[product]
productid  title    price   datecreated  datemodified
1          LCD TV   99.95   2010-01-01   2010-01-01
2          Car      12356   2010-01-01   2010-01-02
3          B/W TV   12.95   1960-01-01   1960-01-01

[attribute]
attributeid  title
10           Colors
11           Dimensions
12           Passengers

[productattribute]
productid  attributeid  value  unit
1          10           16     million
1          11           32     inch
2          12           4      adults
3          10           2      colors
3          11           6      inch

答案 1 :(得分:0)

在处理此类问题时,您似乎可能需要了解有关可用设计模式的更多信息,因为没有一个通用的解决方案。

我建议您选择Patterns of Enterprise Application Delvelopment的副本来帮助您。很抱歉,我无法直接回答您的问题(希望其他人可以通过SO方式解答),但我认为您所链接的问题中给出的答案是最好的。