本篇内容来自《数据库系统概论(第五版)》(王珊 萨师煊),主要是整理数据库的基本概念,供自己复习查阅。
数据库常用逻辑数据模型
常用模型有:网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型。其中,层次模型和网状模型又统称为格式化模型,最重要的是关系模型。
层次模型(hierarchical model)
层次模型是典型的树结构模型。模型中每个节点表示一个记录类型,类型的联系用有向边表示。因为是基于树结构的模型,所以只能表示一对多的实体联系。层次模型的用语和数据结构的树基本相同。
层次结构的完整性约束(特点):任何给定的记录值只能按其层次路径查看,子女(child)记录值无法脱离双亲(parent)记录值独立存在。层次模型的主要操作无非是增删改查,但同时会有树结构特有的约束条件,即:无双亲则无法插入子节点,删除双亲连带删除子节点。
由于基于树结构,层次模型的优缺点也比较容易总结得到:
- 数据结构简单清晰。
- 查询效率高。
- 完整性支持良好。
- 无法处理多对多的实体联系。
- 查询子女节点必须通过双亲节点。
- 结构过于死板。
网状模型(network model)
现实中很多事物的联系往往不是层次关系的,这时就需要网状模型。网状模型的典型是DBTG系统(又称CODASYL系统)。网状模型也很好理解,概念性的描述即:允许一个以上的节点无双亲,一个节点也可以有多个双亲节点。这是一个典型的图结构。
联系图结构的特点,也容易得出网状模型的优缺点:
- 更为直观,应用更广泛。
- 性能良好,存取效率高。
- 结构复杂,且复杂度上升快。
- 模型的DDL(Data Definition Language,数据定义语言)和DML(Data Manipulation Language,数据操纵语言)复杂,不便于用户使用。
- 网络拓扑复杂,存取路径的选择比较困难,要求用户了解系统细节。
关系模型(relational model)
关系模型是建立在严格的数学概念上的(不像前两者建立在简单的数据结构上)。在关系模型中,我们通常把一种关系映射到一张规范化的二维表上。
关系模型的基本概念
- 表的行为一个元组,简单理解即一个实体对象;表的列为一个属性,每个属性对应一个不重复的属性名,属性记录实体的信息。
- 码(key):如果表中的某一个属性组(若干属性的集合)可以区分所有的元组(类似每个学生的学号都可以确定一个学生,这时的学号就是一个属性组,只不过这个属性组只有一个属性),那这个属性组就称为该关系的码。
- 域(domain):域是一组具有相同数据类型的值的集合。如:性别域为{男,女}。
- 分量:元组中的一个属性值。
- 分量必须是不可分割的,即不允许嵌套表。
- 关系模式:通常采用如下方式描述一个关系:关系名(属性名[,属性名])。
- 关系模型的数据操作主要也是增删改查,并且都是集合操作,即操作对象和操作结果都是关系。
关系模型的优缺点
- 非格式化模型,建立在数学概念上。
- 概念单一,无论是实体还是实体间的联系统一用关系表示,对数据的操作对象和操作结果都是关系,数据结构简单、清晰,对用户友好。
- 存取路径对用户透明,所以数据独立性更高、安全保密性更好,开发工作量较少。
- 查询效率不如格式化模型,需要开发者做额外优化。