由于关系数据库是当今数据管理技术中应用最为广泛的一种,掌握关系数据库的基础知识,有助于学习使用现在流行的大多数数据库管理系统。从本节起将对关系数据库的相关知识进行详细介绍。
关系数据库以数据表的形式来存储和管理数据。每一个数据表也被称为关系表,因为它是有关联的行和列的集合。数据表是关系数据库中最基本的数据对象,由若干相关联的数据记录组成。
关系数据库经过几十年的发展,已经形成了约定俗成的一套基本术语。正确理解这些术语将有助于关系数据库的设计。关系数据库的一些基本术语如下。
· 关系:二维的数据表称为关系,它描述各个实体之间的关系。
· 实体:数据表的每一行表示一个实体,也称为元组。它对应于存储文件中的一条记录。同一表中不能出现完全相同的两行记录。
· 属性:数据表的每一列表示一个属性。在标题栏中表示属性的名称,在数据表中显示各实体的属性值。属性值相当于记录中的字段值。
· 域:属性的取值范围。例如,正常来说商品的价格必须在零以上。
· 关系模式:对关系的描述称为关系,其格式为关系名(属性名1,属姓名2,……属性名n)。
· 键:可以唯一地表示和区分实体的一个属性或多个属性的组合称为键。在最简单的情况下,键只包含一个属性。
· 主键:在一个关系中可能存在多个关键字,从中可以选择一个作为主关键字。
· 外键:用来表示一个表和另一个表建立联系的属性,它体现了表之间的联系。
· 全键:关系模型中所有属性都是这个关系的键。
· 关联:关系数据库中各表之间的联系。关联可以分为3种,即一对一、一对多、多对多,分别记为“1∶1”、“1∶N”、“M∶N”。一对一关联的情况较少,而且这种关联的两个表完全可以合并成一张表。一对多关联的情况较常见,比如,一个专业对应多名学生,一个老师对应多门课程。多对多关联的例子也不少,比如,一名学生可以选修多门课程,而一门课程也可以有多名同学选修。
· 数据完整性:数据完整性用来确保数据库中数据的正确性和可靠性,可分为实体完整性、域完整性、参照完整性。实体完整性可由主键来实现,主键的取值必须唯一,且不能为空,这就可保证表中数据记录的唯一性。域完整性可以保证数据的取值在有效范围内,比如,可以限定性别字段的取值范围为{男,女},这时,性别只能为男或女。参照完整性可通过主键和外键来保证相关联的表间数据保持一致,避免因一个表的数据修改,而导致关联生效:可以通过“级联”方式来保证数据一致,即当更改主键值时,所有外键值也随之改变,在主键所在表中删除记录时,外键所在的所有表中的相应记录都将删除;也可以通过“限制”方式来保证数据一致,即当外键所在表中有相关记录时,则不允许更改相关的主键值,也不允许删除该键值所在记录,当主键没有相应值时,则外键所在表不能添加相应记录。
对于关系数据库的一般用户来说,键的概念最为重要。它不仅可以用来区分不同的记录,而且和许多数据操作有关。
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使其能够有效地存取数据,满足各种用户的应用需求,而不是简单地将数据放到不同的表格中去就可以了,否则会给数据管理带来很多问题。在数据库系统中,数据由数据库管理系统进行独立管理,对程序依赖性大为减少,数据库设计也逐渐成为一项独立的开发活动。
数据库设计的过程可以分为以下几个阶段。
需求分析的主要目标是了解和分析所要管理的数据,它是数据库设计的基础。需求分析的主要工作包括信息的搜集、整理和分析,并要求信息是准确的和完整的。需求分析的主要内容有:
· 数据的类型与格式。
· 对数据库的总体要求。
· 数据库的用户。
· 数据的应用方式。
数据库的需求分析主要是通过详细的调查工作完成,是通过调查搜集需要管理的各种数据的载体,例如各种凭证、票据、文件、报表等。该阶段还要求分析人员将系统需求写成用户和设计人员都能接受的说明书。
在完成需求分析的基础上,需要对数据库进行结构设计。数据库的结构设计分为概念结构设计、逻辑结构设计和物理结构设计。
(1)概念结构设计。
概念结构设计的目的是为了建立数据库的概念模型。概念模型是数据库各个用户关系的信息结构。它是表达概念设计结果的工具,是设计人员对系统的抽象和概括。在概念设计中,通常使用实体关系方法图[又称ER(Entity-Relationship)图]的方法来表示数据模型。概念设计的任务一般分3步完成,首先进行数据抽象,设计局部概念模型;然后,将局部概念模型综合成全局概念模型;最后是评审。
(2)逻辑结构设计。
逻辑结构设计的目的是把概念模型转换为逻辑数据库模型。数据库的逻辑模型满足系统对数据的一致性、完整性及安全性的要求,在逻辑上能支持各种数据库应用。逻辑结构设计分为以下3个步骤,将ER图转换为关系模式;对关系模型进行优化;对关系模型进行完整性及安全性方面的分析和评价。
(3)物理结构设计。
物理结构设计是指在逻辑数据模型的基础上建立数据库的物理模型,也就是说为逻辑数据库模型选择一个最适合的物理结构。
物理结构设计的主要内容有:
· 确定数据的存取方法。
· 确定数据的存储结构。
· 确定系统配置。
· 综合各方面要求,从多个设计方案中选择一个较优方案。
数据库的实施是指在完成物理结构设计以后,建立实际可以运行的数据库并提供给用户使用。数据库实施阶段的工作主要有:
· 根据物理设计的结果创建数据库。
· 载入数据,即将数据输入到数据库中。
· 编写应用程序。
· 对应用程序进行调试。
数据库建好以后,在运行过程中还需要不断地进行维护。维护数据库的任务一般交给数据库管理员来完成。数据库管理员的主要责任有:
· 保持数据库运行时的记录,及时处理各种问题。
· 定时对数据库进行备份,以便在必要时恢复被破坏的数据。
· 对使用数据库的用户进行管理。
· 对数据库中数据的安全性和完整性进行控制。
· 对数据库的性能进行评价、分析和改造。
ER图是直接表示概念模型的有力工具,设计ER图的方法称为ER方法。ER图通用的表现方式如下:
· 用矩形表示实体,在框内注明实体名。
· 用椭圆形表示实体的属性,并用连线把实体与属性连接起来。
· 用菱形表示实体间的联系,框内写上联系的名称,用连线分别把菱形和有关实体连接,在旁边标上联系的类型。
有了这些符号,就可以通过绘制ER图,方便和直观地表示实体及实体之间的联系。实体关系方法定义了3种基本联系类型,即一对一,一对多和多对多联系。它们的ER图表示方法如表1-1所示。
表1-1 用ER图表示基本的实体联系类型
基本联系类型 |
实体联系ER图 |
一对一联系 |
|
一对多联系 |
|
多对多联系 |
图1-1是为学校教学系统设计数据库时绘制的一个简单ER图。一门课程有多名学生选择学习,一名学生也可以学习多门课程,一名教师可以授多门课程,一门课程也可由多名教师授课。“学生”中的实体属性有学号、姓名、性别、入学日期、班级等;“课程”中的实体属性有课序号、课程名、课时、学分等;“教师”中的实体属性有教工号、姓名、性别、系别、薪水等。
ER图中实体间的联系转换为关系模式的过程略为复杂。通常一对一及一对多的联系不用转换成新的关系模式,而是将一方实体的属性加入到多方实体的关系模式中,联系的属性也一并加入;而多对多关系则要产生一个新的关系模式,由联系所关联实体的关键字加上联系的属性组成。
图1-1 某教学系统的ER图
例如将图1-1转换为关系模式,得到如下的关系模式:
学生(学号,姓名,性别,班级,入学日期)。
课程(课序号,课程名,课时,学分)。
选课(课序号,学号,选课时间,成绩)。
教师(教工号、姓名、性别、系别、薪水)。
授课(课序号,教工号,授课时间,授课地点,教学评估)。