我正在重新提出一个以前在 SO 中删除的问题,因为它不是“编程问题”。希望这篇文章比上一篇文章更“编程”一些。
首先,几个定义:
- 型号 -
2011 Nissan Sentra
- 修剪 -
2011 Nissan Sentra LX
通常,特定车辆会有一个列表,例如可用的颜色 或设备 选项。因此 2011 Nissan Sentra
可能有以下颜色可供选择:
- 黑色
- 白色
- 红色
然后,制造商可能已经为 2011 Nissan Sentra LX
内饰提供了一种特殊颜色:
- 带黄色圆点的粉色
如果我正在构建一个汽车网站,我想在其中捕获这些信息,我应该执行以下哪项操作:
- 将颜色与模型相关联?
- 将颜色与装饰相关联?
- 将颜色与模型和装饰相关联?
我的直觉是将它与模型相关联就足够了。关联到修剪将意味着重复(例如 2011 Nissan Sentra LX
和 2011 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/