2016-01-17 49 views
0

我在旅館預訂中有兩張表,我不能定義他們的caridnality約束。房間表和預訂表之間的關係基數

一個實體室,第二預訂

我認爲這是許多人one.As許多房間可以有一個reservation.However一個房間只能有一個reservation.Or是關係到很多許多?

回答

1

由於reservation需要在特定的時間範圍內創建,因此一個房間可以鏈接到多個預訂,時間不同。所以,這是一個多對多的關係。

假設您在1月預留了房間1,並在3月再次預留了同一個房間。那麼你需要三張桌子,一張用於房間,一張用於預訂,第三張用於關係房間預訂。

在以下示例中,房間1的編號爲,在房間和預定之間的關係表中重複該房間。此外,3月份預訂的ID 在該表中重複,因爲它有兩個房間。

t_rooms 
----------------------------- 
room_id | room number | ... 
----------------------------- 
1290  | 1   | ... 
1291  | 2   | ... 

t_reservations 
--------------------------------------------- 
reservation_id | reservation time frame | ... 
--------------------------------------------- 
2055   | in January    | ... 
2056   | in March    | ... 

t_rooms_reservations 
------------------------ 
room_id | reservation_id 
------------------------ 
1290 | 2055 
1290 | 2056 
1291 | 2056 

希望這會有所幫助。 :)

更新:

這將會是很好的檢查了這一點https://en.wikipedia.org/wiki/Database_normalization充分了解如何讓你沒有或最小冗餘的數據庫設計。

+0

很多:) :) 但不會這是round.many房間有一個保留? 我的預訂表包括cust_id(客戶),room_id,預訂ID,checkindate,checkoutdate。 – Sleepingbeauty

+0

在這個例子中,預訂2056有很多房間1(1290)和2(1291)。 – tiomno

+0

這是多對多嗎?有人請澄清? – Sleepingbeauty