如何为车辆数据库创建表格?

时间:2011-11-02 22:18:19

标签: sql sql-server database sql-server-2008 database-design

MAKE - MODEL - YEAR - MOTOR是实体。我正在使用这4个实体,但我没有找到最好的设计(我猜错了)

Motor
- MotorID
- MotorName

Model
- ModelID
- MotorID
- ModelName

Year
- YearID
- YearName
- ModelID

Make
- MakeID
- MakeName
- YearID

我正在关注此网站,以了解如何组织:http://www.rockauto.com/catalog/raframecatalog.php

我仍然怀疑这四张桌子的设计。

4 个答案:

答案 0 :(得分:1)

请考虑构成数据库的内容

包含

的车辆/马达
  1. 标识符(登记牌?)
  2. 制造商
  3. 模特
  4. 制作年份。
  5. 现在,没有规范化就没问题了,但你可以看到那里会有重复的信息,所以你要逐一提取。首先,你将制造商带到一个单独的表中,所以现在Motor将成为

    1. 标识符
    2. 制造商ID(制造商表的外键)
    3. 模特
    4. 制作年份。
    5. 制造商表格将保留。

      1. 制造商ID
      2. 制造商名称。
      3. 现在你可以看一下模特了。但是模型实际上只由一个制造商制造,所以,嗯,我们可以为模型做到这一点

        1. 型号ID
        2. 型号说明
        3. 制造商ID(制造商表的外键)
        4. 马达将成为

          马达将成为

          1. 标识符
          2. 型号ID(制造商表的外键)
          3. 制作年份。
          4. 就个人而言,我不确定我会把这一年归为一个自己的表格。年份将是一个整数字段,ID列可能也是一个整数字段,所以你不会节省太多......

答案 1 :(得分:0)

我的观点是你有一辆车,它是以下几个方面的综合体

Manufacturer
Model Name
Model Variant
Engine
Year

So you'd have the following tables

Manufacturer (ManufacturerID, Name, ParentCompanyID (references ManufacturerID))
Model_Name (Model_NameID, Name)
Model_Variant (Model_VariantID, name)
Engine (EngineID, Name, ManufacturerID) - this is because a vehicle can have an engine by a different manufacturer
Year (YearID, Year)

Vehicle (VehicleID, ManufacturerID, Model_NameID, Model_VariantID, Engine_ID, YearID)

然后,您可以将车辆的组件标记为不同的集合,这样您就不会将车辆插入两次。

请注意,这些是不完整的表格,只是为了让您了解一个想法。您可能应该使用制造商标记,如果它们是区域变体,那么您可以充分区分福特福克斯英国销售和美国销售。

答案 2 :(得分:0)

在没有为RockAuto网站添加任何额外的复杂性的情况下,似乎将它的树视图构造为make-year-model-variant,但是'year'实际上没有任何属性或者孩子或父母,它更像是模型的属性

make - id, name
model - id, make.id, year, name
variant - id, model.id, name

make->model is 1:m
model->variant is 1:m
model->variant is 1:m

您可能会考虑让模型具有日期范围,但同样适用于每个变体。一旦你开始添加任何进一步的复杂性,你将得到VIN数字。

答案 3 :(得分:-2)

实际上,如果这不是一个家庭作业(我怀疑它是),我会使用一些orm工具并取结果(或调整它们),实际上你也可以用作业来做 - 但我会猜测会作弊

无论如何我会猜测一个完全不同的表格映射,同样猜测@jamieDainton,你错过了一个像车辆一样将它们联系在一起的实体