1、数数据据库库原原理理及及应应用用(SQLServer2005)授课教师:授课教师:*2024年年11月月10日日第第1 1章章 数据库概述数据库概述第第1章章数据库概述数据库概述任务目标:熟悉数据管理技术的基本概念;掌握数据库系统的构成、体系结构;掌握数据模型的三要素、分类;理解概念模型及其表示方法。第第1章章数据库概述数据库概述1.1 数据管理技术基本概念1.2 数据库系统1.3 数据模型习题1.1数据管理技术的基本概念数据管理技术的基本概念1.1.1信息与数据姓名:张三姓名:张三年龄:年龄:17性别:男性别:男身高:身高:1.67m体重:体重:50kg客观事物数据表达数据表达信息(Info
2、rmation)1.1基本概念基本概念1.1.1信息与数据数据(Data):是对客观事物及其活动的抽象符号表示;存储在某一种媒体上可以鉴别的符号资料;表示形式多样,可以是数据、文本、图形、声音等。信息(Information)是经过加工处理加工处理后具有一定含义的数据集合;以某种特定数据形式表现。数据处理(DataProcessing)将数据转换成信息的过程称为数据处理;对数据进行收集、储存、分类、加工等活动;目的:从数据出发,推导、抽取有价值的信息。1.1基本概念基本概念数据管理是指对数据进行收集、分类、组织、编码、存储、检索和维护等,数据管理技术的发展经历了人工管理、文件系统和数据库系统3
3、个阶段,目前正在向着网络化、智能化和集成化的方向发展。数据管理技术发展三阶段:1人工管理阶段2文件系统阶段3数据库系统阶段1.1.2数据管理技术的发展1.1基本概念基本概念数据库系统阶段特点如下:数据管理者:数据库管理系统。数据面向的对象:整个应用系统。数据的共享程度:共享性良好,冗余度小。数据的独立性:独立性良好,具备高度的逻辑独立性和物理独立性。数据的结构化:单条记录内部有结构,并使用数据模型描述,整体上有结构。数据控制能力:由数据库管理系统提供数据安全性、完整性等数据控制。1.1.2数据管理技术的发展1.2数据库系统数据库系统数据库系统(DataBaseSystem,DBS)是指引进了数
4、据库技术后的计算机系统,它能够有组织地、动态地存储大量数据,提供数据处理和数据共享机制。数据库系统是一个复杂的系统,一般情况下由硬件系统、软件系统、数据库和用户组成。1.1.2数据库系统构成1.2数据库系统数据库系统数据库系统的基本组成主要有以下几项:(1)系统硬件(HW,HardWare)(2)操作系统(OS,OperatingSystem)(3)数据库(DB,DateBase)(4)数据库管理系统(DBMS,DateBaseManagementSystem)(5)数据库应用系统开发软件(DT,DevelopmentTools)(6)数据库应用系统(DBAS,DateBaseApplicat
5、ionSystem)(7)用户(User)1.1.2数据管理技术的发展1.2数据库系统数据库系统数据库管理系统(DataBaseManagementSystem,DBMS)是处理数据访问的软件系统,是位于用户与操作系统之间的一层对数据库进行管理的软件。数据库在建立、运行和维护时由数据库管理系统统一管理、统一控制。数据库管理系统的功能主要包括:数据定义:数据库提供数据定义语言(DDL,DateDefinitionLanguage)对数据库进行定义。数据操纵:数据库提供数据操作语言(DML,DateManipulationLauguage)对数据进行具体操作。数据库的运行管理:数据库提供数据控制语
6、言(DCL,DateControlLanguage)对数据进行完整性控制、安全性控制、数据库恢复、数据库维护和数据库的并发控制等。数据字典:数据库的逻辑结构、物理存储结构和完整性约束均保存在数据字典(DD,DateDictionary)中。数据通信接口:数据库管理系统需要提供与其他软件系统进行通信的功能。例如提供与其他数据库管理系统的接口,从而能够将数据转换为另一个数据库管理系统能够接受的格式,或者接收其他数据库管理系统的数据。常见的数据库管理系统有Qracle、SQLServer、Sybase、MYSQL、DB2、Access等。1.1.2数据管理技术的发展1.2数据库系统数据库系统根据数据
7、库从建设到运行的整个过程中不同岗位的工作性质,可以将其用户分为两个大类:开发类用户和应用类用户。1.1.2数据管理技术的发展数据库分析员开发类用户应用程序员数据库管理员终端用户应用类用户数据库用户分类1.2数据库系统数据库系统1单机数据库系统整个数据库系统,包括应用程序、数据库管理系统、数据信息,都安装在一台计算机上,这类系统系统结构简捷,系统运行速度快,但不同机器之间不能进行数据共享,安全性较差,只适用于小型用户使用。2主从结构的数据库系统1.2.2数据库系统体系结构应用终端(应用程序)主 机(DBMS、DB)发送请求响应请求主从结构的数据库系统1.2数据库系统数据库系统3分布式结构的数据库
8、系统数据库中的数据在逻辑上是一个整体,但物理地分布在整个数据库系统网络下的不同结点上。网络中的每个结点都可以独立处理本地数据库中的数据;同时也可以同时存取和处理网络上的多个异地数据库中的数据,执行全网的数据库应用。4客户服务器(C/S,Client/Server)结构的数据库系统该结构下的数据库系统显著减少了网络上的数据传输量,提高了系统的性能、吞吐量和负载能力。C/S结构分为二层C/S体系结构和三层C/S体系结构。SQLServer2005是可用于C/S模式的数据库管理系统。5浏览器/服务器(B/S,Browser/Server)结构的数据库系统1.2.2数据库系统体系结构1.2数据库系统数
9、据库系统1.2.2数据库系统体系结构数据库应用端计算机操作系统客户端1计算机硬件数据库应用端计算机操作系统客户端n计算机硬件数据库管理系统计算机操作系统计算机硬件数据库服务器端请求响应响应二层C/S结构1.2数据库系统数据库系统1.2.2数据库系统体系结构应用程序界面计算机操作系统客户端1计算机硬件应用程序界面计算机操作系统客户端n计算机硬件数据库应用程序数据库服务器数据库管理系统计算机操作系统计算机硬件数据库服务器端请求响应响应请求响应三层C/S结构1.2数据库系统数据库系统1.2.2数据库系统体系结构三层B/S结构浏览器计算机操作系统客户端1计算机硬件浏览器计算机操作系统客户端n计算机硬件
10、数据库应用程序浏览器服务器数据库管理系统计算机操作系统计算机硬件数据库服务器端请求响应响应请求响应1.2数据库系统数据库系统数据库管理系统将数据库建立为三级模式结构和二级存储映象,这便是数据库的体系结构。1.2.3数据库的体系结构外部应用1外部应用2外部应用3外部应用n外模式1外模式2外模式n模式内模式数据库模式模式/外模式映象外模式映象模式模式/内模式映象内模式映象三级模式结构和二级存储映象1.3数据模型数据模型数据模型(DataModel)是对数据特征的抽象,是严格定义的概念集合。数据模型包括数据库数据的结构部分、数据库数据的操作部分和数据库数据的约束条件。即数据模型所描述的三个部分:(1
11、)数据结构(2)数据操作基本的数据操作包括两大类:检索:数据查询更新:数据的插入、删除和更新等操作(3)数据的完整性约束1.3.1数据模型的三要素1.3数据模型数据模型在实际数据库应用中,为了更为便捷、准确的描述现实世界中的数据,通常依据不同的应用环境,采用不同的数据模型。数据模型按不同的应用层次分成三种类型:(1)概念数据模型(2)逻辑数据模型(3)物理数据模型如果要将现实世界中的具体事物抽象和表示为根据某具体应用环境的、某种数据库管理系统支持的数据模型,那么通常需要首先把现实世界转换为信息世界(概念模型),再由信息世界转换成数据库管理系统支持的逻辑模型。1.3.2数据模型分类及关系1.3数
12、据模型数据模型数据模型(DataModel)是对数据特征的抽象,是严格定义的概念集合。数据模型包括数据库数据的结构部分、数据库数据的操作部分和数据库数据的约束条件。即数据模型所描述的三个部分:(1)数据结构(2)数据操作基本的数据操作包括两大类:检索:数据查询更新:数据的插入、删除和更新等操作(3)数据的完整性约束1.3.2数据模型分类及关系1.3数据模型数据模型1.3.2数据模型分类及关系机器世界关系数据模型信息世界实体及其联系现实世界客观事物及其联系存 在概念模型逻辑模型 三个世界模型关系1.3数据模型数据模型概念模型是对信息世界的建模,是对真实世界中问题域内的事物的描述,它不依赖于某一个
13、具体数据库管理系统支持的数据模型,但概念模型可以转换为计算机上某数据库管理系统支持的特定数据模型。概念模型具备以下特点:能够方便、直接地表达应用中的各种语义知识。简单、清晰、易于理解,是用户与数据库设计人员之间进行交流的媒介。1.3.3概念模型及其表示方法1.3数据模型数据模型1基本概念(1)实体(Entity)客观存在并可相互区别的事物和活动的抽象称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如:一个员工。(2)属性(Attribute)实体和联系所具有的特性称为属性。一个实体可以由若干个属性来描述。例如:员工编号、员工姓名、员工性别、员工年龄。(3)主码(Key)能唯一
14、标识实体的属性或属性集称为码。例如:实体员工中的员工编号。(4)域(Domain)属性的取值范围称为该属性的域。例如:可以为员工编号设置一定的取值范围。1.3.3概念模型及其表示方法1.3数据模型数据模型(5)实体型(EntityType)用实体名及描述它的各属性名,可以刻画出全部同质实体的共同特征和性质,它被称为实体型。(6)实体集(EntitySet)同型实体的集合称为实体集。(7)联系(Relationship)实体集间或一个实体集内的各实体之间存在的关系,现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系。联系有以下三种:一对一联系(1:1)一对多联系
15、(1:n)多对多联系(m:n)1.3.3概念模型及其表示方法1.3数据模型数据模型2概念模型表示方法联系方法(Entity-RelationshipApproach)用这个方法描述的概念模型称为实体联系模型,简称ER模型。ER模型(Entity-RelationshipModel)用E-R图来描述现实世界的概念模型,它是一个面向问题的概念模型。E-R图的描述方式很接近人的思维方式,描述过程不设计数据在数据库中的表示和存取,便于用户与系统开发人员之间的交流。在ER模型中,信息由实体型、实体属性和实体间的联系三种概念单元来表示。1.3.3概念模型及其表示方法1.3数据模型数据模型实体型:用矩形表示
16、,矩形框内写明实体名。属性:是实体的说明,用椭圆形表示,并用无向边将其与相应的实体连接起来。如图所示,学生实体具备学号、姓名、性别等属性。1.3.3概念模型及其表示方法学 生学 号姓 名性 别学生实体属性1.3数据模型数据模型联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)。1.3.3概念模型及其表示方法课 程课程号课程名课程类型学 生学 号姓 名性 别选修nm课程与学生的联系1.3数据模型数据模型联系本身也是一种实体型,可以有属性。如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。学生与课程具有联系选课
17、,课程被学生选修后,学生需获得对应课程的成绩。因此,选修联系具有属性“成绩”。1.3.3概念模型及其表示方法课 程课程号课程名课程类型学 生学 号姓 名性别选修nm成 绩联系“选修”的属性“成绩”第第1章章数据库概述数据库概述本章小结:数据与信息;数据库系统与数据库管理系统;数据模型及其分类;概念模型及E-R图的画法。ThankYou!数数据据库库原原理理及及应应用用(SQLServer2005)授课教师:授课教师:*2024年年11月月10日日第第2 2章章 关系数据库基础关系数据库基础第第2章章关系数据库基础关系数据库基础任务目标:了解数据模型的分类,掌握关系模型的组成及相关概念;了解关系
18、代数的基础知识,能运用关系代数进行传统的集合运算和专门的集合运算;掌握关系完整性的相关知识,能够对关系进行实体完整性、参照完整性和用户定义完整性约束;掌握关系规范化理论,能够使用1NF、2NF和3NF对关系进行规范化。第第2章章关系数据库基础关系数据库基础2.1 关系模型的基本概念2.2 关系数据的基本运算2.3 关系的完整性2.4 关系规范化理论习题2.1关系模型的基本概念关系模型的基本概念2.1.1关系模型在数据库中,有些数据实体之间存在着某种联系,用来描述这些数据实体间关联形式的模型叫做数据模型。在数据库技术领域中,较为经典的数据模型有三种,分别是:层次模型;网状模型;关系模型,采用二维
19、表结构描述数据实体间的关联,以记录组或数据表的形式组织数据,以便于利用各种地理实体与属性之间的关系进行存储和变换,不分层也无指针,是建立空间数据和属性数据之间关系的一种非常有效的数据组织方法。2.1关系模型的基本概念关系模型的基本概念关系模型和层次、网状模型相比,有以下特点:1)数据结构简单(二维表)2)扎实的理论基础3)关系运算4)关系模式的数据独立性强关系模型由三部分组成:关系数据结构;关系数据操作;关系数据完整性约束。2.1.1关系模型2.1关系模型的基本概念关系模型的基本概念2.1.2关系基本概念在关系和关系数据库的学习中,需要先学习以下术语和相关概念。1.域域是一组具有相同数据类型的
20、值的集合。2.元组关系中的每个元素是关系中的元组,可以用来表示一个实体。3.关系关系是一个规范化的二维表,表的每一行对应一个元组,表的每一列对应一个域,由于域可以相同,为了加以区分表中的列,必须对每列起一个名字,称为属性。2.1关系模型的基本概念关系模型的基本概念基本的关系满足以下特性:关系(二维表)中的每一行对应一个元组,即一个实体;表的每一列对应某个实体的一个属性。关系中的元组(实体)不能完全相同。关系中的属性名称不能重复。关系中的元组次序和属性次序可以互换。关系中的每个属性都是不可再分解的数据项。关系的属性中必须有一个是关键字,用来唯一标识一个实体。2.1.2关系基本概念2.1关系模型的
21、基本概念关系模型的基本概念例:学生选课系统中,其概念模型中有学生实体、课程实体以及选课联系。学号(studentID)姓(studentName)性别(Sex)20100101张小丽女20100102王刚男20100103李平女20100104郭鹏男20100105刘翔男20100106吴飞男20100107张国强男20100108李国庆男课程号(courseID)课程名(coursename)课程类别(typename)342101计算机基础专业课342102数据库应用专业课342103C语言程序设计专业课342104大学英语基础课342105高等数学基础课2.1.2关系基本概念学号(stu
22、dentID)课程号(courseID)成绩(Grade)20100102342103862010010134210179201001053421028120100107342104902010010834210192201001023421047520100107342105802010010634210170关系选课关系课程关系学生2.1关系模型的基本概念关系模型的基本概念4.属性描述实体或者联系的特性的列名称为属性,属性分为主属性和非主属性。主属性:主码的各个属性。非主属性:除了主属性之外的属性。例如,关系Student中的studentID、studentName、Sex是关系Stud
23、ent的属性。在关系Student的各属性中,主属性有studentID,非主属性有studentName和Sex。关系Course中的courseID、coursename、typename是关系Course的属性。在关系Course的各属性中,主属性有courseID,非主属性有coursename和typename。2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念5.属性值描述实体或者联系的具体数据称为属性值。属性值的取值范围是域。例如,关系Student中的20100101,20100105,张小丽,张国强,女,男等都是关系Student的属性值。关系Course中的3
24、42101,342103,C语言程序设计,数据库应用,专业课,基础课等都是关系Course的属性值。关系Student_Course中的20100102,20100108,342104,342101,70,81等都是关系Student_Course的属性值。2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念6.关系型关系表的所有列标题,即所有属性名。例如,关系Student的关系型可表示成为:(studentID,studentName,Sex)关系Course的关系型可表示成为:(courseID,coursename,typename)关系Student_Course的关系型
25、可表示成为:(studentID,courseID,Grade)2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念7.关键字关系中用来唯一标识一个实体的某个属性或属性组。每个关系只能有一个关键字,又被称为主码或主键。例如,关系Student中的关键字是studentID属性。关系Course中的关键字是courseID属性。关系Student_Course中的关键字是studentID和courseID属性组,原理与关系Student_Course主属性的选取一样。2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念8.外关键字关系中用的某个属性或属性组不是本关系的关
26、键字,而是另一个关系的关键字,又被称为外码或外键。例如,关系Student_Course中的studentID属性和courseID属性都是外关键字。在关系Student和关系Student_Course中没有外关键字。9.候选码候选码是指可以作为关键字的属性或属性组。候选码可以有多个,可从候选码中选取一个或部分作为关键字。2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念10.关系模式用来描述关系的关系名称。关系模式通常可以简记为:关系名(属性名1,属性名2,属性名n)。如,学生关系模式通常可以简记为:Student(studentID,studentName,Sex)课程关系
27、模式通常可以简记为:Course(courseID,coursename,typename)选课关系模式通常可以简记为:Student_Course(studentID,courseID,Grade)2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念1.关系数据库关系数据库是指在一个给定的现实世界应用领域中,用于描述实体及实体之间联系的所有关系表的集合。2.关系数据库系统采用关系数据模型构造的数据库系统,被称为关系数据库系统。关系数据库系统是目前使用最为广泛的数据库系统。2.1.3关系数据库2.2关系数据的基本运算关系数据的基本运算关系数据的运算是以关系代数为基础的。关系代数是一
28、种抽象的查询语言,用于对关系的运算来表达各种操作,其运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符(并、差、交、笛卡尔积);专门的关系运算符(选择、投影、连接);算术比较符(大于、小于、等于、大于等于、小于等于、不等于);逻辑运算符(与、或、非)。2.2.1关系代数2.2关系数据的基本运算关系数据的基本运算比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的,所以关系代数的运算按运算符的不同主要分为传统的集合运算和专门的关系运算两类。传统的集合运算符运算名称运算符号并差交笛卡儿积2.2.1关系代数专门的关系运算符运算名称运算符号选择投影连接专门的关系运算符传统
29、的集合运算符2.2关系数据的基本运算关系数据的基本运算传统的集合运算是二目运算。假设有两个关系R和S,t是元组变量,关系R为学习成绩优秀的学生,关系S为心理素质优秀的学生,分别如表2-6和表2-7所示。学生姓名学生性别张小丽女王刚男李平女郭鹏男刘翔男吴飞男张国强男李国庆男学生姓名学生性别张小丽女王刚男王晓霞女郭鹏男刘翔男2.2.2传统的集合运算表2-7心理素质优秀的学生关系S表2-6学习成绩优秀的学生关系R2.2关系数据的基本运算关系数据的基本运算学生姓名学生性别张小丽女王刚男李平女郭鹏男刘翔男吴飞男张国强男李国庆男王晓霞女2.2.2传统的集合运算1.并运算任务2-1对以上R和S两个关系进行并
30、运算。任务分析:按照学习成绩优秀的学生关系和心理素质优秀的学生关系,可知并运算RS表示学习成绩优秀或心理素质优秀的学生,可以得到RS的关系如下表2-8所示。表2-8并运算后的新关系2.2关系数据的基本运算关系数据的基本运算2.差运算任务2-2对以上R和S两个关系进行差运算。任务分析:按照学习成绩优秀的学生关系和心理素质优秀的学生关系,可知差运算R-S表示学习成绩优秀的学生但心理素质没有达到优秀的学生,可以得到R-S的关系如下表2-9所示。学生姓名学生性别李平女张国强男李国庆男吴飞男2.2.2传统的集合运算表2-9差运算后的新关系2.2关系数据的基本运算关系数据的基本运算3.交运算任务2-3对以
31、上R和S两关系进行交运算。任务分析:按照学习成绩优秀的学生关系和心理素质优秀的学生关系,可知交运算RS表示学习成绩优秀同时心理素质也优秀的学生,可以得到RS的关系如下表2-10所示。学生姓名学生性别张小丽女王刚男刘翔男郭鹏男2.2.2传统的集合运算表2-10差运算后的新关系2.2关系数据的基本运算关系数据的基本运算4.笛卡儿积运算任务2-4假如在学生选课系统中,学生关系R如表2-11所示,选课关系S如表2-12所示,对以上R和S两关系进行交运算。任务分析:笛卡儿积是关系的连接,在形成的新关系中前m个属性来自R,后n个属性来自S,即新关系的属性为m+n;关系R的元组个数为a,关系S的元组个数为b
32、,则新关系的元组个数为ab。2.2.2传统的集合运算2.2关系数据的基本运算关系数据的基本运算学号姓名性别20100101张小丽女20100102王刚男学号课程号成绩2010010234210386201001013421017920100105342102812010010734210490学号姓名性别学号课程号成绩20100101张小丽女201001023421038620100101张小丽女201001013421017920100101张小丽女201001053421028120100101张小丽女201001073421049020100102王刚男20100102342103862
33、0100102王刚男201001013421017920100102王刚男201001053421028120100102王刚男20100107342104902.2.2传统的集合运算表2-13笛卡儿积RS表2-11学生关系R表2-12选课关系S2.2关系数据的基本运算关系数据的基本运算1选择运算选择又称为限制。它是在关系R中选择满足给定条件的元组。任务2-5使用选择运算从学生关系R中选择男学生,学生关系R如表2-14所示。任务分析:运算过程中选择性别条件为“男”的元组组成新关系。进行过选择运算后的新关系如表2-15所示。学号姓名性别20100101张小丽女20100102王刚男2010010
34、3李平女20100104郭鹏男20100105刘翔男20100106吴飞男20100107张国强男20100108李国庆男学号姓名性别20100102王刚男20100104郭鹏男20100105刘翔男20100106吴飞男20100107张国强男20100108李国庆男2.2.3专门的关系运算表2-14学生关系R表2-15选择运算后新关系2.2关系数据的基本运算关系数据的基本运算2投影运算关系R上的投影是从R中选择出若干属性列组成新的关系。任务2-6使用投影运算从表2-15所示关系中运算出学生姓名和性别情况。任务分析:运算过程中选择表2-15所示关系的“姓名”和“性别”情况组成新关系。进行过投
35、影运算后的新关系如表2-16所示。姓名性别王刚男郭鹏男刘翔男吴飞男张国强男李国庆男2.2.3专门的关系运算表2-16选择运算后的新关系2.2关系数据的基本运算关系数据的基本运算3连接运算连接也称为连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组,形成一个新的关系。连接分为两种:1)等值连接;等值连接是在关系R和关系S的连接中,比较条件为等于,则在笛卡儿积中,按等于的比较条件进行选择。2)自然连接。自然连接是一种特殊的等值连接,它要求两个关系R和S中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。此时,可以将自然连接运算过程理解为先进行等值连接,再去处重复属性列。2
36、.2.3专门的关系运算2.2关系数据的基本运算关系数据的基本运算等值连接任务2-7学生、选课和课程关系如表2-17、表2-18和表2-19所示,使用等值连接进行关系运算。任务分析:以选课表中的courseID和studentID条件进行等值连接,观察等值连接的结果是具有重复属性的新关系。新关系如表2-20所示。学号姓名性别0101张小丽女0102王刚男学号课程号成绩0101342103860101342101790102342102810102342104902.2.3专门的关系运算课程号(courseID)课程名(coursename)课程类别(typename)342101计算机基础专业课
37、342102数据库应用专业课342103C语言程序设计专业课342104大学英语基础课342105高等数学基础课表2-17学生关系(Student)表2-18选课关系(Student_Course)表2-19课程关系(Course)2.2关系数据的基本运算关系数据的基本运算学号姓名性别学号课程号成绩课程号课程名课程类别0101张小丽女010134210386342103C语言程序设计专业课0101张小丽女010134210179342101计算机基础专业课0102王刚男010234210281342102数据库应用专业课0102王刚男010234210490342104大学英语基础课2.2.3
38、专门的关系运算表2-20等值连接关系2.2关系数据的基本运算关系数据的基本运算学号姓名性别课程号成绩课程名课程类别0101张小丽女34210386C语言程序设计专业课0101张小丽女34210179计算机基础专业课0102王刚男34210281数据库应用专业课0102王刚男34210490大学英语基础课2.2.3专门的关系运算表2-21自然连接关系自然连接自然连接是一种特殊的等值连接,它要求两个关系R和S中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。此时,可以将自然连接运算过程理解为先进行等值连接,再去处重复属性列。任务2-8根据任务2-7的结果,进行自然连接。任务分析:
39、自然连接运算过程理解为先进行等值连接,再去处重复属性列。因此,可以在表2-20的基础上去处重复列。其结果如表2-21所示。2.3关系的完整性关系的完整性任意一个关系通常对应现实世界的某一个实体,如学生关系对应于学生的集合,课程关系对应课程的集合。现实世界中的实体是可区分的,即它们具有自身特定的标识。相应地,关系模型中以主码作为唯一性标识。主属性不能取空值,即不能是“不知道”或“无意义”的值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与实体的定义相矛盾。实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。2.3.1实体完整性2.3关系的完整性关系的完整
40、性任务2-9建立表“学生”,其中的属性“课程号”为主码,该主码唯一且不能为空。使用T-SQL语言定义“学生”表。任务分析:T-SQL语言的相关知识将在本书第五章介绍,此处从T-SQL语言定义数据表的角度帮助读者理解实体完整性规则。使用T-SQL语言创建某表“课程”的语句如下:CREATETABLECOURSE(courseIDchar(8)NOTNULLPRIMARYKEY,coursenamevarchar(20)null,typenamevarchar(18)null)从表的定义中可以看到“courseIDchar(8)NOTNULLPRIMARYKEY”,对“课程”表的主属性“PRIMA
41、RYKEY”指明了“NOTNULL”。依据以上T-SQL语句进行了表的创建后,当有基于此表的数据输入、修改等操作时,数据库管理系统自动对输入和修改的数据进行检查,从而可以保障数据的有效性。2.3.1实体完整性2.3关系的完整性关系的完整性实体与实体之间往往存在某种依存关系,这种依存关系叫做联系。在关系模型中实体及实体间的联系都是用关系来描述的,这样就自然存在着关系与关系间的引用,即关系参照的完整性。在一个关系模型中,关系R中的外码对应另一个关系S的主码(关系R和S不一定是不同的关系),关系R中外码的取值要参照另一个关系S主码的取值。此时,R为参照关系,S为被参照关系。参照完整性规则:定义外码与
42、主码之间的引用和参照规则,参照关系的外码取值不能超出被参照关系的主码取值。2.3.2参照完整性2.3关系的完整性关系的完整性任务2-10新建一个关系“选课”,与任务2-9中关系“课程”形成参照关系和被参照关系,此时“选课”中外码courseID的值不能超过“课程”中courseID的值。使用T-SQL语言定义参照完整性。任务分析:T-SQL语言的相关知识将在本书第五章介绍,此处从T-SQL语言实现参照完整性约束的角度帮助读者理解参照完整性。使用T-SQL语言创建某表“选课”的语句如下:CREATETABLEStudent_Course(studentIDchar(10)NOTNULL,cour
43、seIDchar(8)NOTNULL,GradeTinyint,PRIMARYKEY(studentID,courseID),FROEIGNKEY(courseID)REFERENCESCourse(courseID)当对“选课”中插入数据时,数据库管理系统检查其插入的courseID值是否在“课程”的courseID属性值中,如果存在则可插入,如不存在则不能插入。2.3.2参照完整性2.3关系的完整性关系的完整性2.3.3用户定义完整性实体完整性和参照性适用于任何关系数据库系统,而用户自定义的完整性规则是针对某一具体数据库的约束条件。不同的关系数据库系统根据其应用环境的不同,往往需要一些特殊
44、的约束条件,用户定义的完整性就是针对某一具体关系数据库进行的条件约束,它反映的是具体应用所涉及的数据所须满足的要求。关系模型应能提供定义和检验这类完整性的机制,以便用统一的处理这些条件要求。因此,在实际应用中,应用程序的编程人员不需考虑这类完整性规则。2.3关系的完整性关系的完整性任务2-11对关系“学生”,其中的属性“性别”的取值范围必须满足“男”或“女”,使用T-SQL语言定义用户完整性约束(CHECK约束)。任务分析:T-SQL语言的相关知识将在本书第五章介绍,此处从T-SQL语言实现用户定义完整性约束的角度帮助读者理解用户定义完整性。使用T-SQL语言创建某表“学生”的语句如下:CRE
45、ATETABLESTUDENT(studentIDchar(10)NOTNULLPRIMARYKEY,studentNamevarchar(10)NOTNULL,Sexchar(2)NULLCHECK(Sex=男ORSex=女))在对关系“学生”进行数据输入的时候,数据库管理系统自动检查所输入性别对应的值,所输入的Sex值只可能是“男”或者是“女”两种情况之一。2.3.3用户定义完整性2.4关系规范化理论关系规范化理论在数据库设计过程中,需要考虑到针对具体问题构造适合于这个问题的数据库模式,即在该数据库设计过程中应该构造几个关系模式,每个关系由哪些属性组成等。这是数据库设计的问题,确切地讲是关
46、系数据库逻辑设计问题。关系数据库逻辑设计的好坏与其所含的各个关系模式设计的好坏相关。如果各个关系模式结构合理、功能简单明确、规范化程度高,就能确保所建立的数据库具有较少的数据冗余、较高的数据共享度、较好的数据一致性,并为数据库系统能够很好的应用于实际打下良好基础。不规范的关系设计会增大系统在运行过程中的数据冗余,进而可能由数据冗余为整个数据库系统带来其他运行的障碍。同时,还会带来数据的删除异常和插入异常等问题。因此,关系的规范化在数据库设计中起着很重要的作用。2.4关系规范化理论关系规范化理论在关系模式设计中,经常会遇到某一属性还具有子属性的情况。此时,可对其进行规范化,使其满足第一范式。1N
47、F定义:设关系R,则关系R中所有属性不可再分,即消除非原子属性分量。例如:在关系“学生”中有“电话”属性,电话属性可能有家庭电话、手机、宿舍电话等子属性。如表2-22所示。学 号姓 名性 别电 话家庭电话手 机宿舍电话20100101张小丽女52236891365521*612254520100102王刚男53688571352215*625879820100103李平女53658951592256*682001220100104郭鹏男56812571385965*61563282.4.1第一范式1NF表2-22学生信息表2.4关系规范化理论关系规范化理论学 号姓 名性 别家庭电话手 机宿舍电
48、话20100101张小丽女52236891365521*612254520100102王刚男53688571352215*625879820100103李平女53658951592256*682001220100104郭鹏男56812571385965*61563282.4.1第一范式1NF任务2-12对以上关系进行规范化,使其满足1NF。任务分析:家庭电话、手机、宿舍电话三个属性属于“电话”属性的子属性。此时,可将“电话”属性进行分解。结果如表2-23所示。表2-22满足1NF的学生信息表2.4关系规范化理论关系规范化理论2.4.2第一范式2NF在关系模式设计中,如果非主属性存在对主码的部分
49、函数依赖,则不满足2NF。此时,可对其进行规范化,使其满足第二范式。2NF定义:设关系R,则关系R中所有非主属性需完全函数依赖每个主码,即消除非主属性对主码的部分函数依赖。例如:假如某设计人员将学生“选课”关系设计为“Student_Course(studentID,studentName,Sex,courseID,coursename,typename,Grade)”,主码为studentID和courseID,则此时存在非主属性对主码的部分函数依赖。可能产生的问题:数据冗余:不同课程同一个选课学生的学生姓名、性别信息存在数据冗余。即一个学生可能选了多门课程,则在这个学生对应的多个课程实体中
50、,存在大量学生姓名、性别的数据冗余。插入异常:如果有某门课程没有学生进行选择,则导致该门课程的信息无法正常插入,造成插入异常。删除异常:如果某学生只选择了一门课程,则在删除该门课程信息时,导致学生信息也被删除,造成删除异常。更新异常:更新过程实际是删除和插入过程的结合,所以也会带来更新异常。2.4关系规范化理论关系规范化理论2.4.2第一范式2NF任务2-13对以上关系进行规范化,使其满足2NF。任务分析:可以发现存在两种非主属性。一种是“Grade”,它完全由studentID和courseID同时决定,它对主码是完全函数依赖,另一种是“studentName,Sex,coursename,