小编yem*_*met的帖子

如何建模涉及产品、类别和标签的三向关联?

我有以下三个表:

products:
    product_id,
    product_name,
    ...

categories:
    category_id,
    category_name,
    category_parent_id,
    category_priority (for sort ordering),
    .....

labels:
    label_id,
    label_name,
    .....
Run Code Online (Sandbox Code Playgroud)

这个想法是,产品分配给一个类别将各内进行分组类别标签,并以这种方式在网站上列出:

---label1---
product_1
product_2
product_3
---label2---
product_4
product_5
---label3---
product_6
product_7
product_8
product_9
etc.
Run Code Online (Sandbox Code Playgroud)

我不知道如何设计一个关联表(或多个表)将所有这些粘合在一起并防止这样的异常:

---label1---
product_1
product_2
---label2---
product_2
product_3
Run Code Online (Sandbox Code Playgroud)

同时,我想允许一种情况,即当没有足够的产品来证明其合理性时,不会为某个类别分配标签

问题

是否有可能设计一个将它结合在一起的结构,或者我应该“放弃所有希望”并采用这样的方法:

categories:
    category_id,
    category_name,
    category_parent_id,
    categor_is_label,
    category_priority

products:
    product_id,
    product_name,
    ...
Run Code Online (Sandbox Code Playgroud)

加上下面的关联表:

categories_products:
    category_id,
    product_id,
    priority
Run Code Online (Sandbox Code Playgroud)

并处理应用程序中的所有逻辑和异常检查?

我假设用户不能直接访问数据库。

评论和聊天互动

对于那些有兴趣深入讨论手头业务背景的人,您可以访问此聊天室

mysql foreign-key database-design primary-key many-to-many

2
推荐指数
1
解决办法
1661
查看次数