我必须在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可识别多种功能依赖项,并通过投影消除麻烦的依赖项。(通过创建另一个关系。)如果通过投影移除关系中的一个麻烦的依赖项,则它的属性总是比开始时少。
你的关系“服务”最后的列数比你开始的多。虽然记录服务适用于哪种车辆是有意义的,但这不可能与规范化有任何关系,仅仅基于您开始使用的内容。
识别丢失的外键,虽然毫无疑问是一件重要的事情,但本身并不是规范化的一部分。从{服务标识、服务项目、服务项目成本、服务日期、车辆标识、车辆制造、车辆型号、车辆年份}开始,标准化会说服务标识->车辆标识,以及车辆标识->车辆制造、车辆型号和车辆年份。这是一个传递依赖关系。为了修复这种可传递的依赖关系,
这四列将被投影,形成一个新的关系(您的车辆表)。
车辆品牌、车辆型号和车辆年份将从启动关系中删除,使其具有的属性比启动时少3个。
服务关系中还有一个车辆标识。
所以你的老师给了你一个不需要你正常化的作业。它要求您确定其他人在哪里搞砸了规范化,并修复它。这类任务没什么问题,但称之为规范化有很多错误。(伊姆霍)
关于database - 3NF归一化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10669722/