商品评价系统通过MySQL实现,设计products、users和reviews表,支持评分、评论与回复;利用外键关联和索引优化提升性能,通过LEFT JOIN查询树状评论结构,结合状态字段管理审核流程,并可扩展图片、点赞等功能。

商品评价系统是电商平台中常见的功能模块,使用 MySQL 可以很好地支持用户对商品的评分、评论、回复等操作。下面介绍如何设计数据库结构并实现核心功能。
要实现一个基本的商品评价系统,至少需要以下几张表:
(1)商品表(products)
(2)用户表(users)
(3)评价表(reviews)
示例建表语句:
CREATE TABLE reviews (
id INT AUTO_INCREMENT PRIMARY KEY,
product_id INT NOT NULL,
user_id INT NOT NULL,
rating TINYINT NOT NULL CHECK (rating BETWEEN 1 AND 5),
comment TEXT,
parent_id INT DEFAULT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending',
FOREIGN KEY (product_id) REFERENCES products(id),
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (parent_id) REFERENCES reviews(id)
);
(1)添加评价
用户购买商品后可以提交评分和评论。如果是回复某条评论,则设置 parent_id 指向原评论 ID。
INSERT INTO reviews (product_id, user_id, rating, comment, parent_id) VALUES (101, 201, 5, '商品很棒!', NULL);
回复某条评论:
INSERT INTO reviews (product_id, user_id, rating, comment, parent_id) VALUES (101, 202, 5, '谢谢你的认可!', 1);
(2)查询商品的所有评价(含回复)
通过 LEFT JOIN 查询主评论及其回复:
SELECT r1.id, r1.user_id, u.username, r1.rating, r1.comment, r1.created_at, r2.id AS reply_id, r2.user_id AS reply_user_id, u2.username AS reply_username, r2.comment AS reply_comment FROM reviews r1 LEFT JOIN reviews r2 ON r1.id = r2.parent_id JOIN users u ON r1.user_id = u.id LEFT JOIN users u2 ON r2.user_id = u2.id WHERE r1.product_id = 101 AND r1.parent_id IS NULL AND r1.status = 'approved' ORDER BY r1.created_at DESC, r2.created_at ASC;
这条 SQL 能查出所有主评论及它们的回复,适合在页面上展示树状结构。
(3)统计商品平均评分
SELECT AVG(rating) AS avg_rating, COUNT(*) AS review_count FROM reviews WHERE product_id = 101 AND parent_id IS NULL AND status = 'approved';
索引优化
状态管理
防重复评价
基本上就这些。用好外键、索引和合理的查询逻辑,MySQL 完全能支撑起一个稳定高效的评价系统。
以上就是如何使用mysql实现商品评价系统的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号