mysql - 如何构建分类投票数据库?

标签 mysql ruby-on-rails database database-design voting

我有一个关于如何构建数据库的问题。我有一个 reddit 式的投票系统。项目可以获得选票。但每个项目属于一个主题,每个主题属于一个类别。虽然只有项目可以获得投票,但我希望能够访问主题和类别内的投票数。关于如何实现这一目标有什么建议吗?

我发现有 4 种主要方法:

  1. 对投票进行反规范化,并将投票存储在项目表、主题表和类别表的属性内。然后,每当发生投票/否决时,我就需要更新所有 3 个。
  2. 创建单独的“投票”模型。投票属于项目,项目属于主题,主题属于类别。然后,每当我需要访问任何内容时,我都可以通过链查询投票数。
  3. 只有项目和投票。项目将具有类别和主题属性。然后我会查询主题内的项目并计算它们的投票数..
  4. 学习使用 NoSQL 数据库系统。

额外信息:我正在使用 Rails,目前我只了解 MYSQL。现在是我应该学习像 Mongo 这样的东西的时候了吗?这真的只能通过 Hadoop 来实现吗?我可以在 MySQL 中完成这个任务吗?谢谢!

最佳答案

Create a separate 'vote' model. Votes belong to items, items to topics, and topics to categories. Then I can just query number of votes through the chain whenever I need to access anything.

这是执行您所说的操作的最灵活的方式。

Learn to use a NoSQL db system.

不适用于您当前的项目。

Is this a time I should learn something like Mongo?

没有。

Can this only really be accomplished with Hadoop?

没有。任何 SQL 数据库都可以做到这一点。任何 SQL 数据库是否可以管理您正在计划的任何内容是另一个问题。不同的平台规模不同。

Can I accomplish this in MySQL.

是的,很容易。

关于mysql - 如何构建分类投票数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8104592/

相关文章:

MySQL:从交叉连接行返回总记录数?

mysql - 搜索字符串 mysql db 可以有空格,在另一个字符串中等

ruby-on-rails - 设计 Oauth Twitter:OAuth::Unauthorized Forbidden 403

ruby-on-rails - Rails3.1 中的测试非常慢。有某种解决方案可以更快地加载测试吗?

html - 在 CSS : rails 4 + bootstrap 3 中使用 glyphicon 作为背景图片

sql - 时态查询和非时态查询有什么区别

database - 存储和搜索商店的开门/关门时间

mysql - 了解 InnoDB 可重复读隔离级别快照

java - 我无法使用 hibernate 本地 session 工厂对象更新特定行的 'shop_table' 表值?

php - 关于使用 PHP 和 MySQL 编写搜索功能的建议