Tôi khuyên bạn nên có ít nhất những thứ sau:
Người dùng, Chủ đề, Tin nhắn
- Tất cả các thư sẽ có một chuỗi
- khóa ngoại:thread_id
- Tất cả các chuỗi sẽ có ít nhất một tin nhắn và ít nhất một người nhận (cũng như người gửi)
- khóa ngoại:to_user_id, from_user_id, message_id
Từ đó, bạn có thể chỉ cần gán một vài cờ cho chuỗi của mình (to_user_deleted, from_user_deleted) sẽ được cập nhật tương ứng.
Tất nhiên còn nhiều thứ cần xem xét hơn, chẳng hạn như những thứ bạn muốn tính đến. Ví dụ:
- Bạn có muốn hiển thị thông báo hiện tại thay vì thông báo bắt đầu không?
- Bạn muốn cho phép người dùng đánh dấu từng thư là đã đọc hay chỉ là chuỗi?
Bạn cần phải tính đến tất cả những điều này trong khi thiết kế cơ sở dữ liệu của mình.