1

我必须在 3NF 中规范化以下内容:

Service (Service_ID, Service Item, service item cost, date of service)  
Customer (customer ID, customer name, customer telephone number, customer address)  
Vehicle (Vehicle ID, vehicle make, vehicle model, vehicle year)  
Parts (Parts ID, part code, part describtion, part cost)

标准化后得到的结果:

Service (Service_ID (PK), Service Item, service item cost, date of service, Vehicle_ID (FK))  
Customer (customer ID (PK), customer name, customer telephone number, customer address)  
Vehicle (Vehicle ID (PK), vehicle make, vehicle model, vehicle year, Customer_ID (FK))  
Parts (Parts ID (PK), part code, part describtion, part cost, Vehicle_ID (FK))

你认为我完全走错了路吗?

4

1 回答 1

3

起始关系

  • 服务(Service_ID、服务项目、服务项目成本、服务日期)

结束关系

  • 服务(Service_ID (PK)、服务项目、服务项目成本、服务日期、Vehicle_ID (FK))

高达 3NF 的规范化识别了几种函数依赖关系,并通过投影去除了麻烦的依赖关系。(通过创建另一个关系。)如果您通过投影删除关系中的一个麻烦的依赖关系,它最终的属性总是比开始时要少。

您的关系“服务”以比您开始时更多的列结束。虽然记录服务适用于哪辆车是有意义的,但这可能与标准化没有任何关系,仅基于您开始使用的内容。

识别丢失的外键虽然无疑是一件重要的事情,但它本身并不是规范化的一部分。从 {Service_ID, Service Item, service item cost, date of service, Vehicle_id, vehicle make, vehicle model, vehicle year} 开始,标准化会表示 Service_ID -> Vehicle_ID 和 Vehicle_ID -> vehicle make, vehicle model, and vehicle年。这是一个传递依赖。为了解决这种传递依赖,

  • 这四列将被投影,形成一个新的关系(您的 Vehicles 表),
  • 车辆制造商、车辆型号和车辆年份将从起始关系中删除,使其比开始时少 3 个属性。

并且服务关系中还有一个车辆ID。

所以你的老师给了你一个不需要你标准化的作业。它要求您确定其他人在哪里搞砸了规范化,并修复它。这种分配没有错,但称其为规范化有很多错误。(恕我直言)

于 2012-05-20T02:17:57.723 回答