xây dựng bảng khác, gọi nó là schedules
, thêm khóa ngoại vào shops
khóa chính của bảng, trường Day of week
, time_open
, time_closed
. Các dữ liệu cần tìm kiếm một cái gì đó như thế này:
shop_id day_of_week time_open time_closed
1 1 09:00 12:00
1 1 16:00 19:00
1 2 09:00 12:00
1 2 16:00 19:00
1 3 09:00 12:00
1 3 16:00 19:00
1 6 10:00 14:00
2 1 09:00 12:00
2 1 13:00 18:00
Điều này sẽ cho bạn cơ hội để xây dựng bất kỳ loại lịch, với càng nhiều cửa sổ như bạn muốn, với bao nhiêu trường hợp ngoại lệ mà bạn cần. Đó là phổ quát, chỉ giới hạn trong thực tế là nó hy vọng tất cả các tuần để được giống hệt nhau. Không có ngày nghỉ được xem xét, cũng như lịch biểu kỳ quặc/cả tuần mà ai đó có thể sử dụng.
Edit:
Với câu hỏi Julien, khoảng giờ của một doanh nghiệp làm việc ban đêm, nó đã đến với sự chú ý của tôi rằng giải pháp trước đây không phải là bu tốt nhất đến nay. Bạn không thể mở một quán bar lúc 20:00, đóng cửa lúc 06:00 và so sánh nếu thời gian hiện tại (02:45) nằm trong khoảng thời gian này, bởi vì sẽ không có. Đó là lý do tại sao, nó sẽ là thuận tiện nhất để đăng ký không phải là thời gian đóng cửa, nhưng tổng thời gian làm việc, trong đơn vị đo lường thuận tiện (ví dụ phút).
shop_id day_of_week time_open working_time
1 1 09:00 180
1 1 16:00 180
1 2 09:00 180
1 2 16:00 180
1 3 09:00 180
1 3 16:00 180
1 6 10:00 240
2 1 09:00 180
2 1 13:00 300
điều này sẽ cho phép bạn thêm lịch thứ ba cho một ngày cụ thể, nếu vi phạm quy tắc của bạn, bạn cần phải kiểm soát chặt chẽ việc thêm lịch biểu mới để kiểm tra điều đó ... hoặc bạn có thể thêm " sched_num "cột với một ràng buộc kiểm tra rằng nó là 0 hoặc 1 và một ràng buộc duy nhất trên day_of_week và sched_num. –
là cách tốt hơn để xử lý giờ mở cửa cho đêm biz, như một quán bar, mở cửa từ 10:00 đến 04:00. Thêm hai mục nhập (ngày1: 22: 00-> 23:59 và ngày 2: 00: 00-> 04:00)? hoặc một mục (ngày1: 22: 00-> 04:00)? – Julien
Câu hỏi thú vị. Trong trường hợp này sẽ là hợp lý nhất để tái tạo tình huống này. Xem phản hồi đã chỉnh sửa. – AlexanderMP