《数据库原理与应用》02.关系数据库.ppt
孙发勤,扬州大学新闻与传媒学院,第2章关系数据库,数据库原理与应用 SQL Server 2005,SQL Server 2005,第2章 关系数据库,学习目标:了解关系数据库和关系数据模型的基本概念和相互关系掌握关系数据模型的数据结构了解关系的集合运算(并,交,差,笛卡尔积)熟练掌握关系的专门运算(投影,选择,连接)掌握关系模型完整性规则(实体完整性,用户定义完整性,参照完整性)掌握概念模型到关系模型转换的基本方法和原则了解关系规范化的基本概念和关系的规范化方法和要求目标,SQL Server 2005,2.1 关系数据库与关系模型概述,1,SQL Server 2005,关系数据库概述,关系数据库是目前应用最广泛的数据库用关系数据模型来组织数据以关系代数为基础处理数据库中的数据拥有许多性能良好的关系数据库管理系统(RDBMS),SQL Server 2005,2.1.2 关系模型概述,关系数据模型(Relational Data Model),简称关系模型,是数据库产品的主导数据模型关系模型的组成要素关系数据结构关系操作集合关系完整性约束,SQL Server 2005,2.1.3 关系模型的特点,数据结构单一或模型概念单一化实体和实体之间的联系用关系表示关系的定义也是关系(元关系)关系的运算对象和运算结果还是关系采用集合运算关系是元组的集合,所以对关系的运算就是集合运算运算对象和结果都是集合,可采用数学上的集合运算数据完全独立只需告诉系统“做什么”,不需要给出“怎么做”程序和数据各自独立数学理论支持有集合论、数理逻辑做基础以数学理论为依据对数据进行严格定义、运算和规范化,SQL Server 2005,2.2 关系模型,关系数据结构,1,关系运算(传统的集合运算),2,关系运算(专门的集合运算),3,关系完整性,4,SQL Server 2005,2.2.1 关系模型的数据结构,关系的基本定义关系是满足一定条件的二维表,称为关系(relation),在关系模型中,无论概念世界中的实体还是实体之间的联系均由关系(表)来表示。例如:学生情况表 Student,表2-1。,SQL Server 2005,2.2.1 关系模型的数据结构,关系术语关系:每个二维表称为一个关系例如:学生情况表Student关系名:二维表的名字例如:Student关系型:表的所有列标题,描述实体或联系的型例如:(SID,Sname,Sex,Birthday,Specialty)关系值:表的列对应的数据,描述实体或联系的值例如:2005216003,郭洪亮,男,1986年4月,电子商务 2005216004,吕珊珊,女,1987年10月,计算机网络,SQL Server 2005,2.2.1 关系模型的数据结构,关系术语元组:表中的一行,描述一个实体或联系例如:2005216004,吕珊珊,女,1987年10月,计算机网络属性:表中的一列的标题例如:SID,Sname属性值:表中的一列对应的数据,描述实体或联系的特征例如:2005216003,郭洪亮主码:表中的某个属性或属性组,能惟一确定一个元组,即确定一个实体例如:SID关系模式:对关系的描述,表示为关系名(属性1,属性2,属性n)例如:Student(SID,Sname,Sex,Birthday,Specialty)Course(CID,Cname,Credit)SC(SID,CID,Grade),SQL Server 2005,2.2.1 关系模型的数据结构,关系术语与其他术语的对照 表2-2,SQL Server 2005,2.2.1 关系模型的数据结构,关系的特点 关系(表)的每一元组(行)定义实体集的一个实体,每一列定义实体的一个属性。每一列表示一个属性,且列名不能重复。关系必须有一个主码,唯一标识一个元组(实体)。列的每个值必须与对应属性的类型相同。列有取值范围,称为域。列是不可分割的最小数据项。行、列的顺序对用户无关紧要。,SQL Server 2005,2.2.2 关系运算(传统的集合运算),设:有两个关系R和S,具有相同的结构,t是元组变量,关系R为喜欢跳舞的学生,S为喜欢唱歌的学生。,SQL Server 2005,2.2.2 关系运算(传统的集合运算),并(Union)公式:RS=ttR t S 语义:t 元组属于R或者属于S。例2-1:喜欢跳舞或喜欢唱歌的学生,RS的关系如表2-5所示。,SQL Server 2005,2.2.2 关系运算(传统的集合运算),差(Difference)公式:RS=ttR tS 语义:t 元组属于R,但不属于S。例2-2:喜欢跳舞但是不喜欢唱歌的学生,RS的关系如表2-6所示。,SQL Server 2005,2.2.2 关系运算(传统的集合运算),交(Intersection)公式:RS=ttR t S 语义:t 元组属于R并且属于S。例2-3:既喜欢跳舞也喜欢唱歌的学生,RS的关系如表2-7所示。,SQL Server 2005,2.2.2 关系运算(传统的集合运算),笛卡尔积(Cartesian Product)设:关系R为n列(n个属性),k1行(k1个元组);关系S为m列(m个属性),k2行(k2个元组)。公式:RS=tRtS tR R tS S 语义:笛卡尔积仍是一个关系,该关系的结构是R和S结构之连接,即前n个属性来自R,后m个属性来自S,该关系的值是由R中的每个元组连接S中的每个元组所构成元组的集合。注意:新关系的属性个数等于n+m,元组个数等于k1*k2。,SQL Server 2005,2.2.2 关系运算(传统的集合运算),例2-4:设关系R和S如表2-8和表2-9所示,RS如表2-10所示。,SQL Server 2005,2.2.2 关系运算(专门的集合运算),投影(Projection)设:t是关系R中的一个元组,A是要从R中投影出的属性子集。公式:A(R)=t.At R 语义:从关系R中按所需顺序选取若干个属性构成新关系。注意:新关系的元组数小于等于原关系的元组数,新关系的属性数不多于原关系中的。,SQL Server 2005,2.2.2 关系运算(专门的集合运算),例2-5:列出学生情况表R(表2-11)的学生姓名和性别的情况,投影运算结果如表2-12所示。,SQL Server 2005,2.2.2 关系运算(专门的集合运算),选择(Selection)设:t是关系R中的一个元组,F(t)为元组逻辑表达式。公式:F(t)(R)=ttR F(t)=true语义:从关系中找出满足条件的那些元组称为选择。注意:运算结果的元组数不多于原关系中的元组数。例2-6:在学生情况表2.10 R中选择出男生,如表2-13所示。,SQL Server 2005,连接(Join)设:A,B分别是关系R和S中的属性,t是连接关系中的一个元组。公式:R S=R.AS.B(RS)AS 语义:两个关系R和S按相应属性值的比较条件连接起来,生成一个新关系,也称为连接。等值连接 RS选择(为)按照两关系中对应属性值相等的条件所进行的连接自然连接 等值连接去重复属性记作:R S,2.2.2 关系运算(专门的集合运算),SQL Server 2005,2.2.2 关系运算(专门的集合运算),例2-7:设学生、选课和课程表如表2-14、表2-15、表2-16所示,学生选课的情况为S SC C的结果,如表2-17所示。,SQL Server 2005,2.2.2 关系运算(专门的集合运算),自然连接结果如下:,SQL Server 2005,2.2.3 关系完整性,实体完整性(Entity Integrity)规则:若属性A是基本关系R的主码,则属性A不能取空值。例如:建立一个课程情况表(Course),属性学号CID为主码,惟一且不能为空值。CREATE TABLE Course(CID char(8)NOT NULL PRIMARY KEY,-实体完整性控制 Cname nchar(30)NULL,Credit decimal(3,1)NULL,),SQL Server 2005,2.2.3 关系完整性,参照完整性(Reference Integrity)规则:参照关系(子表)的外码取值不能超出被参照关系(父表)的主码取值。例如:建立一个学生选课表(SC)。SC是参照关系,Student是被参照关系,SC中外码SID的值或者为空或者等于Student中主码SID的值。CREATE TABLE SC(SID char(10)NOT NULL,CID char(8)NOT NULL,Grade numeric(5,1)NULL,PRIMARY KEY(SID,CID),FOREIGN KEY(SID)REFERENCES Student(SID)-参照完整性控制),SQL Server 2005,2.2.3 关系完整性,域(用户)定义完整性 约束:属性取值满足某种条件或函数要求例如:建立一个学生情况表(Student),属性性别Sex的取值必须满足为男或女。CREATE TABLE Student(SID char(10)PRIMARY KEY,-实体完整性控制Sname char(8)NOT NULL,Sex char(2)NULL CHECK(Sex=男 OR Sex=女),-域完整性控制Birthday datetime NULL,Specialty varchar(26)NULL,),SQL Server 2005,2.2.3 关系完整性,完整性规则检查为了维护数据库中数据的完整性,在对关系数据库执行插入、删除和修改操作时,要检查是否满足完整性规则。,实体完整性规则:检查主码属性上的值是否已经存在。若不存在,可以执行插入操作,否则不能执行插入操作。,参照完整性规则:向参照关系插入,检查外码属性上的值是否在被参照关系的主码属性值中存在。若存在,可以执行插入操作,否则不能执行插入操作。,户定义完整性规则:检查输入数据是否符合用户定义的完整性规则。若符合,可以执行插入操作,否则不能执行插入操作。,插入,SQL Server 2005,2.2.3 关系完整性,删除参照完整性规则:删除被参照关系中的行,检查其主码是否被参照关系的外码引用,若没被引用:删除若被引用:拒绝删除 空值删除(外码改为空值)级联删除(参照关系中的相应行一起删除)修改等价:先删除,后插入(以上两种情况的综合),SQL Server 2005,2.3 E-R模型到关系模型的转换,实体(E)转换为关系模式,1,2,联系(R)转换为关系模式,SQL Server 2005,2.3.1 实体(E)转换为关系模式的方法,一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码。例如:学生实体转换为关系模式,SQL Server 2005,2.3.2 联系(R)转换为关系模式的方法,一对一 将联系与任意端实体所对应的关系模式合并,加入另一端实体的码和联系的属性。例如:实体学校(学校编号,名称)与校长(编号,姓名)之间的任职联系是1:1的联系。,SQL Server 2005,2.3.2 联系(R)转换为关系模式的方法,学校(学校编号,名称)校长(编号,姓名,学校编号,任职日期),SQL Server 2005,2.3.2 联系(R)转换为关系模式的方法,一对多将联系与n端实体所对应的关系模式合并,加入1端实体的码和联系的属性。例如:图书实体和读者类型实体的联系是1:n的。,SQL Server 2005,2.3.2 联系(R)转换为关系模式的方法,属于类型(R)借阅数量n:1,Reader(RID,Rname,TypeID,Lendnum)ReaderType(TypeID,Typename,LimitNum,LimitDays),SQL Server 2005,2.3.2 联系(R)转换为关系模式的方法,多对多将联系转换成一个关系模式。该联系相连的各实体的码和联系本身的属性转换为关系的属性。例如:教务管理中选课的E-R模型如图所示,学生和课程的联系是多对多的。,SQL Server 2005,2.3.2 联系(R)转换为关系模式的方法,选课(R)成绩n:m,Student(SID,Sname,Sex,Birthday,Specialty)Course(CID,Cname,Credit)SC(SID,CID,Grade),SQL Server 2005,2.4 关系规范化基础,不规范:产生数据冗余,带来很多问题。规范:提高数据的结构化、共享性、一致性和可操作性。范式:规范化的程度,级别。规范化:在关系数据库中的每个关系都需要进行规范化,使之达到一定的规范化程度。,SQL Server 2005,第一范式1NF(First Normal Form),定义:所有属性不可再分,即原子属性。记作:R1NF例如:设一个通信录,电话属性需要再分,达不到1NF。,SQL Server 2005,2.4.2 第一范式1NF(First Normal Form),问题:不是二维表,不够1NF解决方法1:在属性上展开,SQL Server 2005,2.4.2 第一范式1NF(First Normal Form),解决方法2:分解为二个关系,SQL Server 2005,第二范式2NF(Second Normal Form),定义所有非主属性完全依赖每个候选关键字。记作R2NF或:取消部分依赖。假设:有一个教师授课的关系模式。TC(TNO,Tname,Title,ADDR,CNO,Cname,CCredit,CDesc)PK:(TNO,CNO),SQL Server 2005,第二范式2NF(Second Normal Form),问题数据冗余(不同课程同一任教的教师名等)更新异常(冗余带来的不一致)插入异常(没课的教师关键字无值不允许插入)删除异常(没课的教师要删除,致使删除有关记录),SQL Server 2005,2.4.2 第二范式2NF(Second Normal Form),原因关系属性之间存在部分函数依赖,不够2NF。主码(TNO,CNO)决定Cname,CCredit,CDesc,但是存在主码的一部分CNO就可以决定Cname,CDesc。(TNO,CNO)Cname,CDesc(CNO)Cname,CDesc,SQL Server 2005,第二范式2NF(Second Normal Form),解决办法拆分:原则是概念单一,完整(无损)上述达不到2NF的关系分解如下:多 T(TNO,Tname,Title,ADDR)对 TC(TNO,CNO,CCredit)多 C(CNO,Cname,CDesc),SQL Server 2005,第三范式3NF(Third Normal Form),定义所有非主属性都不传递函数依赖每个候选关键字。记作:R3NF 或:取消传递依赖假设:为图书管理系统的数据模式Book增加一个属性ISBN。Books(BID,ISBN,Bname,Author,PubComp,PubDate,Price,State)PK:BID,SQL Server 2005,第三范式3NF(Third Normal Form),问题数据冗余(图书馆多本书副本)更新异常(冗余带来的不一致)插入异常(图书馆没有购进的书的出版情况不允许插入)删除异常(图书馆丢失删除的书,致使删除该书的有关出版情况),SQL Server 2005,2.4.3 第三范式3NF(Third Normal Form),原因关系属性之间存在传递函数依赖,不够3FN。存在:BIDISBN,ISBNBname,Author,PubComp,PubDate,Price X Y,Y Z,YX X传递决定Z或Z函数依赖于X,SQL Server 2005,2.4.3 第三范式3NF(Third Normal Form),解决办法拆分:原则是概念单一,完整(无损)。上述达不到3NF的关系分解如下:m Books(BID,State)对 BooksType(BID,ISBN)FK:ISBN,BIDType(ISBN,Bname,Author,PubComp,PubDate,Price),SQL Server 2005,2.5 关系数据库的标准语言SQL简介,SQL(Structured Query Language)被称为结构化查询语言,是目前最为广泛使用的关系数据库查询语言。IBM公司:SQL/DS(7181)Sybase与Microsoft公司:Transact-SQLOracle公司:PL/SQLANSI(Institute)/ISO(19861999):SQL-92/SQL-99标准,SQL Server 2005,SQL语言概述,SQL语言的功能DDL定义DML操纵、查询DCL控制SQL语言的特点大中小型DBMS支持SQL高度非过程性语言和面向操作的语言,SQL Server 2005,Transact-SQL(T-SQL)语言概述,T-SQL是SQL Server功能的核心,不管应用程序的用户界面是什么形式,只要与数据库服务器交互,最终都必然体现为T-SQL。T-SQL语言的功能特点支持ANSI SQL-92标准:DDL,DML,DCL加入局部变量,全局变量等加入程序控制结构,SQL Server 2005,2.5.2 T-SQL语言的特点,SQL语言的特点交互式查询语言(使用SSMS语言编辑器编辑、编译、运行和保存)可嵌入程序非过程化,SQL Server 2005,小结,1.关系数据库与关系模型概述关系数据库用关系模型来组织数据关系模型由关系数据结构、关系操作集合和关系完整性规则三部分组成(1)数据结构:二维表(2)操作集合:A(R)投影,F(t)(R)选择,R S 自然连接(3)完整性规则:实体:主码,参照:外码,域:逻辑表达式或函数,SQL Server 2005,小结,2.E-R模型到关系模型的转换实体关系:实体的属性就是关系的属性联系关系1对1:联系与任意端实体合并,加入另一端实体的码和联系的属性。1对n:联系与n端实体合并,加入1端实体的码和联系的属性。n对m:联系转换成一个关系模式,该联系相连的各实体的码和联系本身的属性转换为关系的属性。,SQL Server 2005,小结,3.关系规范化1NF:原子属性,2NF:不存在部分函数依赖,3NF:不存在传递函数依赖4.结构化查询语言SQLISO的SQL-92:DDL,DML,DCLMS的T-SQL:标准加程序等扩展功能 特点:大中小型DBMS支持SQL,高度非过程性语言和面向操作的语言,扬州大学新闻与传媒学院 孙发勤,Thank You!,