02 建立数据模型
# 02 建立数据模型
# 现实世界的数据化过程
现实世界只有数据化后 才能由计算机系统来处理这些代表现实世界的数据
- 现实世界
- 由实际事物组成 事物之间联系错综复杂
- 事物和事物特性
- 信息世界
- 概念模型描述
- 现实世界在人脑中的反应
- 事物和事物特性 ↔️ 实体和实体属性
- 数据世界
- 数据模型描述
- 信息世界数据化后的产物
- 实体和实体属性 ↔️ 记录和数据项
# 概念模型
在进行数据库设计时 必须首先给出概念模型
# 基本概念
表示概念模型的最常用模型是 实体-联系模型 (Entity-Relationship Model) E-R
包含三个主要的元素类型 : 实体集 属性 联系
# 实体 Entity
实体是客观事物的反应
既可以是某种概念,也可以是实际存在的对象
实体必须可以相互区分
# 属性 Attribute
事物是有特性的
属性有 属性名 和 属性值之分
如 性别 是属性名 而男性是性别属性的一个属性值
# 域 Domain
任一实体在任一属性上的取值都是有限制的
一个属性的取值范围 就是这个属性的域
# 实体集 Entity Set
所有属性名完全相同的实体往往集合放在一起 称为实体集
同一个实体集中没有完全相同的实体
# 实体型 Entity Type
实体集的名称及其所有属性名的集合称为实体集
在不引起混淆的情况下 实体集往往简称为 实体
# 码 Key
在一个实体集中 根据一个或者几个属性的值 可唯一确定每一个实体
而又没有包含多余的属性 则称此属性或属性组为该实体集的码
有时也称 候选吗 Candidate Key 也称作 键
# E-R 图的基本表示方式
实体-联系E-R
数据模型所采用的三个主要概念是: 实体集 联系集 属性
E-R
模型是一种静态信息模型 只能反映当前状态 不能反映实体的变化过程 用矩形框表示实体集用椭圆表示属性
实体的码用下划线表示
实体集之间的联系集用菱形表示
用无向边与相关实体集连接
无向边上写上联系集的类型
# 联系
两个实体集之间的联系可归纳为以下三类
- 一对一联系
1:1
- 一对多联系
1:n
或者n:1
- 多对多联系
n:n
# 多元联系
可以表示两个以上实体集之间的联系 称为多元联系
一个多元联系 总是 可以用多个不同的二元联系来替代
大多数情况下 使用多元联系集比二元联系集更方便 原因:
- 多元联系集可以清晰地表示出几个实体集参与到一个联系集的情况 而转换为多个二元联系之后 难以体现这种参与性
- 对于为替代多元联系集而引进的实体集 有时不得不为其创建一个标志码 因为每个实体必须相互可以区分 二者也增加了设计的复杂度和存储空间的需求
# 联系的属性
联系也可以具有单独的属性
在有些时候 部分属性既不能作为各个实体集的部分
将属性附属给实体集之间的联系 会更加准确
# 自身联系
在一个联系中 一个实体集可以出现两次或者多次 扮演多个不同的角色 称为自身联系
# 弱 / 强 实体集
一个实体集的属性不足以形成码 这样的实体集就称为弱实体集 Weak Entity
与此相对的 有码的实体集 称为 强实体集 Strong Entity
弱实体集常常出现的以下两种情况中
- 由联系转换的来的联系实体集中
- 这些实体集没有自己的码属性 他们的码是由他们所连接实体的码属性构成的
- 子类实体中
# 子类 和 Is-a 层次联系
实体集 A 属于另一 实体集 B A 中的实体都有特殊的属性需要描述
且这些特殊属性对 B 中其他的实体无意义
称 A 是 B 的子类
A B 之间存在一种层次联系 Is - a
属于
# E - R 模型的设计方法
三条设计原则
相对原则
建模过程实际上是一个对对象的抽象过程
因此 不同人或者同一个人在不同情况下 抽象程度可能不同
一致原则
同一对象在不同业务系统中的抽象结果要求保持一致
简单原则
现实世界中 能作为属性对待的 尽量作为属性处理
- 属性不在具有需要描述的性质 即在含义上是不可分的数据项
- 属性不再能与其他实体集具有联系
# 数据模型
数据模型是数据库系统的核心和基础 任何 DBMS 都支持一种数据模型
任何一种数据模型都规定了一种数据结构 描述了系统的静态特性
最后 数据模型还必须提供定义完整性约束条件的手段 并在操作中自动检查之
# 关系模型
与层次模型和网状模型相比 关系模型概念简单 清晰 并且具有严格的数据基础
形成了关系数据理论 操作也直观 容易 因此易学易用
支持关系模型的 DMBS 称为关系型数据库管理系统 Relational Database Management System
RDBMS
# 关系模型数据结构以及基本概念
主要术语
关系 Relation
一个关系可用一个表来表示
属性 Attribute
关系中的每一列即为一个属性 每个属性都有一个属性名 且不能重复
域 Domain
一个属性的取值范围就是该属性的域
元组 Tuple
关系中的一行数据总成为一个元组
分量 Component
一个元组在一个属性上的值称为该元组在此属性上的分量
候选吗 Candidate Key
一个关系中的某个属性或属性组的值能唯一标识关系中的各个元组 且又不含多余的属性 则称为一个候选码 有时候也称为 码
主码 Primary Key
若一个关系中有多个候选码 则选取其中一个为主码
每个关系有且仅有一个主码
主属性 Main Attribute
包含在任何一个候选码中的属性称为主属性
外部码 Foreign Key
若 A 是基本关系 R1 的属性(组) 但不是 R1 的码 且 A 与基本关系 R2 的码 K 相对应 则称 A 是 R1 的外部码
R1 和 R2 不一定是不同的关系
关系模式
一个关系的关系名及其全部属性名的集合建成为该关系的关系模式
关系名(属性名 1 , 属性名 2 ,... , 属性名 n )
关系具有以下 6 个基本性质
- 关系中的每个分量都是不可分的基本数据项
- 属性列是同一个域
- 不同的列可以出自同一个域
- 列的次序可以相互交换
- 行的顺序也可以相互交换
- 一个关系中的任意两个元组不能相同
# 关系的完整性约束
实体完整性
若属性 A 是基本关系 R 的一个主属性 则任何元组在 A 上的分量都不能为空
参照完整性
参照完整性是对关系之间引用数据的一种限制
用户定义的完整性
例如数据的大小范围等用户自己定义的数据约束
# E -R 模型向关系模型的转化
TBD
# 数据模型与数据库系统的发展
TBD