Access 2010数据库基础教程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-31 12:14:06

点击下载

作者:李玉霞 刘丽

出版社:中国铁道出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Access 2010数据库基础教程

Access 2010数据库基础教程试读:

前言

FOREWORD

微软推出的Access 2010是目前应用广泛的Access版本,与之前版本相比,该版本不仅具有功能强大、界面友好、易学易用等优点,而且在界面的易用性和网络数据库方面有了很大的改进。为了顺应各行业对数据处理方式越来越高的要求,广大计算机初学者和爱好者迫切需要快速地掌握计算机应用的相关知识。为了适应这一形势,普通高等院校的计算机基础教学内容也在不断地改革。

本书以一个完整的系统开发实例为主线,将其知识点分解贯穿到每个章节中,最终完成该系统的开发,更加方便读者学习使用。全书共9章。第1章对关系数据库系统的基础知识和Access 2010的性能及工作环境做了简要概述;第2章对Access 2010数据库和数据表的基本操作做了详细介绍;第3章介绍了Access 2010查询的操作,对关系数据库标准语言SQL的使用方法做了重点介绍;第4章介绍了窗体的基本操作,并对窗体的创建及控件的使用做了重点介绍;第5章对宏的基本操作做了详细介绍;第6章对创建报表操作做了详细介绍;第7章对VBA的基本概念、结构化程序设计方法、程序的流程控制做了重点介绍,并对模块和程序调试等概念做了详细介绍;第8章对VBA的数据库编程技术做了重点介绍,并对数据访问对象(DAO)和ActiveX数据对象(ADO)等概念做了详细介绍;第9章对开发应用程序的步骤及方法做了介绍,同时对数据库安全进行了重点介绍。

本书力求将理论介绍和实例教学相结合,汇集了编者在教学和实践中的经验和技巧。在注重系统性和科学性的基础上,突出了实用性和可操作性,各章理论与实践操作紧密相扣,既便于教师教学,也便于学生学习。本书在内容上循序渐进、前后呼应、深入浅出、实例丰富、图文并茂、通俗易懂;在结构上力求能够满足初学者的需要,深入浅出地论述了有关Access 2010程序编写的基本理念,对Access 2010的整体面貌做了较为清晰的说明。另外,本书每章后面都配有与无纸化考试系统相匹配的思考与练习。书后还附有授课及实验课时安排参考、全国计算机等级考试二级Access数据库程序设计考试大纲(2013年版)、全国计算机等级考试二级Access数据库程序设计样题,以及虚拟实验工场简介。初学者可以对照书中讲述的实例进行上机操作,即学即用。

本书由北京联合大学规划教材建设项目资助。本书由李玉霞、刘丽任主编,于平、戴红、李湛、焦舒玉任副主编。其中,第1章、第3章由刘丽编写,第2章由于平编写,第4章由戴红编写,第5章由李湛编写,第6章由焦舒玉编写,第7~9章及附录由李玉霞编写,全书由刘丽统稿。在本书的编写过程中,林志英、和青芳、张利霞、李红豫等参加了部分程序的调试和校正工作,贾辉涛、崔晓蕾、白伊、黄欣月、刘蕊、王星宇、王晓利、林语嫣等参与了本书的整理工作,在此对他们表示感谢。

由于编者水平有限,加上编写时间仓促,疏漏和不足之处在所难免,敬请广大读者朋友批评指正。

编者2016年10月第1章数据库概述

数据库管理技术是信息科学的重要组成部分。随着商品经济的发展、科学技术的进步和市场竞争日趋激烈,社会信息量倍增,决策难度也随之加大,使得计算机处理的数据量不断增加。于是数据库管理系统应运而生,从而也促进了信息科学的发展。1.1关系数据库基础

关系数据库是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。下面首先介绍数据库的基本概念。1.1.1 数据库的基础知识

1.数据和信息

①数据(data)是对客观事物特征所进行的一种抽象化、符号化的表示。通俗地讲,凡是能被计算机接收,并能被计算机处理的数字、字符、图形、声音、图像等统称数据。数据所反映的事物属性是它的内容,而符号是它的形式。

②信息(information)是客观事物属性的反映。它所反映的是关于某一客观系统中某一事物的某一方面属性或某一时刻的表现形式。通俗地讲,信息是经过加工处理并对人类客观行为产生影响的数据表现形式。也可以说,信息是有一定含义的、经过加工处理的、能够提供决策性依据的数据。

任何事物的属性原则上都是通过数据来表示的。数据经过加工处理后具有知识性,并对人类活动产生决策作用,从而形成信息。

2.数据处理

