我必须为我的大学的课程设计数据仓库模型和ETL过程。我的数据仓库具有存储有关产品的意见/建议,每个记录应包括:建模数据仓库中的多对多关系
- 注释文本(字符串)
- 产品评分({0,0.5,...,4.5,5})
- 评论作者(字符串)
- 评论日期(日期)
- 产品推荐({是,否})
- 评论选票(INT)
- 评论向下票(INT) 个
- 产品的优点(多字符串,例如{价格,设计,经久耐用,...}),其计
- 产品缺点(许多字符串,例如{声音太大,太重,价格,...})和 其计数
另外数据仓库应该存储有关产品信息:
- 产品类别
- 产品品牌
- 产品型号
我想先创建数据仓库模型,但由于它是多对多关系,因此存储产品优缺点时遇到问题。在正常的关系数据库中,我只是简单地创建关联表,但在这里我不确定如何继续,毕竟我不想规范化事实表。
我在考虑3种方法,第一种,我在下面的图表中提出。我用桥表方法(尽管我不知道是否正确)摆脱了多对多的关系。我不知道它将如何影响查询性能。
第二种方法我可以使用布尔是柱法。在PROS和CONS表格中,我可以为每个可能的值创建一个列,但最多可以有100个不同的优点或缺点。还有一些可能的优点或缺点在时间上不是恒定的。作者在他们的评论中可以列出新的优点或缺点(这是它在数据源中的工作原理),但我不能添加新的列(我不应该更改数据仓库中的数据)。
我正在考虑的第三种方法是保留PROS表中的专业人员,但在1列中,值将使用逗号或其他分隔符分隔,例如, “价格,设计,颜色”。它使事情变得简单,但很难分析或切片&骰子。
我应该在这种情况下使用哪种方法?哪个更适合将数据加载到数据仓库中,因为表单数据源我会得到所有的评论,而且我只想加载自上次加载后的新评论?