评估系统的MySQL表结构

时间:2010-01-07 08:39:04

标签: mysql

我想创建一个评级系统,跟踪谁投票选出哪篇文章,以及该文章收到的投票数以及每次投票的价值。

我想知道最好的方法是什么?

以下是我目前的情况。

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`)
)

1 个答案:

答案 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
)

(此处和其他表格中缺少索引)

如果你想要对投票数进行非标准化,那么它应该放在文章表中,但是如果你没有太多记录,我宁愿建议用常规计数来计算它并将前面放在缓存中(每次对文章进行新的投票时都会刷新。