【发布时间】:2016-01-01 06:23:55
【问题描述】:
我正在设计一个 SQL 数据库,它需要是一个五表数据库才能满足 Air-Crewe 的要求。到目前为止,我有以下内容:
我为 UNF 准备了这个:
CrewID, Crew Type, Title, Forename, Surname, Gender, CAALicenceNum, FlightID, FlightNum, IATADep, IARAArr, Date, SchDep,SchArr, Comments, A/CType, A/CReg, A/CManuf
我有这个用于 1NF:
TBLCrew(CrewID[PrimaryKey], CrewType, CrewTitle, Forename, Surname, gender, CAALicenceNum, FlightID*)
TBLFlight(FlightID[PrimaryKey], FlightNumber, IATADep, IATAArr, Date, SchArr, cmets, A/CType, A/CReg, A/CManuf)
我有这个用于 2NF:
TBLCrew(CrewID[PrimaryKey], CrewType, CreweTitle, Forename, Surname, gender, CAALicenceNum)
TBLFlight(FlightID[PrimaryKey], FlightNum, IATADep, IATAArr, Date, SchArr, cmets, A/CType, A/CReg, A/CManuf)
TBLCrewFlight(CreweID[composite/compoundKey], FlightID[composite/compoundKey])
3NF 需要分成五个表,但我不知道如何实现 - 谁能帮帮我?或者,如果我在上面的规范化中犯了错误,请纠正我(我可能是规范化的新手)
【问题讨论】:
-
您可以为 A/CType 和 CrewType 实体创建另外 2 个表。
-
我可能会将 Crew Type 和 Title 放在 2NF 的 TBLCrewFlight 中,因为飞行员可能是飞行员或副驾驶,如果有首席飞行助理,它也可能因航班而异。这在一定程度上取决于企业如何定义事物。
-
感谢大家的快速响应,我在上面添加了一个 UNF 表格以说明不同类型的单元格值,感谢您抽出宝贵时间帮助我!
-
我不太清楚
TBLCrew行是描述一个 crew(一群人)还是一个 crew member(一个人) )。 -
对不起,TBL 船员是为单个船员服务的
标签: sql normalization