0

我有一个包含以下实体及其属性的数据库实体关系图:

Flight:
Date (primary key)
Num_available_seats

Reservation:
CustomerName
CustomerPhone

Seat:
SeatNumber (primary key)

Flight保留是 the和 the之间的中间立场关系SeatSeat和之间存在一对多的关系Flight(即一个Flight可以通过 来拥有多个Seats Reservation)。

当把这些关系分解成表时,因为这是一个一对多的关系,我知道它Seat可以消费Reservation,所以数据库中不需要特定的Reservation表。

但是,我的问题是……在表中Seat,我知道要放置SeatFlightSeatNumberDate)的主键,但是我是否还包括关系的非主属性Reservation

这是我正在玩弄的两个选择:

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:
CustomerName
CustomerPhone
FlightId (FK)
SeatNumber

我希望这有帮助。

于 2013-12-16T08:25:36.273 回答