有向数据模型(数据建模-USS)

在统一星型模式中,在构建 Puppini Bridge(或简称桥接表)前,需要先分析物理数据模型(物理表间的关系),Francesco Puppini 推荐通过绘制单向的 ERD实体关系图)来分析,称这种图叫做有向数据模型(ODM,Oriented Data Model),比如:

有向数据模型的模型图的结构是一个有向树(Directed Tree)。实际上在多数实际场景下其实原本的结构是有向无环图(Directed Acyclic Graph),只不过为了方便使用,在绘制模型图时会简化去除其中的多路径只呈现其中一条路径,但在制作桥接表时会全部体现(甚至用派生外键补充原本不存在的连接)。

ODM_example

其中的箭头是单向的(全部从左指向右),并且都只代表多对一(many-to-one,即右边都是主键)的表间连接关系,都是外键指向主键的连接关系

当然,这样的模型图不一定都是呈树形结构的,其中也可能有小闭环的出现(比如图中的 OrderDetails 也可能还存在直接指向 Categories 的箭头)。可以证明的是,如果关于 N 张表的 ERD 中有超过 N-1 条箭头,那么该图中一定存在闭环。最理想的 ERD 结构是树形的,也就是正好有且只有 N-1 条箭头,这样任意两张表之间都只有唯一的一条路径。

“两张表之间只有唯一的一条路径”意味着两张表之间只有唯一的连接方式,这样就无须担心选择了错误的连接方式并且保证了结果的唯一性,因为两可的连接方式可能会导致意想不到的不一致的结果的出现。因此即使不用于构建桥接表的目的,绘制这样的模型图也有利于正确的数据处理。

两可的连接方式得到的结果不一致,说明数据源本身不完备(有数据缺失或冲突),因此多条路径的存在实际上可用于数据的校验

当然,存在闭环不意味着就要从物理表的层面去消除闭环(比如删除其中一张表的外键),这种做法可能会导致信息丢失,况且多路径本身有用的,是可用于校验数据、提升分析性能的。统一星型模式要做的是,在桥接表内部提前做好最佳路径的选择,从而在面向用户的层面上不存在闭环。

有时两可的连接路径得到结果是不一样的,可能其中一条路径比另一条数据更全,也可能两条路径存在数据冲突。因此在桥接表中应该只选择其中最优的一个,没有特别原因不要同时纳入两条路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值