我有一个关于如何构建数据库的问题。我有一个 reddit 式的投票系统。项目可以获得选票。但每个项目属于一个主题,每个主题属于一个类别。虽然只有项目可以获得投票,但我希望能够访问主题和类别内的投票数。关于如何实现这一目标有什么建议吗?
我发现有 4 种主要方法:
- 对投票进行反规范化,并将投票存储在项目表、主题表和类别表的属性内。然后,每当发生投票/否决时,我就需要更新所有 3 个。
- 创建单独的“投票”模型。投票属于项目,项目属于主题,主题属于类别。然后,每当我需要访问任何内容时,我都可以通过链查询投票数。
- 只有项目和投票。项目将具有类别和主题属性。然后我会查询主题内的项目并计算它们的投票数..
- 学习使用 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/