-1

我正在为一项任务设计一个航空公司数据库(无论如何都是一个大纲),并且似乎在绕圈子。

涉及三个表:

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 数据。

关于采取哪条路线的任何想法?

4

1 回答 1

1

与其拥有八(或任意数量)列,不如创建有时称为连接表的三列:

Table: references_flights

id (Primary key)

reference_id (fk)

flight_id (fk)

然后,您应该能够使用正确的 JOIN 查询它们之间的数据,但我会将其留给具有更多数据库专业知识的人。

于 2013-04-03T18:40:12.173 回答