我正在尝试制作数据仓库的雪花模式,但事实证明,有多种类型的数据适合中心。 例如:[factSales]有[order],[employee],[customer],[shipping]等... 那么以上所有也有[地址]。我在哪里可以完全适合[地址]表? 我想避免数据重复,因此不能将属性放在每个其他表中。
答案 0 :(得分:0)
应将客户的地址捕获为客户维度上的字段,例如"街道名称","邮政编码","城市"和#34;国家"。同样,"送货地址" (通常)是客户的特征,因此它也应该是客户维度中的一组字段。
"订单地址"取决于其功能含义:它可以是商店的地址或放置订单的其他销售渠道(例如网站),在这种情况下,地址将是商店/渠道维度中的字段。
所以,如果我理解正确,你的模型的结构类似于:
维度将包含用于存储相应地址的字段,例如Customer维度可以有三组文本字段来存储每个地址:一个用于家庭住址,工作地址和送货地址。
这也可以通过具有单独的地址维度来建模,该维度包含数据中存在的所有可能的地址,并由所有其他维度引用。例如,在这种情况下,Customer维度可以具有三个到Address维度的外键(引用),而不是之前的实际地址:一个用于归属地址,工作地址和送货地址。但是前一种方法可能更容易开始。
在星型模式中存在重复数据没有问题,具有层次结构的大多数维度将按设计具有重复/冗余数据,因为模型是故意非规范化的:https://en.wikipedia.org/wiki/Denormalization
答案 1 :(得分:0)
我认为可以为您的Snowflake数据仓库模式提供某种可视化效果。
您尝试过SqlDBM吗?它是唯一可用于设计/建模/可视化雪花数据仓库的工具。这是具有非常友好的用户界面的在线工具。
在此处详细了解:http://blog.sqldbm.com/snowflake-data-modelling-with-sqldbm/