繁体   English   中英

事实表设计建议

[英]Fact Table Design Suggestions

为简单起见,我有一个交易系统,可以在医生和病人之间记录即时消息。 在医生和患者之间的每次会话结束时,医生填写结果表格,该表格存储在DimOutcome表中,如下所示:

DimOutcome
----------
PK_OutcomeKey
OutcomeCategory1
OutcomeCategory2
OutcomeCategory3
...

我正在寻找设计跟踪消息的事实表的最佳方法。 需要考虑的一件事是,有时聊天会话可能无法回答(即非工作时间联系),然后可以跟进。

设计FactMessage的理想方法是什么,考虑到我需要跟踪每个聊天会话的DimOutcome。

我想我需要为消息创建一个事实而在整个会话中创建另一个事实,这是唯一的方法吗? 我还想跟踪每条消息和总会话之间的时间量?

将跟踪消息的事实表

首先,要注意事实表中通常有数据,可以是聚合的,测量的事实。 维度用于过滤事实表中的数据。 在数据仓库中,其他一切都没有多大意义。 也许标准化的数据库模型会更好地满足您的需求。

需要考虑的一件事是有时聊天会话无法回答

例如,这将是一个维度,即DimSession,保持所有会话的属性,如状态,即未答复。 请注意,会话的其他属性(如参与者)可能在维度DimDoctor和DimPatient中。

你还说,你想跟踪“DimOutcome”。 这有两种可能性。 首先,将此信息保存在“会话”维度中。 因此,您可以根据不同的结果过滤事实表。 另一种可能性是您的事实表中的每个结果都有列。 这样你就可以获得每个结果的会话数量。 这至少可以衡量。 您需要考虑的是事实表的粒度。 每个会话或每天有一个条目吗? 如果您在事实表中使用结果列,则每个会话一个条目可能不是最佳选择,因为您还可以通过按DimSession过滤并在事实表上执行COUNT(*)来获取此信息。

我想我需要为消息创建一个事实而在整个会话中创建另一个事实,这是唯一的方法吗?

我认为整个数据仓库的东西不是你想要的。 规范化的数据结构将更好地满足您的需求。

如果您想了解更多信息,请谷歌寻找星型模式或雪花模式,如果您想了解数据仓库通常是如何实现的。

一个非常缩短的星型模式......

一个非常缩短的星型模式结构

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM