【问题标题】:The Normalization of vehicle data车辆数据的规范化
【发布时间】:2013-05-28 18:40:07
【问题描述】:

我将于 9 月开始上大学,并希望在暑假期间进行一些复习以帮助完成课程。我想知道是否有人可以抽出一些时间帮助我进行数据库的规范化。我对此比较陌生,如果有任何帮助,我将不胜感激!

这是我开始时的表格:

ABI_CODE  INT             <Unique Identifier
MOTOR_TYPE  VARCHAR       <Car, Bike or Van
MAKE  VARCHAR             <Renault, Ford etc.
MODEL  VARCHAR            <Focus, Fiesta etc.
MANUFACTURED_FROM  INT    <start year
MANUFACTURED_TO  INT      <end year
ENGINE_CC  INT            <999, 1199 etc.
ENGINE_TYPE  VARCHAR      <Diesel, Petrol or Electric
TRANSMISSION  VARCHAR     <Manual or Automatic

这是我目前的位置:

Type ( MOTOR_TYPE )

Make ( MAKE )

Model ( ABI_CODE, MODEL, MANUFACTURED_FROM, MANUFACTURED_TO, ENGINE_CC )

Engine_Type ( ENGINE_TYPE )

Transmission ( TRANSMISSION )

如果有更多信息可以帮助某人帮助我,请询问,我会更新这篇文章。

编辑:显示关系

一个品牌可以有多个模型

一个模型可以有一个 Motor_type、Engine_Type、Manufactured_From、Manufactured_To、Engine_CC、Transmission

【问题讨论】:

  • 问题是什么?
  • 这是你自己做的练习,还是来自你以前的课程?
  • 您仍然没有引用 transmissionmake。此外,model 不应引用 manufactured_frommanufactured_to;他们现在在同一张桌子上(这很好)。如果您将id-fields 添加到您的表中并基于表名和引用字段的引用,您的关系会更加清晰。
  • 将 engine_cc 放在模型表中看起来是个坏主意。

标签: sql database database-design normalization


【解决方案1】:

首先我会在各处添加一个唯一标识符,以正确建立特定关系。

最后,您的数据模型将如下所示:

Model ( MODEL_ID (PK), ABI_CODE, MODEL, MANUFACTURER_ID (FK), 
ENGINE_ID (FK), MOTOR_TYPE, Transmission, MAKE)

ManuFacturer (MANUFACTURER_ID, MANUFACTURED_FROM, MANUFACTURED_TO)

Engine ( ENGINE_ID, ENGINE_CC, ENGINE_Type )

根据您认为数据架构将如何更改,您可以拥有自己的电机类型、制造商和传输表,也可以不拥有。目前,我建议不要拥有自己的表,因为它只会导致一个具有一个 PK 和一个值的表。

不过,制造商和发动机的信息更适合放在自己的表格中。

【讨论】:

  • 非常感谢,这很有帮助!您能协助我处理关系以帮助设计 ERD 吗?
  • @Ryan 没问题。我只是对其进行了一些更改以使其更简单。所以你的数据模型只包含三个表。基本上他们都是1:1的关系。如果您有许多具有相同品牌的数据行,您可能希望将“品牌”排除到自己的表中。
  • 1:1 ?这看起来不像 1:1。
  • @ypercube:啊,你是对的。一个引擎可以有多个模型。一个制造商可以有多个模型。
猜你喜欢
  • 2021-11-05
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 2014-04-14
  • 2012-05-29
  • 2016-07-23
  • 2013-12-11
  • 1970-01-01
相关资源
最近更新 更多