数据处理实际上就是利用计算机对各种类型的数据进行处理。它包括对数据的采集、整理、存储、分类、排序、检索、维护、加工、统计和传输等一系列操作过程。数据处理的目的是从大量的、原始的数据中获得人们所需要的资料并提取有用的数据成分,作为行为和决策的依据。数据处理技术随着计算机软硬件技术与数据管理手段的不断发展,也发生了划时代的变革,经历了由低级到高级的发展过程。计算机数据管理随着计算机硬件、软件技术和计算机应用范围的发展而发展,先后经历了人工管理、文件系统和数据库系统、分布式数据库系统和面向对象数据库系统等几个阶段。

随着多媒体技术应用领域的扩大,对数据库提出了新的需求,要求数据库系统能存储图形、声音等复杂的对象,并能实现复杂对象的复杂行为。将数据库技术与面向对象技术相结合,便顺理成章地成为研究数据库技术的新方向,成为新一代数据库系统的基础。

3.数据库

数据库(database,DB)是数据的集合。也就是说,数据库是存储在计算机系统中的存储介质上,按一定的方式组织起来的相关数据的集合。数据库中的数据具有高度的共享性及独立性。

4.数据库管理系统

数据库管理系统(database management system,DBMS)是操作和管理数据库的软件,是数据库系统的管理控制中心,一般有四大功能:数据定义功能、数据库操作功能、控制和管理功能、建立和维护功能。

5.数据库系统

数据库系统(database system,DBS)是以数据库应用为基础的计算机系统。它是一个实际可行的,按照数据库方式存储、维护和管理数据的系统。通常由计算机硬件、数据库、数据库管理系统、相关软件、人员(数据库管理员、应用程序员、用户)等组成,如图1-1所示。

6.数据库应用系统

数据库应用系统是一个复杂的系统,它由硬件、操作系统、数据库管理系统、编译系统、用户应用程序和数据库组成。

数据库、数据库管理系统和数据库系统是3个不同的概念。数据库管理系统在计算机中的地位如图1-2所示。

图1-1 数据库系统组成结构

图1-2 数据库管理系统在计算机中的地位1.1.2 数据模型及关系数据库

1.数据模型

模型(model)是现实世界特征的模拟和抽象。在数据库技术中,用数据模型(data model)这个工具来抽象、表示和处理现实世界中的数据和信息。数据模型包括数据库数据的结构部分、操作部分和约束条件。

现实世界中的客观事物是相互联系的:一方面,某一事物内部的诸因素和属性根据一定的组织原则相互具有联系,构成一个相对独立的系统;另一方面,某一事物同时也作为一个更大系统的一个因素或一种属性而存在,并与系统的其他因素或属性发生联系。客观事物的这种普遍联系性决定了作为事物属性记录符号的数据与数据之间也存在着一定的联系性。具有联系性的相关数据总是按照一定的组织关系排列,从而构成一定的结构,对这种结构的描述就是数据模型。

从理论上讲,数据模型是指反映客观事物及客观事物间联系的数据组织的结构和形式。客观事物是千变万化的,各种客观事物的数据模型也是千差万别的,但也有其共性。常用的数据模型有层次模型、网状模型和关系模型3种。(1)层次模型

层次模型(hierarchical model)表示数据间的从属关系结构,是一种以记录某一事物的类型为根结点的有向树结构。层次模型像一棵倒置的树,根结点在上,层次最高;子结点在下,逐层排列。这种用树形结构表示数据之间联系的模型也称树结构。层次模型的特点是仅有一个无双亲的根结点;根结点以外的子结点,向上仅有一个父结点,向下有若干子结点。

层次模型表示的是从根结点到子结点的一个结点对多个结点,或从子结点到父结点的多个结点对一个结点的数据间的联系,如图1-3所示。

图1-3 层次模型(2)网状模型

网状模型(network model)是层次模型的扩展,表示多个从属关系的层次结构,呈现一种交叉关系的网络结构,如图1-4所示。网状模型是以记录为结点的网络结构,用网状数据结构表示实体与实体之间的联系。网状模型的特点是:可以有一个以上的结点无双亲,至少有一个结点有多于一个的双亲。因此,层次模型是网状模型的特殊形式,网状模型可以表示较复杂的数据结构,即可以表示数据间的纵向关系与横向关系。这种数据模型在概念上、结构上都比较复杂,操作上也有很多不便。

图1-4 网状模型(3)关系模型

关系模型(relational model)是用二维表的形式表示实体和实体间联系的数据模型。在二维表中每一列称为字段,字段是最基本的单位不可再分,每一列数据项是同属性的,各列的顺序是任意的;每一行称为记录,由一个事物的诸多属性项构成,记录的顺序可以是任意的。不允许有相同的字段名,也不允许有相同的记录行。

2.关系数据库

关系数据库(relation database)是若干依照关系模型设计的数据表文件的集合。也就是说,关系数据库是由若干完成关系模型设计的二维表组成的。一个二维表为一个数据表,数据表包含数据及数据间的关系。

