航空数据库原型

时间:2013-04-03 18:36:37

标签: database foreign-keys primary-key erd

我正在为一项作业设计一个航空公司数据库(无论如何都是大纲),似乎是在圈子里跑来跑去。

关注三个表:

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

有关哪条路线的想法?

1 个答案:

答案 0 :(得分:1)

不是有八个(或任意数量的)列,而是创建有时称为连接表的三列:

Table: references_flights

id (Primary key)

reference_id (fk)

flight_id (fk)

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