【发布时间】:2019-07-16 23:20:05
【问题描述】:
假设我们进行了一项调查,其中一些问题涉及多个实体。
例如:
汽车品牌 = [品牌 1、品牌 2、品牌 3、品牌 4...]
将针对每个汽车品牌(循环)询问此问题。
Question Q01 = (Scale 1-10) 你觉得【汽车品牌】的车靠谱吗?
问题 Q02 =(1-10 级)您认为 [汽车品牌] 的汽车是否物有所值?
...
我正在设计一个架构,它将为一些基于 Web 的分析工具提供支持,因此查询性能很重要。
架构将是 3 个表:记录、问题、答案
答案表有两种方法:
A) 表格:答案
QuestionId | AnswerValue | BrandOption
Q01 | 7 | 1
Q01 | 5 | 2
Q01 | 4 | 3
Q01 | 8 | 4
B) 表格:答案
QuestionId | AnswerValue
Q01-1 | 7
Q01-2 | 5
Q01-3 | 4
Q01-4 | 8
查询可以一次针对一个品牌,也可以针对所有品牌,两个查询的优先级相同。
如果我需要执行 group by 之类的操作,选项 A 似乎给了我一些优势,但是如果大多数查询都是针对特定品牌的,那么选项 B 似乎更有效。
想法?
【问题讨论】:
-
选项 A 允许查询具有给定 questionID 的所有答案,而无需删除一些'-
';您可能希望汇总给定问题而不是组合(即所有品牌中有多少赞成票与反对票)。是什么让选项 B 更有效?使用 (brandoption, questionid) 上的索引,您仍然可以非常高效。
标签: sql postgresql database-design