【发布时间】:2015-04-28 12:24:33
【问题描述】:
我为具有这些表的系统工作:
products、categories、features
用户想要动态添加一些功能,例如color。
以下哪种说法是正确的?
第一个:
Product category feature
---------------- ---------------- ----------------------------
pro_id (PK) cat_id (PK) feature_id (PK)
pro_name cat_name fea_name
cat_id (FK) feature_id (FK)
我们添加一个像color 这样的特征,然后在类别中我们选择该特征并将其添加到类别表中。然后我们访问该类别中的所有产品。
但是有一个pleonasm。因为当两个类别想要有color特征时,我们必须在类别表中重复feature_id列。
第二个:
Product category name_feature
---------------- ---------------- ----------------------------
pro_id (PK) cat_id (PK) name_feature_id (PK)
pro_name cat_name cat_id (FK)
cat_id (FK) color
...
当我们输入一个类别时,我们会为该类别创建一个表。例如具有color 功能的笔记本电脑类别。我们在 column 中创建了一个名为 laptop_feature 的表。
哪种方式好? (类别有限)
【问题讨论】:
-
哪个好取决于您如何定义“好”,但“pleonasm”是 +1。尽管(显然)您的第一个模型(目前)没有地方存储特征值(实际上是“属性”值)并且您的第二个模型不是动态的。
-
@Strawberry 谢谢。但是在第二个中,如果我们有 100 个类别,我们将有 100 个特征表。
-
是的,这不好,是吗!
标签: mysql database design-patterns