Database 3NF归一化

Database 3NF归一化,database,database-design,3nf,Database,Database Design,3nf,我必须在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 (Pa

我必须在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))
你认为我完全走错路了吗?

开始关系

  • 服务(服务ID、服务项目、服务项目成本、服务日期)
结束关系

  • 服务(服务ID(PK)、服务项目、服务项目成本、服务日期、车辆ID(FK))
高达3NF的规范化识别了几种函数依赖关系,并通过投影消除了麻烦的依赖关系。(通过创建另一个关系。)如果通过投影删除关系中的麻烦依赖项,它最终的属性总是比开始时少

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

识别丢失的外键虽然无疑是一件重要的事情,但它本身并不是规范化的一部分。从{Service_ID,Service Item,Service Item cost,Service date,Vehicle_ID,Vehicle make,Vehicle model,Vehicle year}开始,规范化应该说Service_ID->Vehicle_ID,Vehicle_ID->Vehicle make,Vehicle model,Vehicle year。这是一个可传递的依赖项。要修复这种可传递依赖关系

  • 这四列将被投影,形成一个新的关系(您的车辆表)
  • 车辆品牌、车辆型号和车辆年份将从起始关系中删除,使其比起始关系少3个属性
在服务关系中仍然有一个车辆id


所以你的老师给了你一个不需要你正常化的作业。它要求您确定其他人在哪里破坏了规范化,并修复它。这种赋值没有错,但称之为标准化有很多错。(IMHO)

我假设这是家庭作业?规范化是基于函数依赖性的,您还没有向我们展示任何。您的分组看起来合乎逻辑,但可能不“正确”。规范化是将表划分为较小的表。通常,您会向表中添加外键。问题不太清楚,编辑也无能为力。然而,规范化后的表似乎是正确的,并且不包含冗余数据。它似乎不包含冗余数据,但这取决于函数依赖关系。如果两辆不同的汽车可以有一个相同的零件,那么他/她建议的表结构将不会是3NF,因为我们将有重复的零件记录-每辆汽车有一个零件记录。