数据库表布局

时间:2011-02-10 22:46:50

标签: database-design

在设置MySQL数据库时,请考虑我有一个名为的产品表(tblCar):

  • 跑车
  • 轿车
  • 小型货车
  • 卡车

以及(1980年代)配件清单:

  • 月亮屋顶
  • Chrome wheel
  • Window Tint

以及一系列选项:

  • 油漆颜色
  • 内部装饰
  • 内饰颜色
  • Blu-Ray player in-dash

现在,让我们设定一些基本规则:

  • Coupe可以选择任何附件或选项
  • Sedan可以从任何配件中选择,但不提供蓝光选项
  • Mini-van有窗口色调作为附件,可以从所有选项中选择
  • 卡车只有镀铬轮,色彩配件和唯一的油漆选项

我需要一个 tblCar 设置,这很清楚。但是,如何在不重复订单项本身的情况下管理 tblAccessories tblOptions 的表格。让我们假装我只想要配件和选项的描述信息,而不是价格,因为它们安装的车肯定会有所不同。

这是 tblAccessoriesHelper 的情况,其中包含 carID accessoryID 的值列表,其中两者应符合或在此处更好的方法?

1 个答案:

答案 0 :(得分:0)

您将拥有将两者连接在一起的联结表

tblCar
tblAccessories
tblOptions 
tblCarAccessories
tblCarOptions

如果使用“tbl”命名表,还有另一种使用前缀“jct”的命名约定。我会把这些表命名为

Car
Accessory
Options
CarAccessory
CarOptions

(使用单数形式的名称表,但“选项”是特殊的,因为“选项”可能是某些DBMS中的保留/特殊字)