第二章 数据模型 数据模型 静态特征:数据的类型、结构、联系、约束 动态特征:数据的操作、状态变化 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图