Lược đồ của bạn trông hoàn toàn ổn, bạn có thể thấy các lược đồ khác (bao gồm cả bản thân tôi ngày nay) ít nhiều có cùng cấu trúc trước đây ( Lưu trữ tin nhắn của các cuộc trò chuyện khác nhau trong một bảng cơ sở dữ liệu duy nhất , Lược đồ cơ sở dữ liệu cho trò chuyện một đối một và trò chuyện nhóm , Tạo luồng riêng tư hệ thống nhắn tin như facebook và gmail ). Tôi thực sự muốn lưu ý rằng phần trình bày trực quan của bạn là tốt nhất, rất dễ hiểu và dễ làm theo :)
Nói chung, tôi nghĩ việc có "phòng" ("trò chuyện", "cuộc trò chuyện") có ý nghĩa ngay cả khi bạn không có thuộc tính cụ thể nào tại thời điểm này (vì nó có thể là name
, posting_allowed
, type
(tức là nếu bạn sử dụng lại cấu trúc tương tự không chỉ cho các tin nhắn và cuộc trò chuyện riêng tư mà còn cho các bài đăng công khai có nhận xét), v.v. Bảng đơn với ID chỉ mục duy nhất sẽ siêu nhanh và có chi phí gần bằng 0, tuy nhiên nó sẽ cho phép mở rộng khá dễ dàng mà không cần sửa đổi tất cả mã hiện có (tức là một ngày bạn quyết định thêm name
để trò chuyện). Giữ logic roomID "ẩn" bên trong participants
bảng sẽ không minh bạch và không hiệu quả (tức là khi bạn cần tìm ID tiếp theo của cuộc trò chuyện), tôi không khuyên bạn nên làm như vậy.