3.1.2 数据库的模型

数据库的模型从数据库技术出现至今一共有3种比较通用的模型,目前使用最多的是关系型数据模型。下面就分别介绍这3种模型。

1.层次结构模型

最早使用层次结构模型的是IBM公司的IMS(Information Management System),即数据库管理信息系统,这个系统也是被广泛应用的。层次结构模型类似于倒置的树型,一个父表可以有多个子表,但是每一个子表都对应着一个父表。图3.4所示就是一个学校人员的层次结构模型。

3.1.2 数据库的模型 - 图1

图 3.4 学校人员层次结构模型

在图3.4中学校可以看做是父表,在学校下面有教职员工和学生两个子表,教职员工下面又有两个子表,学生下面也有两个子表,但是每一个子表都只有一个父表与之对应。

由于层次结构模型的结构很难改变,而且在表示表之间的关系时也有一些局限性,所以目前使用层次结构模型设计数据库是比较少的。

2.网状结构模型

网状结构模型是对层次结构模型的改进,使用网状结构模型的代表是DBTG(Data Base Task Group),它是20世纪70年代数据系统语言研究会下属的数据库任务组提出的一个系统方案。网状结构模型打破了层次结构模型使用的限制,可以更全面地描述数据库中表之间的关系,可以一个父表没有子表,也可以一个子表有多个父表,还可以设置两个表之间的多种关系。图3.5所示是一个网状结构模型的例子。

3.1.2 数据库的模型 - 图2

图 3.5 技术部门网状结构模型

图3.5中描述的是某软件公司技术部门的组成结构,这里程序员拥有员工宿舍和开发大厅两个父节点,这是层次结构模型不能描述的。尽管网状结构模型已经在层次结构模型的基础上有了一定的改进,但是对数据库的设计者要求很高,必须要非常熟悉数据库才能使用这种网状结构模型。

3.关系结构模型

关系结构模型可以说是在层次结构模型和网状结构模型的基础上发展而来的,是目前使用最多的数据模型。最早给关系结构模型下定义的是E.F.Codd博士,他说:“关系数据结构保护数据,并且允许以一种可以预测并防止差错的方法操作数据。”关系结构模型实际上就是一个二维表,是由行和列组成的。例如,一个员工信息登记表就是一个二维表即关系模型,如表3.1所示。

3.1.2 数据库的模型 - 图3

在表3.1中,把一行数据称为一个元组,其中一共就有3个元组;把一列数据称为一个字段或属性,其中一共就有6个属性,即员工编号、姓名、年龄、性别、所在部门、联系方式。要想在设计数据库时使用关系结构模型,必须要做到规范化。关于规范化的问题将在3.2节中详细讲述。

目前大多数的数据库都是属于关系型数据库,这些数据库主要有IBM DB2、Oracle、SQL Server、MySQL、SyBase、Informix、Access、FoxPro等。

说明 关系数据库的产生是在1970年,IBM的研究员E.F.Codd博士在刊物Communication of the ACM上发表了一篇名为"A Relational Model of Data for Large Shared Data Banks"的论文,提出了关系模型的概念,奠定了关系模型的理论基础。