我正在为一项任务设计一个航空公司数据库(无论如何都是一个大纲),并且似乎在绕圈子。
涉及三个表:
Customer Booking_Reference Flight
cust_id(pk) reference_id(pk) Flight_id(pk)
cust_id(fk)
预订参考可以有多个航班。
一个航班将有许多预订参考。
我试图打破多对多的关系。是否可以有一个以 flight_id 作为属性(列)和 booking_reference 作为行(数据)的关系表?如果是这样,就没有主键,据我所知,这是不行的。
或者,我可以制作具有 2 个属性和 booking_reference/flight 的复合主键的 booking_reference/flight 关系表,这将导致两个实体被重复但主键是唯一的(无论如何它的一半)。这是可接受的设计实践吗?
我打算在预订参考表中列出最多 8 个航班作为列(对于少于 8 个航班的条目,为 NULL),并为超过 8 个航班的客户提供一个新的 reference_id,但这似乎是当我对数据库了解得更多时,这更荒谬,导致更多的参考 id 和更多的 NULL 数据。
关于采取哪条路线的任何想法?