Mysql
空房情況
我想知道在旅館 (Saas) 中管理房間或床位可用性的最佳方法是什麼。我正在考慮使用 MySQL 和 Elasticsearch。房間/床位表和可用性表的最佳模式是什麼?
非常感謝。
MariaDB-10.5 有一個特性Application Time Periods - WITHOUT OVERLAPS誰的例子甚至列出了房間的可用性作為例子。
該範例給出:
CREATE OR REPLACE TABLE rooms ( room_number INT, guest_name VARCHAR(255), checkin DATE, checkout DATE, PERIOD FOR p(checkin,checkout), PRIMARY KEY (room_number, p WITHOUT OVERLAPS) );
作為範例語法。
嘗試重疊預訂將導致錯誤:
INSERT INTO rooms VALUES (1, 'Regina', '2020-10-01', '2020-10-03'), (2, 'Cochise', '2020-10-02', '2020-10-05'), (1, 'Nowell', '2020-10-03', '2020-10-07'), (2, 'Eusebius', '2020-10-04', '2020-10-06'); ERROR 1062 (23000): Duplicate entry '2-2020-10-06-2020-10-04' for key 'room_number'
因此,在您的應用程序中,您需要將重複鍵錯誤視為異常並將其視為已預訂。