3

主要實體: 客戶 遊客 預訂 RoomAssignment爲多個房間預訂數據庫設計:一對多

我想實現多房間預訂數據庫設計。首先,我想解釋第一的理念:

  1. 客戶是誰獲得一個預約的一個。
  2. 客戶只能有1個預訂時間
  3. 客戶可以預約多個房間。
  4. 來賓是誰被分配到一個特定的房間。

    所以對於表:

    Client (client_id(PK), Name)
    Guest (guest_id(PK), Name)

    Reservation (reservation_id(PK), client_id(FK), roomAss_id(FK), checkInDate); 
    RoomAssignment (roomAss_id(PK), guest_id(FK), roomno(FK)); 
    Room(room_id(PK), roomDetails); 
    

//這裏的問題是,我不知道如何實現1對多的關係。我的預訂應該處理多重RoomAssignment?或者我的RoomAssignment會處理多個guest_id和roomno,然後我會將1個roomass_id傳入我的預訂表中?

謝謝我真的很困惑這個1對多的關係。我希望有人善意地幫助,而不是給我負面的觀點。 T_T

另一種嘗試:

Room(room_id(PK), roomDetails); 
Client (client_id(PK), Name) 
Guest (guest_id(PK), Name) 
Reservation (reservation_id(PK), client_id(FK), checkInDate); 
Booking(book_id(PK), reservation_id(FK), room_id(FK)); 
Lodging(lodge_id(PK), guest_id(FK), book_id(FK)) 

(客戶端,室,客人都已經填寫),添加預約,預訂加,加陳曉曦

這是正確的?

回答

3

編輯思考這個更長時間後改變了我的建議。這是一個更深層次的謎題,比我第一個想到的。)

我更傾向於將有有許多一對多的關係,預定(使用橋表)與房間。用ReservationID和RoomID外鍵調用這個表,就像。 。 。 預訂。也許你可以想出一個更好的名字。預訂是保留的特定房間。然後,我會有另一個橋表代表客人和預訂之間的關係。你也許可以稱之爲住宿。住宿是被分配到特定預訂(預定房間)的特定客人。

這是一個整潔的難題,你有。關鍵在於你有幾個具體的東西存在於它們自己並且顯然是必要的(保留,房間,客人),還有幾個其他的概念,每個都有自己的屬性,並從這些東西之間的關係中跳出來。如果這將被正確地標準化,你可能會得到比你猜測的更多的表格。不要以爲這會變得越來越複雜。有足夠的正確的表是什麼將最終簡化這個。以下是一些其他建議:

  • 花在每個表的名稱上的時間。我上面的建議很不錯,但你可以改進它們。預訂既是其他事物之間的關係,也是一種思想本身,在另一張桌子上至少有一個外鍵。
  • 您應該能夠描述表格上的記錄。如果你不能這樣做,那麼你的桌子就吸了。請參閱上文,我如何描述預訂和住宿是什麼。您的設計可能最終會有所不同,但是當您頭腦風暴不同的表格時,請確保您可以描述該表格上的記錄實際上是什麼。
  • 考慮讓Guest和Client來自同一個表。他們都是真正的「聯繫人」。有人可能是某位客人,但下個月可能是客戶。當聯繫人是客戶端時,您可能會創建額外的數據表(一個爲0或1)。你的系統只會要求基本的聯繫信息,如果有人只是作爲一個客人,但更多,如果他們充當客戶。
+0

是的,每個房間都應該有1位客人登記。所以1個房間也應該有1個客人。 – 2012-02-15 14:09:43

+0

先生另一個問題,我會在哪裏得到reservation_id,因爲我打算最後添加保留。我的訂單如下:房間(已填寫價值/細節等),客戶,客人,房間分配和預訂。謝謝你的回答 – 2012-02-15 14:13:35

+0

先生,請你給我看看。我無法清楚地理解。如果你展示它會更好,這對我來說會更容易。請:))) – 2012-02-15 14:19:45