2013-02-14 62 views
3

我即將設計酒店預訂系統。酒店預訂系統:用於查詢的最佳SQL數據庫結構

每家酒店都分配了一些RoomTypes。

RoomType: id | name | hotel_id

每家酒店RoomTypes特定時期(給出date_fromdate_to)的一些量。 此外,每個客戶都有能力預訂一定數量的指定期間的某些RoomTypes(date_fromdate_to)。

我需要能夠找到&顯示器可提供了給定的酒店,要知道自由(拆放 - 預訂)數量各RoomType的房間的每一天,反對免費客房等

最小數查詢我想諮詢一下,我應該如何保存數據。什麼解決方案最優?除非使用存儲過程,否則無法用簡單的SQL查詢實現某些查詢(例如,顯示給定範圍內每天給定類型的空閒房間數量)。不過,我希望儘可能快地實現它。

到目前爲止,我認爲:

  1. 保持RoomOffer: hotel_id | date_from | date_to | quantity | room_type_id和同樣有保留

  2. RoomOffer: hotel_id | date | quantity | room_type_id,並保留相同的 - 即創建RoomOffer /預約時,創造每一個記錄在給定的範圍內。

有什麼建議嗎?

回答

1

我認爲RoomType是指單個房間,並且每個房間的主鍵都是元組(hotel_id, room_type_id),因爲您同時使用這兩個字段作爲RoomOffer

但是,我不建議您採取RoomOfferReservation的方法。首先,因爲你存儲了大量的冗餘信息:當一個房間還沒有預訂時,你需要一個房間優惠來說明它是可用的(或者更糟糕的是,它們中的很多是因爲你按照時間範圍劃分的),你已經知道的東西。

取而代之的是,我會建議一個更德興與此類似:

Booking System UML

從你的問題我知道你是擔心繫統的性能,但通常這種設計階段的優化不是一個好主意。這樣做可能會導致大量冗餘數據和耦合類。但是,您可以使用索引提高數據庫查詢的性能,甚至可以使用無SQL方法。這是您可以在項目後期階段更好地評估的內容。