mysql - 数据库设计 : relate to car's model or trim?

标签 mysql database data-modeling database-design

我正在重新提出一个以前在 SO 中删除的问题,因为它不是“编程问题”。希望这篇文章比上一篇文章更“编程”一些。

首先,几个定义:

  • 型号 - 2011 Nissan Sentra
  • 修剪 - 2011 Nissan Sentra LX

通常,特定车辆会有一个列表,例如可用的颜色设备 选项。因此 2011 Nissan Sentra 可能有以下颜色可供选择:

  • 黑色
  • 白色
  • 红色

然后,制造商可能已经为 2011 Nissan Sentra LX 内饰提供了一种特殊颜色:

  • 带黄色圆点的粉色

如果我正在构建一个汽车网站,我想在其中捕获这些信息,我应该执行以下哪项操作:

  • 将颜色与模型相关联?
  • 将颜色与装饰相关联?
  • 将颜色与模型和装饰相关联?

我的直觉是将它与模型相关联就足够了。关联到修剪将意味着重复(例如 2011 Nissan Sentra LX2011 Nissan Sentre SE 都将“黑色”作为颜色)。尝试将颜色与模型和装饰相关联可能有点矫枉过正。

建议?

最佳答案

如果有特殊情况,如您所说,制造商只为特定装饰提供特殊颜色,例如“带黄色波尔卡圆点的粉红色” “2011 Nissan Sentra LX trim”

并且你想存储那些特殊情况,你应该选择第二个选项。

因此,您的关系将是:

1家厂商生产多种型号

1个模型有很多装饰

1 种装饰可以有多种颜色,对于一种颜色,许多装饰都有它
(所以你需要一个关联表来表示这种关系)

Manufacturer
    1\
      \
       \N
     Model
       1\
         \
          \N
         Trim          Colour
           1\           1/
             \          /
              \N       /M
              TrimColour

关于颜色的附加信息:

一种GeneralColour可以被不同的制造商命名为多种颜色, 一个制造商可以用各种颜色(名称)“洗礼”一个GeneralColour

        Manufacturer         
         1/      1\           
         /         \         
        /N          \        
     Model           \     GeneralColour
       1\             \       1/
         \             \      /
          \N            \N   /M
         Trim           Colour
           1\           1/
             \          /
              \N       /M
              TrimColour

更清楚地思考,不需要额外的Manufacturer-Colour关系:

Manufacturer
    1\
      \
       \N               
     Model                 GeneralColour
       1\                     1/
         \                    /
          \N                 /M
         Trim           Colour
           1\           1/
             \          /
              \N       /M
              TrimColour

关于mysql - 数据库设计 : relate to car's model or trim?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6657196/

相关文章:

python - Django 模型尝试自动创建主键字段,即使它已经指定

java.sql.SQLSyntaxErrorException : name provided was not in the list of valid column labels:

mysql - 如何找到数据库中相关表之间的孤立条目?

ruby-on-rails - 如何仅针对列更新的子集更新模型的 "updated_at"字段?

cassandra - 为什么在 Cassandra 表中使用复合聚集键?

mysql - 您如何处理.Net session 提供程序错误?

mysql - 如何使用连接在mysql中使用case语句?

java - 当库提取到可运行的 jar 中时 JDBC 运行良好,但当它们刚刚打包时则运行不佳

java - 有没有一种方法可以测量执行 SQL 查询所花费的时间而不用 Java 获取结果?

sql - oracle(或任何关系)数据模型问题。有固定数量 child 的 parent ?