一个关系数据库由若干数据表组成,数据表又由若干记录组成,而每一个记录是由若干以字段属性加以分类的数据项组成的。表1-1所示的学生表就是一个关系模型,它包括以下概念。(1)关系名

通常,将一个没有重复行、重复列的二维表看成一个关系,每一个关系都有一个关系名。如表1-1“学生表”和表1-2“选课成绩表”就代表两个关系,“学生表”及“选课成绩表”为各自的关系名。可见,一个关系就是一个二维表,每个关系有一个关系名。

表1-2 选课成绩表(2)元组

二维表的每一行在关系中称为元组。在Access中,一个元组对应表中的一个记录。(3)属性

二维表的每一列在关系中称为属性,每个属性都有一个属性名,属性值则是各个元组属性的取值。在Access中,一个属性对应表中的一个字段,属性名对应字段名,属性值对应各个记录的字段值。(4)域

属性的取值范围称为域。域作为属性值的集合,其类型与范围具体由属性的性质及其所表示的意义确定。表1-1中“性别”属性的域是{男,女}。同一属性只能在相同域中取值。(5)关键字

关键字也称“码”。二维表中的某个属性,若它的值能唯一地标识一个元组,则称该属性为候选码。若一个关系有多个候选码,则选定其中一个为主码,这个属性称为主属性。(6)关系模式

对关系的描述称为关系模式,其格式为:关系名(属性名1,属性名2,…,属性名n)。关系既可以用二维表格描述,也可以用数学形式的关系模式来描述。一个关系模式对应一个关系的数据结构,也就是表的数据结构,如:表名(字段名1,字段名2,…,字段名n)。

关系的特点如下:

①关系必须规范化。规范化是指关系模型中的每一个关系模式都必须满足一定的要求。最基本的要求是每个属性必须是不可分割的数据单元,即表中不能再包含表。

②在同一个关系中不能出现相同的属性名。在Access中不允许一个表中有相同的字段名。

③关系中不允许有完全相同的元组,即冗余。在Access的一个表中不能有两个完全相同的记录。

④在一个关系中元组的次序无关紧要。也就是说,任意交换两行的位置并不影响数据的实际含义。日常生活中常见到的“排名不分先后”正反映这种意义。

⑤在一个关系中列的次序无关紧要。任意交换两列的位置不影响数据的实际含义。例如,工资单里奖金和基本工资哪一项在前面都不重要,重要的是实际数额。1.2关系运算

可把关系看成一个集合。一个n目关系是多个元组的集合。其中,n是关系模式中属性的个数,称为关系的目数。

关系代数是一种过程化的抽象的查询语言。它包括一个运算集合,这些运算以一个或两个关系为输入,产生一个新的关系作为结果。

关系代数的运算可以分为两类:一类是传统的集合运算;另一类是专门的关系运算。传统的集合运算,如并、差、交、广义笛卡儿积,这类运算将关系看成元组的集合,运算时从行的角度进行。专门的关系运算,如选择、投影、连接、除,这类运算不仅涉及行,而且涉及列。关系代数用到的运算符如下:

①集合运算符:∪(并)、∩(交)、—(差)、×(广义笛卡儿积)。

②专门的关系运算符:σ(选择)、П(投影)、><(连接)、÷(除)。

③算术运算符:θ={>,≥,<,≤,=,≠}。

④逻辑运算符:逻辑“与”(and)运算符∧、逻辑“或”(or)运算符∨和逻辑“非”(not)运算符¬。1.2.1 传统的集合运算

传统的集合运算都是二目运算。设关系R和关系S具有相同的目(n=3),有相同的属性个数3,且相应的属性取自同一个域。进行并、差、交等集合运算的两个关系必须具有相同的关系模式,即结构相同,如表1-3和表1-4所示。4种传统的集合运算如图1-5所示。

表1-3 R关系

表1-4 S关系

图1-5 4种传统的集合运算

1.并(Union)运算

设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R与关系S的并由属于R或属于S的元组组成,其结果关系仍为n目关系,记作:

R∪S={t|t∈R∨t∈S}

其中,t代表元组。【例1-1】 利用表1-3和表1-4所示的数据做并运算,得到的结果如表1-5所示。

表1-5 R∪S

2.差(Difference)运算

设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的所有元组组成,其结果关系仍为n目关系,记作:

R-S={t|t∈R∧t∉S}【例1-2】 利用表1-3和表1-4所示的数据做差运算,得到的结果如表1-6所示。

表1-6 R—S

3.交(Intersection)运算

设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交由既属于R又属于S的元组组成,其结果关系仍为n目关系,记作:

R∩S={t|t∈R∧t∈S}【例1-3】 利用表1-3和表1-4中所示的数据做交运算,得到的结果如表1-7所示。

