2013-04-03 201 views
-1

我設計一個航空公司的數據庫(一個反正輪廓)賦值和似乎手忙腳亂。航空公司數據庫原型

三表關注:

Customer  Booking_Reference  Flight 

cust_id(pk)  reference_id(pk)   Flight_id(pk) 
       cust_id(fk) 

支付預訂參考可以有很多航班。

的飛行將有許多預訂的引用。

我試圖打破了多對多的關係。是否有可能與Flight_id作爲屬性(列)和預訂參考作爲行(數據)的關係表?如果是這樣,就不會有主鍵,這是我不理解的。

或者我可以使用booking_reference/flight的2個屬性和複合主鍵來創建booking_reference/flight關係表,這會導致兩個實體都被複制,但主鍵是唯一的(其中一半是唯一的)。這是可接受的設計慣例嗎?

我打算在預訂參考表中列出最多8個航班作爲列(對於少於8個航班的條目爲NULL),並給予客戶超過8個航班新的reference_id,但是這似乎更加荒謬,因爲我更多地瞭解數據庫,導致更多的參考ID和更多的NULL數據。

任何想法上的路線可供選擇?

+0

'有哪些路線可以選擇?'哈哈。 – Tim 2013-04-03 18:41:07

回答

1

不是有八(或任意數量)列,創造什麼有時也被稱爲連接表,有三列:

Table: references_flights 

id (Primary key) 

reference_id (fk) 

flight_id (fk) 

然後,您應該能夠在它們之間查詢數據與右連接,但我會留給那些擁有更多數據庫專業知識的人。

+0

我要說一說,但我不完全明白爲什麼這比擁有reference_id和flight_id的compund主鍵更好。查詢更簡單還是更快或更清晰? – 2013-04-03 18:51:50

+0

我不是專家,但我相信中介連接表是普遍接受的清除多對多關係的方式,而複合主鍵比他們的價值更麻煩。 – 2013-04-03 19:16:03

+0

好的坦克爲你的幫助! – 2013-04-03 19:35:20