我正在构建一个Web应用程序,其中产品可以是几种不同类型(实际上是家具类型),并且根据这些类型,产品具有与之相关的某些字段.
快速背景:我使用MySQL和PHP与CakePHP作为我的框架.我正在寻找的答案不一定需要像"CakePHP一样"; 我更喜欢一般的MySQL最佳数据库设计答案和formost.
所以,我可以想到两个选择:
单表选项 - 我有一个products包含所有可能字段的表,只留下未用于该特定产品的字段null.这是我认为最简单的设计,但会采取在整合了一下鞋赫宁的(因为我的模型将需要跟踪型的,哪些字段被实际更新基于对这种类型的.)
多个产品表选项 - 每个产品都有自己的表,其中包含该特定产品类型的正确字段.有一个主表(products)至少有三个字段id(主键),productType(找到正确的表)和productTypeId(将产品表连接到特定的产品表).
我非常依赖#1,但想得到其他人的想法.
如果您需要更多详细信息,请告诉我们!谢谢!
更新:我只期待一套小型的家具类型(<10开始,最大可能是20).
我认为您的问题的解决方案,至少id,您的产品有许多不同类型的属性,可能是使用Entity-attribute-value模型.
基本上,你可以:
Product表,每个产品包含一行,并存储每个产品的数据类型(例如:名称,价格,库存数量)当然,你还需要某种"参考系统",它定义了:
如果你不想建立那种系统,我会选择像你的第二个解决方案:
ProductTYPE表将继承自ProductProduct在相应的ProductType表中有一行和一行.