实体关系设计 - 以一对多的关系将图表转换为数据库表

时间:2013-12-16 02:41:50

标签: database-design entity-relationship database-schema entityset

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

Flight:
Date (primary key)
Num_available_seats

Reservation:
CustomerName
CustomerPhone

Seat:
SeatNumber (primary key)

预订是FlightSeat之间的中间关系。 SeatFlight之间存在一对多的关系(即,Flight可以通过Seat生成多个Reservation。< / p>

在将这些关系分解为表时,因为这是一对多的关系,我知道Seat可以使用Reservation,因此不需要特定的Reservation 1}}数据库中的表。

但是,我的问题是这个......在Seat的表格中,我知道要放置SeatFlightSeatNumber和{{}的主键1}}),但是我还包括Date关系的非主要属性吗?

以下是我正在考虑的两个选项:

Reservation

哪一个是正确的?谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

为了提高数据完整性,我会建议更多限制:

enter image description here

答案 1 :(得分:0)

在我看来,假设预订实际上有商业数据(例如客户信息),预订表应该消耗席位。

像这样:

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

我希望这会有所帮助。