《数据建模-经典教程》读书笔记九:逻辑数据模型

一、关系逻辑模型示例

二、维度逻辑数据模型示例

三、构建关系逻辑数据模型

1、规范化:

        确保每个属性都是单值的,并且提供一个完全的、唯一的依赖于主键的事实。

        单值意味着一个属性只能包含一则信息。如果ConsumerName(消费者姓名)既包含消费者姓氏,又包含消费者名字,那么我们应该将消费者姓名分解为两个属性:Consumer FirstName(消费者姓氏)和Consumer LastName(消费者名字)。

        提供一个事实意味着给定的一个主键,由该主键标识的每个属性都不会超过一个。如果 Customer Identifer(客户标识符)值为“123”,但返回3个客户名(Smith、Jones 以及 Roberts),那么这种情况就违背了规范化的定义.

        完全的则意味着主键是唯一能标识实体实例的最小的属性集合。如果实体主键内有两个属性,但是只有其中一个是唯一性要求所必需的,那么另外一个应从主键中移除。

        唯一的则意味着主键决定的每一个属性只提供一个事实,即不存在隐藏依赖。比如订单按时是否指标,由订单实际交付日期是否和计划日期一致有关,和订单号无关,这种派生属性应该从规范化模型中移除。

  第一范式(1NF)

        第一范式就是确保每个属性都是单值的,这意味着对于给定的主键值,第一范式要求每个属性最多只有一个值依赖于该主键值。

        1)将重复属性移至新实体。当实体内存在两个或更多一样的属性,其称为重复属性。属性重复违背第一范式的原因是:当给定一个主键时,可以在一个属性上得到一个以上的值。重复属性经常采用有序编码作为属性名的一部分。可以尝试着提出一些疑问。这里介绍一个问题模板“一个[实体名]可以拥有不止一个[属性名]吗?”

        2)划分多值属性。多值属性是指在一个属性内存储了至少两个不同的值。换言之,有两个不同的业务概念隐藏在一个属性中。例如,Employee Name(员工姓名)包含了Employee First Name(名)和 Employee Last Name(姓)。可以尝试着提出一些疑问。这里介绍一个问题模板“[属性名]包含不止一则业务信息吗?“

        

第二范式(2NF)

        第二范式用来确保完全性,这意味着每个实体都必须含有最小的属性集合来唯一标识每一个实体实例。为了明确是否具备最小的主键,可以提出一些疑问。这里所使用的提问模板为“是否主键中的所有属性都是检索单一[属性名]的实例所必须的?”

第三范式(3NF)

        第三范式需要移除隐藏的依赖。每个属性都必须直接依赖于主键,而不依赖于实体内的其他属性。正如1NF和2NF一样,我们仍可以提出很多疑问来发现隐藏依赖,这里所使用的问题模板为“[属性名]值的检索依赖于该实体内的其他属性吗?”

2、抽象

        规范化是作用于关系逻辑模型上的强制性技术,而抽象则是一项可选技术。抽象通过重定义和将一些实体、属性、关系在模型范围内结合成更通用的条目,为数据模型注入灵活性。

        抽象带来极大灵活性的同时,也伴随着以下3个方面的端:

        1)降低了交流性:抽象后的概念,使得模型所表述的内容不再明确、具体,即当我们抽象时,经常会将列名转换为实体实例。例如,抽象后、Employee 不再作为一个明确的实体,而变成Party Role 的一个实体实例。

        2)损失业务规则:当我们使用抽象时,业务规则也会有所损失。更明确地说,在抽象之前,可以使用数据模型实施业务规则,而抽象之后则需用程序代码等其他方式来确保规则。例如,想确保一个Employee(员工)必须有相应的 Start Date(入职日期),但是经抽象之后的数据模型,则不能保证此规则。

        3)增大开发难度:抽象后,需要富有经验的程序开发人员实现,当加载一个抽象结构时,需要将属性转化为值,或者在用抽象源填充抽象结构时,又需要将值转化为属性。试想,用抽象源Employee 填充Party Role。所以,对于程序员而言,直接使用Employee来加载数据要简单很多,而且程序代码变得精简,程序加载速度也提高不少。

四、创建维度逻辑数据模型

1、量度计可以划分为以下4种类型之一:

        聚集。聚集量度计中存储信息的粒度层次要高于事务粒度层次。

        原子。其中包含了业务中可用的最低层的细节数据,其细节水平层次与操作系统中存在的细节水平一致。

        累积。又称累加。累积关注的是完成一次业务流程需要多长时间。

        快照。记录了实体生命周期中与特定步骤相关的时间信息。例如销售的快照信息可能包含订单何时被创建、确认、运输、交付以及支付。

2、维度可以划分为以下6种维度类型。

        固定维度。固定维度中包含的值不随时间改变。如性别维度。其值为:男和女

        退化维度。维度的属性都被移至事实表中。最典型的退化维度是原始维度中仅包含单一的数据属性。比如类似订单号这样的事务标识。

        多值维度。可以用来解决属性或字段存在多值的情况。

        不齐整维度。在一个不齐整维度中,至少有一个成员的父成员在该维度的直接上级维度中缺失。不齐整维度允许层级的深度是不确定的。例如,由国家、州、市组成的3级维度中,某些城市没有对应的州。

        收缩维度。依附于测度计,并且通常只包含少量非量度性属性。常应用于大块文本数据,文本与测度计通常具有相同的细节水平。

        渐变类型0~6。

                渐变维度(SCD)类型0和固定维度的概念一致,其值不随时间变化。

                SCD类型1意味着仅仅存储当前维度成员的值,而忽略数值的历史变化。

                SCD类型2意味着需要存储所有的历史数据(类型2是种时间机器)。

                SCD类型3意味着仅仅需要记录一部分历史信息,如当前状态和最近状态或当前状态和原始状态。

                SCD类型6则表示存在复杂维度,该维度的历史可能存在多种变化。

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值