我们知道,三大经典数据模型:层级模型、网状模型和关系模型。其中层次模型和网状模型统称为格式化模型,在20实际70年代到80年代非常流行。现在那俩早已经out了,关系模型占据了主流地位,常见的有甲骨文的Oracle,微软的SQLServer、IBM的DB2、开源的Mysql、PostgreSQL,国产比如华为公司推出的GaussDB、中国电子信息产业集团的达梦数据库、南大通用的GBase、人大的KingBase等。
关系模型:表的形式组织数据
使用表来表示实体和实体之间关系的数据模型称之为关系数据模型。最早严格提出关系模型的是IBM公司的E.F.Codd。关系数据模型是以数学集合论中的关系概念为基础发展起来的,关系模型中无论是实体还是实体间的联系均由单一的结构类型——关系也就是表Table来表示。一个关系数据库就是由若干个表组成,关系模型用表的集合来表示数据和数据间的联系。
- 关系数据模型中,无论是是实体、还是实体之间的联系都是被映射成统一的关系---一张二维表,实体的属性是表格中列的条目,在关系模型中,操作的对象和结果都是一张二维表。对关系的描述一般表示为关系名(属性1,属性2,...,属性n)。比如学生(学号,姓名,性别,出生年月,系名,年级)。例如,下图的instructor表。每个表有多个列id、name、dept_name、salary,每列有该表唯一的列名。
- 关系模型可以表示实体之间的多对多的关系,只是此时要借助第三个关系---表,来实现多对多的关系,例子中的学生选课系统中学生和课程之间表现出一种多对多的关系,那么需要借助第三个表,也就是选课表将二者联系起来;
- 关系必须是规范化的关系,即每个属性是不可分割的实体,不允许表中表的存在;
关系模型的优缺点
优点:
1. 结构简单,就是一些表格的框架,实体之间的关系也是通过表格的公共属性表示,结构简单明了;
2. 关系数据模型中的存取路径对用户而言是完全隐蔽的,使程序和数据具有高度的独立性,其数据语言的非过程化程度较高;
3. 操作方便,在关系数据模型中操作的基本对象是集合而不是某一个元祖;
4. 有坚实的数学理论做基础,包括逻辑计算、数学计算等;
缺点:
1. 查询效率低,关系数据模型提供了较高的数据独立性和非过程化的查询功能(查询的时候只需指明数据存在的表和需要的数据所在的列,不用指明具体的查找路径),因此加大了系统的负担;
2. 由于查询效率较低,因此需要数据库管理系统对查询进行优化;