表1-7 R∩S

4.广义笛卡儿积(Extended Cartesian Product)(1)笛卡儿积的定义

在数学中,两个集合X和Y的笛卡儿积(Cartesian Product)又称直积,表示为X×Y,是其第一个对象是X的成员而第二个对象是Y的一个成员的所有可能的有序对,记作:

X×Y={(x,y)|x∈X∧y∈Y}

笛卡儿积得名于笛卡儿,他的解析几何的公式化引发了这个概念。

具体来说,如果集合X是6个元素的点数集合{A,K,5,4,3,2},而集合Y是4个元素的花色集合{♠,♥,♦,♣},则这两个集合的笛卡儿积是24个元素的标准扑克牌的集合:

{(A,♠),(K,♠),…,(2,♠),(A,♥),(K,♥),…,(2,♥),(A,♦),(K,♦),…,(2,♦),(A,♣),(K,♣),…,(2,♣)}(2)广义笛卡儿积运算

数学家将关系定义为一系列域上的笛卡儿积的子集。这一定义与人们对表的定义几乎完全相符。人们把关系看成一个集合,这样就可以将一些直观的表格以及对表格的汇总和查询工作转换成数学的集合以及集合的运算问题。

设关系R为n目,关系S为m目,则关系R和关系S的广义笛卡儿积为(n+m)目元组的集合,记作:

其中,元组的前n个分量是关系R的一个元组,后m个分量是关系S的一个元组。【例1-4】 利用表1-3和表1-4中所示的数据做广义笛卡儿积,其结果如表1-8所示。

表1-8 R×S1.2.2 专门的关系运算

在关系数据库中查询用户所需的数据时,需要对关系进行一定的关系运算。关系运算主要有选择、投影和连接3种。

1.选择

选择运算是根据某些条件对关系做水平分割,即从关系中找出满足条件的记录。它可以根据用户的要求从关系中筛选出满足一定条件的记录,这种运算可以得到一个新的关系,其中的元组是原关系的一个子集,但不影响原关系的结构。条件可用命题公式(即计算机语言中的条件表达式)F表示。关系R关于公式F的选择运算用σ (R)F表示,形式定义如下:

σ (R)={t|t∈R∧F(t)=true}F

其中,σ为选择运算符;σ (R)表示从R中挑选满足公式F为F真的元组所构成的关系。这是从行的角度进行的运算。

例如,σ (R)表示从R中挑选第2个分量值大于3的元组所2>'3'构成的关系。

2.投影

投影运算是从关系内选择出若干属性列组成新的关系。它可以根据用户的要求从关系中选出若干字段组成新的关系,字段的个数或顺序往往不同。关系R的投影运算用π (R)表示,形式定义如下:A

π (R)={t[A]|t∈R}A

其中,A为R的属性列。投影操作是从列的角度进行的运算。投影之后不仅取消了原关系中的某些列,而且取消完全相同的元组。

例如,π (R)表示关系R中取第1,3列,组成新的关系,3,1新关系中第1列为R的第3列,新关系的第2列为R的第1列。

有了上述两个运算后,对一个关系内的任意行、列的数据都可以方便地找到。

3.连接

在数学上,可以用笛卡儿积建立两个关系间的连接,但这样得到的关系数据冗余度大,在实际应用中一般两个相互关联的关系需要满足一定的条件,使所得的结果一目了然,这就是连接运算。连接也称θ连接,它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组组成新的关系。关系R和S的连接运算形式定义如下:

其中,A和B分别为关系R和S上度数相同且可比的属性组。

连接运算中有两种最为常用的连接,分别是等值连接和自然连接。(1)等值连接(Equi-join)

等值连接即将连接中的θ换成=,功能是从关系R和S的笛卡儿积中选取A,B属性值相等的那些元组。它的形式定义如下:(2)自然连接(Natural-join)

自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中将重复的属性去掉。它的形式定义如下:【例1-5】 利用表1-3和表1-9所示的数据,将两表按学号进行等值连接。等值连接的结果如表1-10所示。

表1-9 成绩表

表1-10 等值连接【例1-6】 利用表1-3和表1-9所示的数据,将两表进行自然连接。自然连接的结果如表1-11所示。

表1-11 自然连接1.2.3 关系的完整性

关系模型的完整性规则是用来约束关系的,以保证数据库中数据的正确性和一致性。关系模型的完整性共有3类:实体完整性、参照完整性和用户定义的完整性。实体完整性和参照完整性是关系模型必须满足的完整性约束条件,由关系数据库管理系统自动支持。

1.实体完整性

一个关系通常对应现实世界的一个实体集,如学生关系对应于学生的集合。现实世界中的实体是可区分的,即它们具有某种唯一性标志。相应地,关系模型中以主码作为唯一性标志。主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“无意义”的值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与现实世界的应用环境相矛盾,因此这个实体一定不是一个完整的实体。

