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)Review (nhận xét), em thiết kế như sau:


1. Entity Design:

product_review table:

Field
Type
Description

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 trong product 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 trong product + 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