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. 空港のテーブルで、ICAO と IATA のコード識別子を新しいテーブルに転送する必要がありますか?
  3. Airline テーブルの IATA と ICAO についても同様です。
  4. また、3NF を考慮して、マネージャー テーブルに何か変更が必要ですか?

よろしく

4

1 に答える 1

1

1.この表(飛行機)にこれら(メーカー、型式)を入れておけば問題ありません。

2 & 3.これらのコード識別子を転送する場合は FK を使用する必要がありますが、転送しない場合は 3NF では問題になりません。

4.Airport テーブルで ManagerID を使用しましたが、Manager テーブルに ManagerID という名前の列がありません。したがって、2 つのオプションがあります。(1) Airport テーブルでユーザー名を外部キーとして使用するか、(2) Manager テーブルで ManagerID を主キーとして、ユーザー名を一意のキーとして使用できます。

于 2014-05-18T19:07:00.740 に答える