0

次のエンティティとその属性を含むデータベース エンティティ関係図があります。

Flight:
Date (primary key)
Num_available_seats

Reservation:
CustomerName
CustomerPhone

Seat:
SeatNumber (primary key)

Flight予約はとの中間的な関係Seatです。と の間には 1 対多の関係がSeatありFlightます (つまり、を介して複数のFlightを使用できます)。SeatReservation

これらのリレーションシップをテーブルに分割すると、これは 1 対多のリレーションシップであるため、データベースに特定のテーブルが存在する必要がないようにSeat消費できることがわかります。ReservationReservation

しかし、私の質問はこれです... の表では、と(と)Seatの主キーを配置することはわかっていますが、関係の非主属性も含めますか?SeatFlightSeatNumberDateReservation

私がいじっている2つのオプションは次のとおりです。

Seat(SeatNumber, Date)
Seat(SeatNumber, Date, CustomerName, CustomerPhone)

どちらが正しいですか?助けてくれてありがとう!

4

2 に答える 2

1

データの整合性を強化するために、もう少し制約を提案します。

ここに画像の説明を入力

于 2013-12-16T12:05:27.803 に答える
0

私の意見では、Reservation には実際にビジネス データ (クライアント情報など) があるため、Reservation テーブルは Seat を使用する必要があります。

このような:

Flight:
Date (primary key) 
Num_available_seats

Reservation:
CustomerName
CustomerPhone
SeatNumber
Date (FK from Flight)

シートテーブルを削ります。

また、可能であれば、Flight テーブルを少し作り直します。

Flight:
FlightId (PK)
Date
AirplaneId (this could be a FK from some Airplane table, if it exists, or simply an identifier for the airplane that makes the flight)
Num_available_seats

これにより、Reservation tale が次のように変更されます。

Reservation:
CustomerName
CustomerPhone
FlightId (FK)
SeatNumber

これが役立つことを願っています。

于 2013-12-16T08:25:36.273 に答える