0

这是我的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. 在飞机表中,品牌和型号应该保持原样还是应该转移到新表中?
  2. 在 Airport 表中,我应该将 ICAO 和 IATA 代码标识符转移到新表吗?
  3. 航空公司表中的 IATA 和 ICAO 也是如此。
  4. 考虑到 3NF,经理表是否需要任何更改?

问候

4

1 回答 1

1

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

2 & 3.如果您传输这些代码标识符,您将不得不使用 FK,但如果您不这样做,则 3NF 不会有问题。

4.您在 Airport 表中使用了 ManagerID,但在 Manager 表中没有名为 ManagerID 的列。所以有两种选择 - (1) 您可以在 Airport 表中使用用户名作为外键,或者 (2) 在 Manager 表中,您可以使用 ManagerID 作为主键,用户名作为唯一键。

于 2014-05-18T19:07:00.740 回答