在ERD上应用3NF的问题

时间:2014-05-18 17:59:41

标签: database database-design relational-database database-normalization 3nf

这是我的ERD:

ERD

我试图规范化这个ERD,以下是我到目前为止所做的:

Country(CountryID{PK}, CountryName)
City (CityID{PK}, CityName, CountryID{FK})
Manager (username{PK}, password, ManagerName)
Airport (AirportID{PK}, AirportName, ICAO, IATA, ManagerUserName{FK}, CityID{FK})
Airline (AirlineID{PK}, AirlineName, IATA, ICAO)
AirportAirlineOffice (AirlineID{FK}, AirportID{FK}, Officeno) both FK = PK
Airplane (AirplaneID{PK}, Model, Make, AirlineID{FK}, AirportID{FK})

我正在尝试规范化到第3范式,所以基本上我试图实现功能依赖并删除过渡依赖。 我有一些令我困惑的问题:

  1. 在飞机表中,Make和Model应该原样或应该转移到新表中?
  2. 在机场表中,我应该将ICAO和IATA(代码标识符)转移到新表吗?
  3. IATA和ICAO在航空公司的表格中也是如此。
  4. 考虑到3NF,经理表是否需要进行任何更改?
  5. 此致

1 个答案:

答案 0 :(得分:1)

1.如果您将这些(品牌,型号)保留在此表(飞机)中,则没有问题。

2& 3.如果您传输这些代码标识符,则必须使用FK,但如果不这样,则不会对3NF造成问题。

4.您在Airport表中使用了ManagerID,但Manager表中没有名为ManagerID的列。因此有两个选项 - (1)您可以在Airport表中使用username作为外键或(2)在Manager表中,您可以使用ManagerID作为主键,使用username作为唯一键。