实体完整性的规则为:若属性A是关系R的主属性,则属性A不能取空值。

2.参照完整性

现实世界中的实体之间往往存在一定的联系,在关系模型中实体与实体的联系是用关系来描述的。参照完整性就是指关系之间能否正确进行联系的规则。两个表能否正确进行联系,外码是关键。【例1-7】 两个实体学生和院系由以下两个关系表示,主码用下画线标识。

学生( 学号 ,姓名,院系号)

院系( 院系号 ,院系名)“院系号”是学生表的一个属性,但不是学生表的主码,“院系号”与院系表的主码相对应,则“院系号”是学生表的外码。学生表中某个属性的取值要参照院系表属性的取值。我们可以清楚地看到外码“院系号”是联系学生表和院系表的桥梁,两个关系进行联系就是通过外码实现的。

参照完整性规则为:若属性(或属性组)F是基本关系R的外码,它与关系S的主码Ks相对应(关系R和S不一定是不同的关系),则对于R中每一个元组在F上的值必须为取空值(F的每个属性值均为空值),或者等于S某个元组的主码值。

在例1-7中,关系“学生R(学号、姓名、院系号F)”和关系“院系S(院系号Ks、院系名)”中,学生关系的“院系号F”可以为空值,表示尚未给该学生分配院系;或者非空值,但必须是院系关系中某个元组的“院系号Ks”属性的值,表示不能把学生分到一个根本不存在的院系,即被参照关系“院系”中一定存在一个元组,它的主码值等于参照关系“学生”中的外码值。

3.用户定义的完整性

用户定义的完整性针对某一具体数据库的约束条件,由应用环境决定,它反映了某一具体应用所涉及的数据必须满足的语义要求。例如,成绩的取值,用户一般会定义为0~100。关系模型应提供定义和检验这类完整性机制,以便用统一的方法处理它们,而不需要由应用程序承担这一功能。

在实际系统中,这类完整性规则一般在建立库表的同时进行定义,应用编程人员不需再做考虑。如果某些约束条件没有建立在库表一级,则应用编程人员应在各模块的具体编程中通过程序进行检验和控制。1.2.4 实体模型

实体模型是利用实体内部的联系和实体间的联系来描述客观事物及其联系,有以下术语。

1.实体

客观存在并且可以相互区别的“事物”称为实体。实体可以是具体的,如一台计算机、一本书、一个工人;也可以是抽象的,如一堂课、一场演出等。

2.属性

描述实体的“特征”称为该实体的属性。如学生有学号、姓名、性别、出生年月、入校总分等方面的属性。属性有“型”和“值”之分,型即为属性名;值即为属性的具体内容,如(201003302,周嫣红,03,女,1990-09-20,2010-09-01,678,-1)。

3.实体型

具有相同属性的实体必然具有共同的特征,所以若干属性的型所组成的集合可以表示一个实体的类型,简称实体型,一般用实体名和属性名集合来表示,如“学生(学号,姓名,性别,出生年月,入校总分)”就是一个实体型。

4.实体集

性质相同的同类实体的集合称为实体集。如所有学生、所有课程。

5.实体间的联系

实体之间的对应关系称为联系,它反映现实世界事物之间的相互关联。例如,学生和课程是两个不同的实体,当学生选课时,两者之间则发生了关联,建立了联系。实体间联系的种类是指一个实体型中可能出现和每一个实体与另一个实体型中多少个具体实体存在联系。

①一对一联系(1∶1):实体集A中的一个实体至多与实体集B中的一个实体相对应;反之,实体集B中的一个实体至多对应于实体集A中的一个实体,则称实体集A与实体集B为一对一联系,如电影院中观众与座位之间、乘车旅客与车票之间、病人与病床之间等。

②一对多联系(1∶N):实体集A中的一个实体与实体集B中的N(N≥0)个实体相对应;反之,实体集B中的一个实体至多与实体集A中的一个实体相对应,如学校与系、班级与学生、省与市等。

③多对多联系(M∶N):实体集A中的一个实体与实体集B中的N(N≥0)个实体相对应;反之,实体集B中的一个实体与实体集A中的M(M≥0)个实体相对应,如教师与学生、学生与课程、工厂与产品、商店与顾客等。1.3关系规范化基础

关系数据库中的关系必须满足一定的规范化要求,对于不同的规范化程度可用范式来衡量。范式(normal form,NF)是符合某一种级别的关系模式的集合,是衡量关系模式规范化程度的标准,达到的关系才是规范化的。目前主要有6种范式:第一范式、第二范式、第三范式、BCNF范式、第四范式和第五范式。满足最低要求的称为第一范式,简称为1NF。在第一范式基础上进一步满足一些要求的称为第二范式,简称为2NF。其余依此类推。显然各种范式之间存在下面联系:

