关系模型是当今最为流行的一种数据模型。在关系模型中,实体间的联系是通过二维关系(简称关系)来定义,其数据结构就是二维关系。每个一种二维关系都可以用一张二维表来表示,表达直观、明了。所以,很多时候是把二维表和关系直接等同起来,简称为(二维)关系表。关系模型就是若干张关系表的集合。
关系模型的术语
Ø 关系:一张二维表。
Ø 记录(或元组):关系表中的一行。
Ø 字段(或属性):关系表中的一列。
Ø 域:即字段的值域,也就是字段的取值范围。
Ø 数据项(或分量):某一个记录中的一个字段值。
Ø 主关键字段(或主码):简称主键,是关系表中一个或者多个字段的集合,这些记录的值能够唯一标识每一个记录。
Ø 关系模式:是对关系的一种抽象的描述,其描述格式为“关系名(字段1,字段2,…,字段n)”,其中“字段1”带下划线,表示该字段是主关键字段。
关系模型的特点:
• 具有严密的数学基础。关系代数、关系演算等都可以用于对关系模型进行定性或者定量的分析,探讨关系的分开和合并及其有关性质等。
• 概念单一化、表达直观,但又具有较强的数据表达和建模能力。一般来说,一个关系只表达一个主题,如果有多个主题在一起,则需要将它们分开,用多个关系来表示,这就是概念的单一化。
• 关系都已经规范化。即关系要满足一定的规范条件,这使得关系模型表现出特有的一些性质。
Ø 例如,在一个关系中数据项是最基本的数据单位,它不能再进行分解;同一个字段的字段值具有相同的数据类型;各字段的顺序是任意,记录的顺序也是任意的,等等。
• 在关系模型中,对数据的操作是集合操作,即操作的对象是记录的集合,操作所产生的结果也是记录的集合。这种操作不具有明显的方向性,不管如何操作,其难度都一样。而在层次模型和网状模型中,对数据的操作带有明显的方向性,在正反两个方向上操作的难度完全不一样。
关系模型的缺点
Ø 对复杂问题的建模能力差。在对复杂问题建模时一般都会呈现出错综复杂的关系,而关系模型仅限于用二维关系来表示这些复杂关系,无法用递归和嵌套的方式来描述(因为它不允许嵌套记录和嵌套关系的存在)。所以,在许多时候关系模型显得力不从心。
Ø 对象语义的表达能力比较差。现实世界中,对象之间的关系往往不仅限于量的关系,而且还可能体现语义之间的联系,蕴涵着特定的内涵。但关系模型为了规范化这些关系,可能会强行拆开这种语义联系,造成不自然的分解,从而使得在查询等操作时出现语义不合理的结果。
Ø 可扩充性差。关系模式只支持记录的集合这一种数据结构,并且数据项不可再分,无法形成嵌套记录和嵌套关系,所以它无法扩充成层次模型或网状模型。且它不支持抽象数据类型,不能对多种类型数据对象进行管理。
4.面向对象模型
面向对象方法(Object-Oriented Paradigm,简称OO)基本出发点就是按照人类认识世界的方法和思维方式来分析和解决问题。
面向对象模型是由面向对象方法进行建模和表示而形成的数据模型。
面向对象模型的相关理论和方法还不够成熟,主要是处于理论研究和实验阶段。
1.5.1 概念模型
从数据模型的建模方法来看,一般是先将现实世界中的问题建模为信息世界中的概念模型,然后将信息世界中的概念模型转化为机器世界中的逻辑模型。
当确认概念模型已经能够充分表达原问题(现实世界中)的时候,再将这种概念模型转化为数据库系统中某一个既定DBMS支持的数据模型,形成机器世界中的逻辑模型。
从现实世界到机器世界的转换过程可以用图1.9来表示。
1.5.2 实体及其联系
1.概念
实体是客观存在的并可以相互区分的事物。
实体的属性是指实体所具有的特性。
Ø eg:学生是一个实体,如姓名、性别、成绩等是实体的属性。
码又称关键字,它是一个或者多个属性的集合。
Ø eg:学号是学生实体的码。
属性的域是指一个属性的取值范围。
Ø eg:成绩是学生实体的域。
实体型是指用实体名和实体属性名的集合来共同刻画同一类实体。
Ø eg:学生(学号,姓名,性别,籍贯,成绩)是一个实体型。
实体集就是实体的集合。
联系
Ø 定义
• 是指事物之间的关系(现实世界)在信息世界中的反映。
Ø 两种类型
• 实体内部的联系和实体之间的联系。
Ø 三种联系类型
假设A和B分别表示两个实体集
• 一对一联系记为(1:1)。
• 一对多联系记为(1:n)。
• 多对多联系记为(m:n)。
当将现实世界中的实际问题转化为信息世界中的概念模型时,用什么来描述这种概念模型呢?
当在数据库理论中,通常用E-R图来描述概念模型 ,它提供了表示实体型、属性和联系的方法。
1.5.3 E-R图
1.实体及其属性的表示
【例子】 对于一个实体型——学生(学号,姓名,成绩),其E-R图如图1.10所示。