Avatar
2
hovanvydut Beginner
hovanvydut Beginner
Comment, Reply, Notification Database Design
Tình cờ là em cũng đang tự làm một pet project (một blog cho phép mọi người đăng bài) trước khi biết đến stackask, và em cũng đang làm tính năng comment, reply, notification. Thì hình dứoi đây là ảnh em thiết kế database hiện tại.

Em làm 2 table là comment/reply là để lúc em load thì chỉ load comment và số reply, và chỉ load reply khi người dùng chọn "show more reply" thì mới load các reply của comment đấy. Nhưng chia 2 bảng như này thì em lại phải làm 2 bảng vote cho comment và reply. Ngoài ra em cũng làm bảng notification như vậy, khi mà có ngừoi reply, comment, up/down vote comment/reply thì insert vào bảng notification. Mọi người cho em góp ý table như vậy được chưa ạ?

Và em thắc mắc xíu là trang stackask của mình hình như phần notification nó realtime ạ, em thấy ko cần load trang mà nó vẫn show noti mới cho mình. Không biết bên dưới nó dùng gì ạ?

 

Em cảm ơn mọi ngừoi đã đọc post ạ.

  • Answer
database
Remain: 5
2 Answers
Avatar
tvd12 Beginner
tvd12 Beginner
The Best Answer
  1. Em có thể tạo bảng vote thế này thì em sẽ không cần phải tạo ra 2 bảng comment em ạ
create table vote (
id bigint,
voted_user_id bigint,
vote_up tinyint default true,
source_id bigint, /*là id của comment hoặc reply*/
source_type varchar(45), /*là comment hay reply*/
primary key (id)
)
2. Hiện tại thì noti của bọn anh chưa realtime em ạ, em phải click vào 1 link nào đó thì nó mới hiện thông báo mới, bọn anh sẽ sớm nhúng websocket vào để nó realtime em ạ
  • 1
  • Reply
Nếu làm như anh thì em cod thể dùng bảng vote này cho cả article với series dùng chung lun ạ. Hay là em tạo thêm một bảng vote nữa dùng chung cho article và series anh nhỉ  –  hovanvydut 1628286091000
Em chỉ nên có 1 bảng vote thôi em ạ, nó có liên quan đến thống kê sau này nữa em ạ  –  monkey 1628287405000
Dạ em cảm ơn ạ  –  hovanvydut 1628288524000
Anh cho em hỏi là phần comment, reply em làm như hình trên thì việc đếm tổng comment+reply thì phải duyệt từng comment rồi đếm số reply của comment đó rồi cộng lại. Không biết anh có cách thiết kế khác không ạ. Hoặc anh có thể share cách anh thiết kế comment reply của stackask thì tuyệt vời ạ ^^  –  hovanvydut 1628308283000
Avatar
tvd12 Beginner
tvd12 Beginner
Nếu em thiết kế kiểu kia thì đúng là phải làm thế em ạ, bọn anh chỉ có 1 bảng comment duy nhất thôi, reply cũng là 1 loại comment thôi em ạ
  • 0
  • Reply
Dạ, em cũng mới thiết kế lại bảng commeny, reply gộp lại 1. Sau đó dùng một closure table để thể hiện relationship giữa các comment với nhau (parent_comment_id, child_comment_id)  –  hovanvydut 1628370583000