1NF⊃2NF⊃3NF⊃BCNF⊃4NF⊃5NF

通常把某一关系模式R为第n范式简记为R∈nNF。

范式的概念最早是由E.F.Codd提出的。在1971—1972年间,他先后提出了1NF、2NF、3NF的概念,1974年他又和Boyee共同提出了BCNF的概念,1976年Fagin提出了4NF的概念,后来又有人提出了5NF的概念。在这些范式中,最重要的是3NF和BCNF,它们是进行规范化的主要目标。一个低一级范式的关系模式,通过模式分解可以转换为若干高一级范式的关系模式的集合,这个过程称为规范化。1.3.1 规范化的含义

关系模式的规范化主要解决的问题是关系中数据冗余及由此产生的操作异常。当一个关系中的所有分量都是不可分的数据项时,就称该关系是规范化的。

表1-12和表1-13由于具有组合数据项或多值数据项,因而都不是规范化的关系。

表1-12 具有组合数据项的非规范化关系

表1-13 具有多值数据项的非规范化关系1.3.2 关系规范化

1.第一范式(1NF)

如果关系模式R中每个属性值都是一个不可分解的数据项,则称该关系模式满足第一范式(1NF),记为R∈1NF。

第一范式规定了一个关系中的属性值必须是“原子”的,它排斥了属性值为元组、数组或某种复合数据的可能性,使得关系数据库中所有关系的属性值都是“最简形式”,这样要求的意义在于可能做到起始结构简单,为以后复杂情形讨论带来方便。一般而言,每一个关系模式都必须满足第一范式,1NF是对关系模式的起码要求。

非规范化关系转化为1NF的方法很简单,当然也不是唯一的,对表1-12和表1-13分别进行横向和纵向展开,即可转化为表1-14和表1-15所示的符合1NF的关系。

表1-14 具有组合数据项的规范化关系

表1-15 具有多值数据项的规范化关系

但是,满足第一范式的关系模式并不一定是一个好的关系模式。例如,关系模式SLC(SNO,DEPT,SLOC,CNO,GRADE),其中关系SLC中,SNO为学号,DEPT为系名,SLOC为学生住处,CNO为课号,GRADE为成绩。假设每个学生住在同一地方,SLC的码为(SNO,CNO)。

显然,SLC满足第一范式。这里(SNO,CNO)两个属性一起函数决定GRADE。(SNO,CNO)也函数决定DEPT和SLOC。但实际上仅SNO就函数决定DEPT和SLOC,因此非主属性DEPT和SLOC部分函数依赖于码(SNO,CNO)。完全依赖用F表示,部分依赖用P表示。函数依赖包括:

SLC关系存在以下3个问题:(1)插入异常

假若要插入一个SNO="95102",DEPT="IS",SLOC="N",但还未选课的学生,即这个学生无CNO,这样的元组不能插入SLC中,因为插入时必须给定码值,而此时码值的一部分为空,因而该学生的信息无法插入。(2)删除异常

假定某个学生只选修了1门课,如99022号学生只选修了3号课程,课程3是主属性,删除了课程号3,整个元组就不能存在了,也必须随之删除,从而删除了99022号学生的其他信息,产生了删除异常,即不应删除的信息也删除了。(3)数据冗余度大

如果一个学生选修了10门课程,那么他的DEPT和SLOC值就要重复存储10次。并且当某个学生从数学系转到信息系,这只是一件事,只需要修改此学生元组中的DEPT值。但因为关系模式SLC还含有系的住处SLOC属性,学生转系将同时改变住处,因而还必须修改元组中SLOC的值。另外,如果这个学生选修了10门课,由于DEPT,SLOC重复存储了10次,当数据更新时必须无遗漏地修改10个元组中全部DEPT,SLOC信息,这就造成了修改的复杂化,存在破坏数据一致性的隐患。因此,SLC不是一个好的关系模式。

2.第二范式(2NF)

如果一个关系模式R∈1NF,且它的所有非主属性都完全函数依赖于R的任一候选码,则R∈2NF。

关系模式SLC出现上述问题的原因是DEPT,SLOC对码的部分函数依赖。为了消除这些部分函数依赖,可以采用投影分解法,把SLC分解为两个关系模式:

SC(SNO,CNO,GRADE)

SL(SNO,DEPT,SLOC)

其中,SC的码为(SNO,CNO),SL的码为SNO。

显然,在分解后的关系模式中,非主属性都完全函数依赖于码了,从而使上述3个问题在一定程度上得到部分的解决。

①在SL关系中可以插入尚未选课的学生。

②删除学生选课情况涉及的是SC关系,如果一个学生所有的选课记录全部删除了,只是SC关系中没有关于该学生的记录了,不会牵涉到SL关系中关于该学生的记录。

③由于学生选修课程的情况与学生的基本情况是分开存储在两个关系中的,因此不论该学生选多少门课程,他的DEPT和SLOC值都只存储了一次,这就大大降低了数据冗余程度。

④由于学生从数学系转到信息系,只需修改SL关系中该学生元组的DEPT值和SLOC值,由于DEPT,DLOC并未重复存储,因此简化了修改操作。

2NF不允许关系模式的属性之间有函数依赖X→Y,其中X是码的真子集,Y是非主属性。显然,码只包含一个属性的关系模式,如果属于1NF,那么它一定属于2NF,因为它不可能存在非主属性对码的部分函数依赖。

上例中的SC关系和SL关系都属于2NF。可见,采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大等问题。

但是将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。也就是说,属于2NF的关系模式并不一定是一个好的关系模式。

例如,2NF关系模式SL(SNO,DEPT,SLOC)中有下列函数依赖。

SNO→DEPT

DEPT→SLOC

SNO→SLOC

由上可知,SLOC通过DEPT传递函数依赖于SNO,即SL中存在非主属性对码的传递函数依赖,SL关系中仍然存在删除异常、数据冗余度大和修改复杂的问题。

①删除异常:如果某个系的学生全部毕业了,在删除该系学生信息的同时,把这个系的信息也丢掉了。

②数据冗余度大:每一个系的学生都住在同一个地方,关于系的住处的信息却重复出现,重复次数与该系学生人数相同。

③修改复杂:当学校调整学生住处时,比如信息系的学生全部迁到另一地方住宿,由于关于每个系的住处信息是重复存储的,修改时必须同时更新该系所有学生的SLOC属性值。

所以,SL仍然存在操作异常问题。仍然不是一个好的关系模式。

3.第三范式(3NF)

如果一个关系模式R∈2NF,且所有非主属性都不传递函数依赖于任何候选码,则R∈3NF。

关系模式SL出现上述问题的原因是SLOC传递函数依赖于SNO。为了消除该传递函数依赖,可以采用投影分解法,把SL分解为两个关系模式:

SD(SNO,DEPT)

DL(DEPT,SLOC)

其中,SD的码为SNO,DL的码为DEPT。

显然,在关系模式中既没有非主属性对码的部分函数依赖也没有非主属性对码的传递函数依赖,基本上解决了上述问题。

①DL关系中可以插入不在校学生的院系信息。

②某个系的学生全部毕业了,只是删除SD关系中的相应元组,DL关系中关于该系的信息仍然存在。

③关于系的住处的信息只在DL关系中存储一次。

④当学校调整某个系的学生住处时,只需修改DL关系中一个相应元组的SLOC属性值。

3NF不允许关系模式的属性之间有函数依赖X→Y,其中X不包含码,Y是非主属性。X不包含码有两种情况:一种情况X是码的真子集,这也是2NF不允许的;另一种情况X含有非主属性,这是3NF进一步限制的。

上例中的SD关系和DL关系都属于3NF。可见,采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。

但是,将一个2NF关系分解为多个3NF的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。也就是说,属于3NF的关系模式虽然基本上消除大部分异常问题,但解决得并不彻底,仍然存在不足。

例如,模型SC(SNO,SNAME,CNO,GRADE),如果姓名是唯一的,模型存在两个候选码:(SNO,CNO)和(SNAME,CNO)。

模型SC只有一个非主属性GRADE,对两个候选码(SNO,CNO)和(SNAME,CNO)都是完全函数依赖,并且不存在对两个候选码的传递函数依赖,因此SC∈3NF。

但是当学生退选了课程,元组被删除也失去学生学号与姓名的对应关系,因此仍然存在删除异常的问题;并且由于学生选课很多,姓名也将重复存储,造成数据冗余。因此3NF虽然已经是比较好的模型,但仍然存在改进的余地。

4.BCNF范式

若关系模式R∈1NF,对任何非平凡的函数依赖X→Y(Y⊄X),X均包含码,则R∈BCNF。

BCNF是从1NF直接定义而成的,可以证明,如果R∈BCNF,则R∈3NF。

由BCNF的定义可以看到,每个BCNF的关系模式都具有如下3个性质。

①所有非主属性都完全函数依赖于每个候选码。

②所有主属性都完全函数依赖于每个不包含它的候选码。

③没有任何属性完全函数依赖于非码的任何一组属性。

如果关系模式R∈BCNF,由定义可知,R中不存在任何属性传递函数依赖于或部分依赖于任何候选码,所以必定有R∈3NF。但是,如果R∈3NF,那么R未必属于BCNF。

如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。

