第二章 数据模型
数据模型
静态特征:数据的类型、结构、联系、约束
动态特征:数据的操作、状态变化
2.1层次数据模型(hierarchy)
2.1.1概念
用于描述按照层次关系组织起来的事务
记录和字段
记录:描述事务或事务间关系的命名的数据单位,也是存储的数据单位
字段:记录的构成部分(简单数据类型)
型与实例
双亲子女关系(PCR)
层次数据模型的基本关系,表示两个记录型间的1:N关系
双亲记录、子女记录
型与实例
层次数据模式
由双亲子女关系构成(树型)
除根以外,双亲唯一
虚拟记录
非层次关系的存在:
一个记录型是两个以上PCR的子女
多对多关系
多元关系
虚拟记录:用指针代替的记录
用虚拟记录表示非层次关系
层次数据的存储
存储器:线性
树的先序遍历
引起的问题:
2.1.2约束
任何记录(包括虚拟记录)有且只有一个双亲记录,根除外(增加、删除结点)
虚拟记录必须指向一个实际记录
虚拟记录不能成为根记录
2.1.3操作
GU (Get Unique)
GNP (Get Next Within parent)
GN (Get Next)
2.1.4层次数据模型评价
非层次数据的处理
数据独立性
2.2网状数据模型
2.2.1概念
记录和数据项
记录:数据存储单位,包含数据项
数据项:与层次模型不同,简单多值项(向量)复合多值项(重复组)
系(set)
两个记录型之间的1:N联系(首记录,属记录,多属系)
允许一个首记录型有多个属记录型
允许一个属记录型有多个首记录型
Link记录
特殊的系:无首系
系的实现
双向链表+首记录指针
网状模型评价
2.3关系数据模型
2.3.1概念
关系模型(1970年,Codd)
例:(关系模式,关系,元组,属性,属性值,键)
属性和域
关系模型中所有域都是原子属性
null的含义
关系、关系模式、元组
符号描述:R,r,D,A,t
关系的限制:1)属性不可重复;2)元组不可重复;3)元组间无序;4)属性间无序;5)每一属性不可再分
键
超键(Super Key)
候选键(Candidate Key)
主键(Primary Key)
外键(Foreign Key)
存储
索引/散列/堆文件
关系模型评价
数据结构
数据独立性
数学理论基础
2.3.2完整性规则
语义对于数据的限制
域完整性约束
实体完整性约束
引用(参照)完整性约束
用户定义完整性约束
2.3.3关系数据操纵语言
DML:查询、更新
关系DML:关系代数、关系演算(元组,域)
2.3.4关系代数
选择(σ)
σF(R) ≡ {t | t∈R ∧ F(t) = true}
例
投影(π)
例
集合操作
并
R∪S ≡ {t | t∈R∨t∈S}
例
差
R-S ≡ {t | t∈R∨t/∈S}
交:R∩S≡R-(R-S) ≡ S-(S-R)
例
笛卡儿积
R×S ≡ {t | t=( t(r) t(s) ) ∧ t(r)∈R ∧ t(s)∈S}
最小完备集{σ,π,∪,-,×}
连接
θ连接
F连接
自然连接
外连接
半连接
例
除
例
外并
关系代数查询举例……
2.3.5关系演算
元组关系演算
表示:{t | P(t)} t:元组变量,P(t):表达式
原子表达式:① R(t);② t[i]θt[j];③ t[i]θC或者Cθt[i]
表达式递归定义:…
元组关系演算与关系代数的等价表示
存在的安全问题:不产生无限关系的表达式称为安全表达式
元组关系演算查询举例……
域关系演算
表示:{<x1, x2,……, xn> | P(x1, x2……xn, xn+1,……xn+m)} xn:域变量
原子表达式:① R(x1, x2,……, xk);② xθy;③ xθC或者Cθx
E-R数据模型
2.4.1概念
实体(Entity)
属性(attribute)
属性的取值范围:值集(Value Set)
实体键,实体主键
简单属性(单域)/组合属性(多域);单值/多值
数学表示:
A:E→ρ(V1)×ρ(V2)……×ρ(Vn)
特例:简单属性 A:E→ρ(V)
联系(Relationship)
实体与实体间的关系
二元联系:1:1,1:N,M:N
三元联系:M:N:P,1:1:1,1:N:P,1:1:P
参与度(min,max)
参与约束,基数比约束
弱实体
2.4.2E-R图
例
2.4.3扩充的E-R模型
特殊化和普遍化
F={Si | Si∈E,I=1,2,3…} F特殊化,E超实体集,Si子实体集
全特殊化,部分特殊化;不相交特殊化,重叠特殊化
P39图
聚集
P39图
范畴
P40图