我开始了一个新的应用程序,现在我正在寻找两条路径,不知道哪个是继续的好方法。
我正在建立类似电子商务网站的东西。我有一个类别和子类别。
问题是现场有不同类型的产品,每种产品都有不同的属性。并且站点必须可以通过这些产品属性进行过滤。
这是我最初的数据库设计:
Products{ProductId, Name, ProductCategoryId}
ProductCategories{ProductCategoryId, Name, ParentId}
CategoryProperties{CategoryPropertyId, ProductCategoryId, Name}
ProductPropertyValues{ProductId, CategoryPropertyId, Value}
现在经过一些分析,我发现这个设计实际上是EAV模型,我读到人们通常不推荐这种设计。
似乎一切都需要动态 sql 查询。
这是一种方式,我现在正在研究它。
我看到的另一种方式可能被命名为LOT WORK WAY,但如果它更好,我想去那里。做表
Product{ProductId, CategoryId, Name, ManufacturerId}
并在数据库中进行表继承,这意味着使表像
Cpus{ProductId ....}
HardDisks{ProductId ....}
MotherBoards{ProductId ....}
erc. for each product (1 to 1 relation).
我知道这将是一个非常大的数据库和非常大的应用程序域,但它是否比 EAV 设计的选项更好、更容易且性能更好。