文章目录
数据模型
时间 | 数据库 |
---|---|
20世纪70年代至80年代初 | 层次数据库或网状数据库 |
20世纪80年代 | 对象关系数据模型 |
用户易视,计算机易理解,数据管理系统支持的。
层次模型
层次模型(hierachical model):满足下面两个条件的基本层次联系的集合为层次模型。
- 有且只有一个结点没有双亲,这个结点称为根结点
- 根以外的其它结点有且只有一个双亲结点
兄弟结点(twin):同一双亲的子女结点互为兄弟结点
叶结点:没有子女的结点称为叶结点
记录类型(字段1,字段2,字段3,…,字段n)
记录类型:描述实体
字段:实体属性
- 各个记录类型及其字段都必须命名
- 各个记录类型,同一记录类型中各个字段不能同名
排序字段(码字段):每个记录类型可以定义一个排序字段,称为码字段。排序字段值唯一,它也能唯一标识一个记录值。
Ex1
R1:根结点
R2与R3:互为兄弟结点
R4与R5:互为兄弟节点
R4和R5:叶结点
Ex2:教员学生层次模型
记录类型 | 字段 |
---|---|
系 | 系编号、系号、办公地点 |
教研室 | 教研室编号、教研室名 |
学生 | 学号、姓名、成绩 |
教员 | 职工号、姓名、研究方向 |
层次模型的数据操作&&完整性约束
查询
插入:无相应的双亲结点值就不能插入子女结点值
删除:如果删除双亲结点值,则相应的子女结点值也被同时删除
更新:更新操作时,应更新所有相应记录,以保证数据的一致性
层次模型存储结构
方法 | 具体 |
---|---|
邻接法 | 按照层次树前序遍历的顺序把所有记录值依次邻接存,即通过物理空间的位置相邻来实现层次顺序 |
链接法 | 用指针来反映数据之间的层次联系,1.子女-兄弟链接法;2.层次序列链接法 |
层次模型优缺点
优点:
- 层次数据模型简单,对具有一对多的层次关系的部门描述自然、直观,容易理解;
- 性能:层次模型>关系模型,层次>=网状模型;
- 层次数据模型提供了良好的完整性支持。
缺点:
- 多对多联系表示不自然;
- 对插入和删除操作的限制多;
- 查询子女结点必须通过双亲结点;
- 层次命令趋于程序化。
网状模型
网状模型(network model):满足下面两个条件的基本层次联系的集合为网状模型。
- 允许一个以上的结点无双亲
- 一个结点可以有多于一个的双亲
- 允许两个结点之间有多种联系(复合联系)
1:同层次模型比较,根结点不止一个
2:同层次模型比较,结点的双亲不止一个
Ex1
对于图a:R3有两个双亲,R1和R2没有双亲
对于图b:R1与R2复合联系
对于图c:R1和R2没有双亲,R3和R5有两个双亲
Ex2:学生选课数据库模型
记录类型 | 字段 |
---|---|
系 | 学号、姓名、系别 |
学生 | 教研室编号、教研室名 |
课程 | 课程号、课程名、学分 |
选课 | 学号、课程号、成绩 |
网状模型的数据操作&&完整性约束
查询
插入:允许插入尚未确定双亲结点值的子女结点值
删除:允许只删除双亲结点值
更新
唯一标识记录的数据项的集合
双亲结点与子女结点之间是一对多联系
支持双亲记录和子女记录之间某些约束条件
网状模型存储结构
用指针实现记录之间的联系
单向链接
双向链接
环状链接
向首链接
网状模型优缺点
优点:
- 能够更为直接地描述现实世界,如一个结点可以有多个双亲;
- 具有良好的性能,存取效率较高。
缺点:
- 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握;
- DDL、DML语言复杂,用户不容易使用。
关系模型
关系模型(relational model):在用户观点
下(背后有严格的数学基础),关系模型中数
据的逻辑结构是一张二维表,它由行和列组成。
关系(Relation):一个关系对应通常说的一张表。
元组(Tuple):表中的一行即为一个元组。
属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名。
主码(Key):表中的某个属性组,它可以唯一确定一个元组。
域(Domain):属性的取值范围。
分量:元组中的一个属性值。
关系模式(型的概念,对关系的描述):关系名(属性1,属性2,…,属性n)。
模式的实例(值的概念,关系模式的一个具体值):对属性1,属性2,…,属性n进行具体的赋值。
关系模型的数据操作&&完整性约束
查询
插入
删除
更新
- 实体完整性
- 参照完整性
- 用户定义的完整性
关系模型优缺点
优点:
- 建立在严格的数学概念的基础上;
- 概念单一,数据结构简单清晰,用户易懂易用;
- 实体和各类联系都用关系来表示。
- 对数据的检索结果也是关系。
- 关系模型的存取路径对用户透明。
- 具有更高的数据独立性,更好的安全保密性
- 简化了程序员的工作和数据库开发建立的工作
缺点:
- 存取路径对用户透明导致查询效率往往不如非关系数据模型;
- 为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度。
关系模型举例
ORACLE
SYBASE
INFORMIX
SQL Server
DB/2
COBASE(北大、人大与中软)
PBASE(中国人民大学)
EasyBase(中国人民大学)
DM/2(华中理工大学)
OpenBase(东大阿尔派)
面向对象数据模型
面向对象关系模型(object oriented data model):
对象关系数据模型
对象关系数据模型(object relational data model):
半结构化数据模型
半结构化数据模型(semistructrue data model):