BCNF是对3NF的改进,但是在具体实现时有时是有问题的。例如,下面的模型SJT(U,F)中(注,U是属性集,F是依赖集):

U=STJ,F={SJ→T,ST→J,T→J}

码是ST和SJ,没有非主属性,所以STJ∈3NF。

但是,非平凡的函数依赖T→J中T不是码,因此SJT不属于BCNF。

而当用分解的方法提高规范化程度时,将破坏原来模式的函数依赖关系,这对于系统设计来说是有问题的。这个问题涉及模式分解的一系列理论问题,在这里不再做进一步的探讨。

在信息系统的设计中,普遍采用的是“基于3NF的系统设计”方法,就是由于3NF是无条件可以达到的,并且基本解决了“异常”的问题,因此这种方法目前在信息系统的设计中仍然被广泛地应用。

如果仅考虑函数依赖这一种数据依赖,属于BCNF的关系模式已经很完美了。但如果考虑其他数据依赖,如多值依赖,属于BCNF的关系模式仍存在问题,不能算是一个完美的关系模式。1.4Access简介

Access是Office办公套件中一个极为重要的组成部分。Access 1.1诞生于20世纪90年代初期,目前最新版本是2015年发布的Access 2016,而得以广泛使用的是2010年发布的Access 2010。历经多次升级改版,Access的功能越来越强大,操作则越来越简单。尤其是Access与Office的高度集成,风格统一的操作界面使得许多初学者更容易掌握。Access目前已经是应用广泛的中小型数据库管理程序。Access与其他数据库开发系统相比,其优点是用户不用编写一行一行的代码,就可以在很短的时间里开发出一个功能强大且相当专业的数据库应用程序,并且这一过程是完全可视的,如果能给它加上一些简短的VBA代码,那么开发出的程序功能将更加完善。1.4.1 Access 2010的启动和退出

要想熟练应用Access 2010,首先要掌握Access 2010的启动和关闭。

1.Access 2010的启动

应用Access的第一步就是启动Access,常用的启动方式有下面几种。

①从“开始”菜单启动Access。选择“开始”→“程序”→“Microsoft Office”→“Microsoft Office Access 2010”命令,即可打开Access窗口,如图1-6所示。

图1-6 Access窗口

②使用“运行”命令启动Access。选择“开始”→“运行”命令,在弹出的“运行”对话框中输入命令“msaccess”,单击“确定”按钮即可。

③通过打开已有的数据库来启动Access。在Windows资源管理器中,双击一个Access数据库,即可启动Access,如图1-7所示。

图1-7 打开指定的数据库窗口

2.Access 2010的退出

Access 2010的退出方式与Microsoft Office 2010办公套件中其他软件的退出方法相同。要退出Access 2010可选择以下几种方式之一:

①选择“文件”→“退出”命令。

②单击Access主窗口的“关闭”按钮。

③单击标题栏左侧“控制菜单”图标,在下拉菜单中选择“关闭”命令。

④双击标题栏左侧“控制菜单”图标。

⑤按【Alt+F4】组合键。1.4.2 Access 2010的工作环境

Access 2010用户界面与之前版本相比发生了很多变化。功能区取代了以前版本中的菜单和工具栏。导航窗格取代并扩展了数据库窗口的功能。Access 2010中新增的Backstage视图使用户能够访问应用于整个数据库的所有命令或来自“文件”选项卡的命令。下面来了解Access 2010的工作界面。

1.Access 2010的窗口组成

成功启动Access 2010后,就会进入Access 2010工作首界面,Access 2010以全新的用户界面展现在用户面前,如图1-8所示。

图1-8 Access 2010工作首界面

与以前的版本相比,尤其是与Access 2007之前的版本相比,Access 2010的用户界面发生了重大变化。Access 2007中引入了两个主要的用户界面组件:功能区和导航窗格。而在Access 2010中,不仅对功能区进行了多处更改,而且还新引入了第3个用户界面组件Microsoft Office Backstage视图。Access 2010用户界面的3个主要组件是:

①功能区:包含多组命令且横跨程序窗口顶部的带状选项卡区域。

②Backstage视图:功能区的“文件”选项卡上显示的命令集合。

③导航窗格:Access程序窗口左侧的窗格,用户可以在其中使用数据库对象。导航窗格取代了Access 2007之前版本中的数据库窗口。

这3个元素提供了供用户创建和使用数据库的环境。Access 2010系统的主窗口如图1-9所示。通常Access 2010窗口由5部分组成:选项卡按钮组、功能区、导航窗格、状态栏和数据库窗口。其中,选项卡按钮组在屏幕的最上方,功能区在选项卡按钮组的下面,左边是导航窗格,状态栏在屏幕的最下方,状态栏右上方的空间则是数据库窗口。

图1-9 Access 2010主窗口

2.功能区

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载