【问题标题】:Data Vault Modelling Foreign Keys数据保险库建模外键
【发布时间】:2019-11-05 15:27:06
【问题描述】:
我有一个关于特定数据仓库建模的问题。
我有一个捕获呼叫中心呼叫信息的源表,如下所示:
CallId(业务密钥)
日期
呼叫警报
call_acw
ETC
同一个源表中也有一堆外键,像这样:
RouteID(呼叫最终在哪条线上结束)
ConnectionType(电话、电子邮件等)
通过每个外键,可以检索有关该键的额外信息(未链接到 CALL)。
我的问题是如何在我的模型中建模这些外键?我是将它们作为属性保存在我的卫星中还是将它们建模为链接?还是我没有想到的其他选择?
谢谢!!
【问题讨论】:
标签:
data-modeling
data-vault
【解决方案1】:
我将专注于您给出的一个示例(RouteID),但每个示例的讨论可能都相同。
首先要记住的是,Data Vault 的目标是对业务和业务流程进行建模,而不是对存储数据的系统进行建模。外键可能表示某种有意义的东西(两个集线器之间的链接),或者它们可能不会(您可能不需要复制的数据库中的标准化产品)。
在您的案例中,第一步是考虑 RouteID 及其链接到的数据对业务意味着什么。如果路线(或它所代表的线路)本身对业务来说是一个有意义的概念,那么它可能需要它自己的集线器、与之相关的数据的卫星,然后链接表格以将其连接到您的呼叫数据。
另一方面,数据可能仅具有对另一个集线器(在您的情况下为呼叫)进行分类的意义,在这种情况下,请考虑将其反规范化到连接到呼叫集线器的卫星中。请记住,您可以将多个卫星连接到一个集线器,没有什么可以阻止您拥有呼叫路由卫星、连接类型卫星等等。
您需要为每个外键做出此决定,并且最终可能会为每个外键做出不同的选择。例如,接听电话的员工几乎肯定会链接到另一个中心,因为您几乎肯定有其他数据要将员工链接到。您提到的连接类型本身不太可能有意义,因此更有可能构成卫星的一部分。