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
我仍然怀疑这四张桌子的设计。
答案 0 :(得分:1)
请考虑构成数据库的内容
包含
的车辆/马达现在,没有规范化就没问题了,但你可以看到那里会有重复的信息,所以你要逐一提取。首先,你将制造商带到一个单独的表中,所以现在Motor将成为
制造商表格将保留。
现在你可以看一下模特了。但是模型实际上只由一个制造商制造,所以,嗯,我们可以为模型做到这一点
马达将成为
马达将成为
就个人而言,我不确定我会把这一年归为一个自己的表格。年份将是一个整数字段,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,你错过了一个像车辆一样将它们联系在一起的实体