Có ít nhất 2 quy trình kinh doanh liên quan ở đây.
Hiển thị chỗ ngồi có sẵn.
Đặt chỗ đã chọn.
Vì các quy trình này không theo dõi nhau một cách miễn dịch và vì 2 người có thể chọn cùng một chỗ nên vấn đề đồng thời phát sinh.
Nếu thiết kế cơ sở dữ liệu của bạn gán các ràng buộc duy nhất chính xác để kết hợp:
-TheaterID
-SeatID
-EventID
là duy nhất, sau đó cơ sở dữ liệu sẽ ngăn ngừa trùng lặp.
Kịch bản sau đây cũng có thể nhưng sẽ được giải quyết bằng cách thực hiện được đề xuất ở trên:
Giả sử chế độ xem lưới khả dụng cho một nhà hát nhất định và một sự kiện nhất định có thể được hiển thị:
- User1 hiển thị chỗ ngồi có sẵn (và có chỗ ngồi 1 và 2)
- User2 hiển thị chỗ ngồi có sẵn (và có chỗ ngồi 1 và 2)
- User1 nói chuyện một chút với khách hàng trên điện thoại
- User2 đi và đặt chỗ 2 cho khách hàng của mình
- User1 cố gắng đặt ghế 2 cho khách hàng của mình (vì nó hiển thị như có sẵn trên màn hình của anh ta)
- Chỉ mục duy nhất ngăn bước 5 đi lại dữ liệu.
Vì vậy, tất cả những gì bạn cần làm có thể không có gì chính xác hơn là thiết kế cơ sở dữ liệu và lựa chọn đúng đắn về các ràng buộc.
Các cách tiếp cận phức tạp khác là có thể nếu bạn muốn, sử dụng hàng đợi giao dịch. Trong trường hợp này, các yêu cầu được ghi trước vào hàng đợi sau đó thực hiện quy trình cứ sau n giây nhưng điều đó hầu như không cần thiết hoặc thực tế trong trường hợp của bạn.
Phần thực sự thú vị là lưới danh sách cho người dùng 1 hiển thị những gì?