我正在為owners可以編輯Room時間表的酒店開發預訂系統。
Room為了在 a不可用時存盤日期,我的第一個直覺是表格Occupancy:
Occupancy.create from: "01-04-2022", to: "31-05-2022", room: @room
Occupancy.create from: "15-04-2022", to: "15-05-2022", room: @room
我最終會重疊Occupancies,但沒關系。
但現在,我希望owner能夠選擇Room在四月的第一個周末空出。
而且我看不到如何使用此架構執行此操作,除非創建另一個表或將列添加到Occupancy.
Room因此,我正在考慮使用可能的json格式將一組占用日期存盤在表格的一列中。
但我覺得當我需要查詢給定時間段內的可用房間時,我可能會遇到困難。
這聽起來不是適合這項作業的工具。
uj5u.com熱心網友回復:
我過去曾在一個預訂系統上作業,該系統的模型與您當前的方法類似,并且運行良好。我們有一個等效于Occupancies被呼叫Bookings的表,并有第二個表InternalHolds用于您描述的用例,以及用于清潔或維護等其他任務。
這在很長一段時間內作業得很好。最終,我們最終提取了一個非規范化的可預訂日歷天表,但它來自預訂和保留。
在更大的范圍和更長的時間范圍內,您最終可能會在 Postgres 之外使用一些專用的搜索基礎設施(想想地理搜索、便利性過濾和全文搜索),無論如何這都需要這種非規范化。
我會猶豫直接跳到 JSON 列方法,因為查詢會更加棘手。您要么被困在為大量查詢撰寫棘手的不可移植 SQL;或加載所有房間的所有入住人數,以便能夠回答諸如“從星期二開始有哪些房間可供入住 3 晚”之類的查詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/454813.html
