Mọi người đang thiết kế DB để lưu bài viết và tương tác giữa user với nhau như nào?
Như tiêu đề thì mình đang tìm hiểu để thiết kế DB phục vụ cho việc tương tác giữa user-user, user-post và thông báo
Mình đang muốn làm như này:
- Người dùng có thể bình luận và nhận được thông báo từ những bình luận khác trong bài viết mà mình đã bình luận
- Theo dõi bài viết
- Theo dõi user khác
- Vote điểm cho bài viết
- Nhận thông báo khi người dùng mình đang theo dõi có bài viết mới
Mọi người cho mình chút ý tưởng để thiết kế DB thuận tiện cho việc mở rộng thêm những tính năng tương tác sau này với. Thank mọi người
1 CÂU TRẢ LỜI
Mình nghĩ về cấu trúc DB có thể làm như này:
-
Bảng users để lưu tài khoản người dùng
-
Bảng subscriptions để biết được người dùng đăng ký theo dõi gì. Sử dụng relation
Polymorphic Relations
của laravel, mình dùng relation này thì thêm 2 colums làsubscribable_id
,subscribable_type
. Để phân biệt được các đối tượng được người dùng đăng ký theo dõi, vd:
- subscribable_id: 100
- subscribable_type: Post | User
-
Bảng comments để lưu bình luận của người dùng Nếu người dùng comment được cho nhiều loại đối tượng thì mình lại dùng
Polymorphic Relations
giống subscriptions ở bên trên. -
Phần thông báo thì sử dụng chức năng notification của Laravel nó sẽ tạo table cho mình.
-
Về việc gửi thông báo thì là xử lý trong code của mình thôi.
Người dùng có thể bình luận và nhận được thông báo từ những bình luận khác trong bài viết mà mình đã bình luận
Tức là bạn muốn gửi thông báo tới tất cả những ai cùng comment trong bài đấy. Khi người dùng A tạo comment thì mình lấy tất cả người cùng comment trong bài viết đấy và gửi thông báo tới họ. Chung quy phần này là xử lý logic trong code thôi.
@huukimit thank bác nhé, nhiệt tình quá . À ở phần thông báo comment thì cho mình hỏi luôn là mình nên thông báo cho tất cả mọi người hay nên làm mention và thông báo cho người đó thôi nhỉ?
@TuanAnh9996 Cái này thì phụ thuộc vào yêu cầu của hệ thống bạn làm, bạn hãy xem xét xem nên để như nào thì hợp lý với hệ thống. Có thể làm như bọn Facebook cũng được.
@TuanAnh9996 You are welcome!
Bạn định clone Viblo à
@huukimit 😂😂 mình chỉ đăng vì mình muốn hỏi ý kiến mọi người thôi mà
@huukimit mình đang làm 1 trang để mọi người chia sẽ công thức nấu ăn..nhưng phần DB như này mình lại chưa viết bao giờ nên hỏi mn để học hỏi kinh nghiệm