【问题标题】:Use many to many relationship or multiple columns?使用多对多关系或多列?
【发布时间】:2018-03-06 00:36:29
【问题描述】:

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

【问题讨论】:

    标签: database database-design


    【解决方案1】:

    正如你所建议的:

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

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

    【讨论】:

    • 这没有意义,因为类别表中只有 5 行,所以对这个表的引用被 5 列否定
    猜你喜欢
    • 2018-06-15
    • 2021-04-01
    • 2018-10-03
    • 2011-12-31
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2012-12-18
    • 2018-01-03
    相关资源
    最近更新 更多