2011-04-28 18 views
1

我使用Ruby on Rails的\ MySQL和我想实现具备下列条件\特点考虑了大量的用户和文章的评级系统:如何设计一个评分系统,允许每个用户在考虑表现的情况下投一票?

  • 每篇文章有3个评价指标分析
  • 每标准是一个二元函数(例如:好\坏,+1 \ -1,...)
  • 每个用户都可以投票只能用时间每标准及每件侵权物品

我想知道在这些条件下,为了确保最佳性能(数据库查询的响应时间,CPU超载...),设计\思考数据库(例如UML)的最佳方法\技术是什么? )。

P.S .:我认为这是一个为Stackoverflow网站工作的评分系统。

回答

2

的评级创建一个表:

CREATE TABLE vote 
     (
     userId INT NOT NULL, 
     articleId INT NOT NULL, 
     criterion ENUM('language', 'usefulness', 'depth') NOT NULL, -- or whatever 
     value BOOLEAN NOT NULL, 
     PRIMARY KEY (userId, articleId, criterion) 
     ) 

这将允许每个用户每标准投每篇文章最多一票。

criterionenum这只允许三个不同的标准。这个约束是在元数据级别的:这意味着如果你想添加条件,你将不得不改变表的定义而不是数据。

+0

如果我创建一个表来存储每个标准的每个投票(也就是说,创建3个表,每个标准一个表),那么会有性能改进? – user502052 2011-04-28 21:49:39

+0

@user:取决于查询。例如,这不会让您轻松高效地构建SO风格的活动列表(对单个列表中排序的所有标准进行投票)。 – Quassnoi 2011-04-28 21:54:19

相关问题