这就形成了一个 多对多 的关系:
✅ 一张机票可以绑定多个航班(联程票)
✅ 一个航班上可以有很多机票(多个乘客)
假设有以下航班:
航班 ID | 航班号 | 出发地 | 目的地 | 出发时间 | 到达时间 |
---|---|---|---|---|---|
101 | CA123 | 北京 | 伦敦 | 2025-03-20 08:00 | 2025-03-20 14:00 |
102 | CA456 | 伦敦 | 纽约 | 2025-03-20 16:00 | 2025-03-20 22:00 |
103 | CA789 | 上海 | 纽约 | 2025-03-20 09:00 | 2025-03-20 19:00 |
现在,有两个乘客:
他们的 机票信息(tickets
表):
机票号 | 乘客 ID | 乘客姓名 |
---|---|---|
T001 | P12345 | 张三 |
T002 | P67890 | 李四 |
ticket_flights
表)机票号 | 航班 ID | 舱位 | 票价 |
---|---|---|---|
T001 | 101 | 经济舱 | 3000 |
T001 | 102 | 经济舱 | 4000 |
T002 | 103 | 商务舱 | 9000 |
T001
绑定了两个航班:
T002
只绑定了一个航班:
ticket_flights
这张表会有什么问题?如果我们直接在 tickets
表里加一个 flight_id
字段,而没有 ticket_flights
这张表,就会有 两种问题:
T001
需要绑定两个航班,tickets
里没法存两个 flight_id
)。T001
机票在第一个航班上可能是经济舱,在第二个航班上可能是商务舱)。✅ 为什么一张机票可以对应多个航班?
✅ 为什么一个航班可以有多个机票?
✅ 为什么 ticket_flights
表是必须的?
这样设计后,系统既可以支持直飞航班(单一航班),也可以支持转机航班(多个航班)。