Database design 在表中表示多维数据的最佳实践是什么?
我有调查统计数据——对于每个答案(有任意数量的答案)——我需要知道年龄组和收入组。(例如,回答“a”的有23名年龄在30岁到35岁之间的人,11名收入水平在10000到15000之间的人。7名年龄在30岁到35岁之间收入水平在10000到15000之间的人(这可以通过前两个要求推断出来。这些组是预定义的)。Database design 在表中表示多维数据的最佳实践是什么?,database-design,Database Design,我有调查统计数据——对于每个答案(有任意数量的答案)——我需要知道年龄组和收入组。(例如,回答“a”的有23名年龄在30岁到35岁之间的人,11名收入水平在10000到15000之间的人。7名年龄在30岁到35岁之间收入水平在10000到15000之间的人(这可以通过前两个要求推断出来。这些组是预定义的)。这实际上是一个“立方体”使用:第一维度-答案id,第二维度-年龄组,第三维度-收入组。 我应该如何在数据库中表示它(使用表格)?您能对我需要3维以上数据的情况进行概括吗? 提前谢谢大家。可能就
这实际上是一个“立方体”使用:
第一维度-答案id,第二维度-年龄组,第三维度-收入组。
我应该如何在数据库中表示它(使用表格)?您能对我需要3维以上数据的情况进行概括吗?
提前谢谢大家。可能就是您想要的。如果每个答案都有两个维度,那么您可以有一个包含三列的表,这三列就是您的三个维度
一般来说,n列表格是表示n个不同维度信息的关系方式。该示例有五个维度:
用户
,问题
,答案
,调查
,和人口统计
。这里的人口统计
表格用于冻结当前的收入水平和年龄组调查时间——用户可以随时间改变收入和年龄。user
表中的CurrentDemographicID
在调查前预先计算,然后复制到UserQA
表的DemographicKey
select
AgeGroup
, IncomeLevel
, count(1) as NumberOfPeople
from UserQA as f
join Question as q on q.QuestionID = f.QuestionID
join Answer as a on a.AnswerID = f.AnswerID
join Demographic as d on d.DemographicID = f.DemographicID
join Survey as s on s.SurveyID = f.SurveyID
where QuestionFullName = 'specific question here'
and AnswerFullName = 'specific answer here'
and SurveyFullName = 'specific survey here'
group by AgeGroup, IncomeLevel
order by AgeGroup, IncomeLevel ;
另外,看看很有可能否决devnull答案的人在工业数据建模方面经验不足,或者只在简单的练习方面有经验 一般来说,要使多维分析有效,您需要两个层次的数据建模
- 基底细节捕捉
- 抽象立方体
我这里有一个属性和参数的可变维度关系模型:。不完全是EAV,但给出了工业多维数据建模需要的概念。下次,不要使用
而是使用2个空格和[Enter]换行;)@Nick:++谢谢你的提示,为什么这很重要?就因为它更容易?