Review Service
Thiết kế hệ thống đánh giá sản phẩm có Vote và Review.
Dạ, hệ thống đánh giá sản phẩm gồm Vote (rating) và Review (nhận xét), em thiết kế như sau:
1. Entity Design:
product_review
table:
id
BIGINT
Khóa chính
product_id
BIGINT
FK đến bảng sản phẩm
user_id
BIGINT
FK đến bảng người dùng
rating
INT (1–5)
Điểm vote
comment
TEXT
Review chi tiết
created_at
TIMESTAMP
Ngày tạo
updated_at
TIMESTAMP
Ngày cập nhật (nếu sửa review)
Constraint: 1 user chỉ được đánh giá 1 lần/1 sản phẩm → unique (product_id, user_id)
2. Business logic:
Thêm/Sửa review: Nếu tồn tại thì update, không thì insert.
Tính điểm trung bình:
Dùng SQL
AVG(rating)
theo product_id hoặc cache lại trongproduct
table.
Hiển thị review:
Sắp xếp theo thời gian (mới nhất).
Có thể lọc theo rating (5 sao, 1 sao...).
3. Tối ưu & mở rộng:
Index: tạo index cho
product_id
,user_id
.Cache điểm trung bình: dùng Redis hoặc field
avg_rating
trongproduct
+ trigger/cron update.Moderation: admin có quyền ẩn review vi phạm.
Pagination: giới hạn số review trả về mỗi page.
4. Optional features:
Review có ảnh.
Upvote/downvote review (giống Shopee, Amazon).
Badge “đã mua hàng” (verify purchaser).
Thiết kế này đảm bảo hệ thống đánh giá minh bạch, dễ mở rộng và truy vấn hiệu quả.
Last updated