Mysql

空房情況

  • July 4, 2021

我想知道在旅館 (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'

因此,在您的應用程序中,您需要將重複鍵錯誤視為異常並將其視為已預訂。

引用自:https://dba.stackexchange.com/questions/295260