我开始了一个新的应用程序,现在我正在寻找两条路径,并且不知道哪个是继续的好方法。
我正在建设类似电子商务网站。我有一个类别和子类。
问题是现场有不同类型的产品,并且每个都有不同的属性。这些产品属性必须是可过滤。
这是我最初的数据库设计:我应该使用EAV数据库设计模型还是使用大量表
Products{ProductId, Name, ProductCategoryId}
ProductCategories{ProductCategoryId, Name, ParentId}
CategoryProperties{CategoryPropertyId, ProductCategoryId, Name}
ProductPropertyValues{ProductId, CategoryPropertyId, Value}
现在一些分析我看,这样的设计其实是EAV模型,我读了人们通常不建议采用这种设计后。
似乎动态SQL查询是一切都需要。
这是一种方法,我现在正在查看它。
我看到的另一种方式可能被命名为很多工作方式但如果它更好,我想去那里。 为了使表
Product{ProductId, CategoryId, Name, ManufacturerId}
,并使数据库至极表继承手段,使表像
Cpus{ProductId ....}
HardDisks{ProductId ....}
MotherBoards{ProductId ....}
erc. for each product (1 to 1 relation).
我明白,这将是一个非常大的数据库,非常大的应用领域,但它比使用EAV设计的选项更好,更容易和更好的性能。
我不同意你的初始设计是EAV。 – 2013-03-06 15:53:31
ProductPropertyValues表不是EAV?来吧。 – 2013-03-06 16:09:44
你为什么认为它不是? – 1110 2013-03-06 19:03:42