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

时间:2018-03-05 15:40:50

标签: database database-design

我有一个产品,可以属于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

1 个答案:

答案 0 :(得分:0)

如你所知:

产品,只能属于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

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