我想创建一个评级系统,跟踪谁投票选出哪篇文章,以及该文章收到的投票数以及每次投票的价值。
我想知道最好的方法是什么?
以下是我目前的情况。
CREATE TABLE IF NOT EXISTS `vote` (
`counter` int(8) NOT NULL default '0',
`value` int(8) NOT NULL default '0'
)
CREATE TABLE articles (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL,
`title` TEXT NOT NULL,
`summary` TEXT DEFAULT NULL,
`content` LONGTEXT NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS `users` (
`id` int(8) NOT NULL auto_increment,
`username` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
)
答案 0 :(得分:0)
您需要在某个地方跟踪您的用户
CREATE TABLE IF NOT EXISTS `vote` (
`user_id` int(8) NOT NULL,
`article_id` int(8) NOT NULL,
`value` int(8) default 0,
`datetime` timestamp DEFAULT CURRENT_TIMESTAMP
)
(此处和其他表格中缺少索引)
如果你想要对投票数进行非标准化,那么它应该放在文章表中,但是如果你没有太多记录,我宁愿建议用常规计数来计算它并将前面放在缓存中(每次对文章进行新的投票时都会刷新。