我目前正在设计电子商务网络应用程序的数据库。
我需要添加使用 5 星评级系统(例如亚马逊)对另一个用户进行评级的可能性。我认为我必须在数据库中再添加一张表(例如 USER_RATING)。但是与我的 USER 表使用什么样的关系呢?
我的USER
表具有以下字段:
user_id INT <- PK
first_name VARCHAR(35)
last_name VARCHAR(35)
email VARCHAR(254)
表USER_RATING
看起来像这样:
value FLOAT
time TIMESTAMP
最佳答案
您需要记录一个用户对另一个用户进行评分的时间,以防止重复,因此我建议如下所示:
CREATE TABLE user_rating (
rated_user_id INTEGER NOT NULL,
rater_user_id INTEGER NOT NULL,
value FLOAT,
time TIMESTAMP,
PRIMARY KEY (rated_user_id, rater_user_id));
并在 rater_user_id
上创建外键。
根据您的应用程序和您期望的评级数量,也可能值得对设计进行一些非规范化,并记录current_ rating
(即总体)和number_of_ ratings
在 USER
表上。
关于MySQL数据库设计用户评分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27496047/