使用多对多关系还是多列?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用多对多关系还是多列?相关的知识,希望对你有一定的参考价值。

我有一个产品,可以属于5种可能类别中的一种(或多种)。

类别的数量/名称/结构不会改变

我应该使用多对多关系并在类别表中插入5条记录,添加连接表并添加外键等?或者只是在产品表中添加5个字段?我觉得后者似乎更有效率,但违背了规范化的原则。

Product:
   - id
   - name
   - is_cat_a : bool
   - is_cat_b : bool
   - is_cat_c : bool
   - is_cat_d : bool
   - is_cat_e : bool

要么

Product
   - id
   - name
Category
   - id
   - name
ProductCategories
   - product_id
   - category_id
答案

正如你的建议:

一种产品,只能属于5种可能类别中的一种(或多种)。

然后,在我看来,创建两个表:

**1. Category**
Id int,
Name varchar,
IsActive bool and other regular columns

**2. Product**

   - id int,
   - name varchar,
   - cat_a : int,
   - cat_b : int,
   - cat_c : int,
   - cat_d : int,
   - cat_e : int

将所有类别列的默认值保持为零。

以上是关于使用多对多关系还是多列?的主要内容,如果未能解决你的问题,请参考以下文章

多对多关系 GAE NDB 需要父母还是子女?

059:表关系之多对多

一对多还是多对多?

MS SQL 使用联结表创建多对多关系

升级到 django 1.11 多对多列未找到

hibernate 双向多对多映射关系