首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库设计最佳实践-调查问答

数据库设计最佳实践-调查问答
EN

Stack Overflow用户
提问于 2013-11-22 16:20:57
回答 1查看 407关注 0票数 0

我现在有一个数据库设置来收集问题的答案(Rails 4.0 + MySQL)。要解释我们所称的“网格问题”,例如“您在以下每一家商店中的每一家购物的频率?”而不是拥有

代码语言:javascript
运行
复制
question has_many answers
answer belongs_to question
answer belongs_to user

我跟着:

代码语言:javascript
运行
复制
question has_many data_fields
data_field has_many answers
answer belongs_to data_field
answer belongs_to user

因此,每个问题都有一个或更多的data_fields来说明每种类型的商店。

最近,我有一位数据库顾问坚持认为,更好的方法是回到一个简单的answer belongs_to question,在试题表中添加3列来确定1)是一个定义问题的组,2)“组号”,3)组内的位置

他的解释是,如果我发现自己需要在所有问题上生成一份报告,那就更简单了--我不需要做一个工会来完成这个任务。但我很难说服自己,在呈现问题输入和生成数据以供分析时,它给用户界面带来的好处大于它带来的压力。

建立这个数据库的最好方法是什么?我知道这有点主观,但从技术上讲,应该有一个最佳实践,所以希望我能发布这篇文章.

EN

Stack Overflow用户

回答已采纳

发布于 2013-11-22 16:59:50

审议情况:

  1. “团体”是与“问题”有关的东西。这与答案无关。在定义问题和答案之间的关系时,不需要考虑“组”。 问题有很多答案。那是土生土长。别再想了。

  1. 交叉表查询是不可避免的。当然,如果可能的话,您需要尽量减少这种情况,但是如果没有交叉表查询,Relational将不会保留其名称。

  1. 关于“小组”,就像迈克说的,如果一个问题只有一个组,就可以把它作为一个领域来讨论,以提高速度。但是,这还是有缺点的。如果用户想订阅多个组(如Quora),如何在问题中的紧密耦合组中进行订阅?您真的能在这里消除联接查询吗?

结论:

选择最传统的方法,当您真正遇到瓶颈时,会在之后进行优化。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20149600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档