您好,欢迎访问三七文档
第一章知识回顾1、数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)三者之间的关系是?2、一般地,一个数据库系统的模式有几个?外模式有几个?3、说出数据库技术中出现过的三种逻辑数据模型。4、数据库系统中包含的人员有哪些?关系模型2.1关系代数2.2第2章关系模型与关系代数关系模型系统而严格地提出关系模型的是美国IBM公司的E.F.Codd1970年提出关系数据模型E.F.Codd,“ARelationalModelofDataforLargeSharedDataBanks”,《CommunicationoftheACM》,1970关系数据库系统是支持关系数据模型的数据库系统。关系数据库管理系统是当今的主流数据库管理系统。关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。关系数据结构关系关系模型的数据结构非常简单,它就是二维表,亦称为关系。关系数据库是表的集合,即关系的集合。表是一个实体集,一行就是一个实体,它由共同表示一个实体的有关联的若干属性的值所构成。由于一个表是这种有关联的值的集合(即行的集合),而表这个概念和数学上的关系概念密切相关,因此称为关系模型。关系模型中,现实世界的实体以及实体间的各种联系都是用关系来表示。(1)域(domain)定义2.1域是一组具有相同数据类型的值的集合。例如:姓名的域是指构成所有合法姓名的字符串集合、性别的域是{‘男’,‘女’}、成绩的域是介于0~100的实数、出生年份的域是介于某个取值范围的日期等。关系数据结构的形式化定义(2)笛卡尔积(CartesianProduct)定义2.2给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|diDi,i=1,2,…,n}不能重复出现的所有域的所有取值的一个组合。关系数据结构的形式化定义若Di(i=1,2,…,n)为有限集,其基数(CardinalNumber,此域中所有可取值的个数)为mi(i=1,2,…,n),则笛卡尔积的基数M为:nii1mM关系数据结构的形式化定义其中,集合中的每一个元素(d1,d2,…,dn)称为一个n元组,简称为元组;元素中的每一个值di称为一个分量。举例:给定两个域:学生的姓名集合:D1={‘李小勇’,‘刘方晨’,‘王红敏’}课程的名称集合:D2={‘数据库系统概论’,‘操作系统’}则D1,D2的笛卡尔积为:D1×D2={(‘李小勇’,‘数据库系统概论’),(‘李小勇’,‘操作系统’),(‘刘方晨’,‘数据库系统概论’),(‘刘方晨’,‘操作系统’),(‘王红敏’,‘数据库系统概论’),(‘王红敏’,‘操作系统’)}关系数据结构关系的形式化定义D1×D2×…×Dn的子集称为在域D1,D2,…,Dn上的关系,表示为:r(D1,D2,…,Dn)其中,r表示关系的名字,n是关系的目或度(degree)。当n=1时,该关系称为单元关系;当n=2时,称为二元关系。以此类推…关系是笛卡尔积的有限子集,所以关系也是一个二维表,表的每行对应于关系的一个元组,表的每列对应于关系的一个域。由于域可以相同,为了区别就必须给每列起一个名字,称为属性(attribute)。n目关系共有n个属性。niimM1niimM1关系数据结构关系的最基本要求:关系中的每个属性的域必须是原子的,即域中的每个值都是不可再分的一个完整单元。关系中的每个元组都是可区分的,即存在唯一标识不同元组的属性(集)——码。关系数据结构关系模式关系的描述称为关系模式(relationschema)。形式化地表示为:r(U,D,DOM,F)r为关系名,U为组成该关系的属性名的集合,D为属性集U中所有属性所来自的域的集合,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合(即体现一个元组的各属性取值之间的“关联”性)。关系模式通常被简记为:r(U)或r(A1,A2,…,An)r为关系名,U为属性名的集合{A1,A2,…,An}关系数据结构关系模式对于一个二维表,有表头部分和表体部分:表头部分定义了该表的结构,即定义了该表由哪些列构成(假设由n列构成),每个列的名字和取值范围等;表体部分就是所有数据行(元组)的集合,每一个数据行都是由表头部分规定的n列有关联的取值的集合构成。对应于关系数据库:一个关系数据库是由多个关系表构成;每个表的表头部分对应于关系模式;表体部分对应于关系,关系模式是型的概念,它定义了元组集合的结构;(即定义了一个元组由哪些属性构成,每个属性的名字和来自的域等.)关系是值的概念,它定义了元组集合的数据;表的每一个数据行对应于关系的一个元组;表的每一列对应于关系的属性。关系数据结构码超码:对于关系r的一个或多个属性的集合A,如果属性集A可以唯一地标识关系r中的一个元组,则称属性集A为关系r的一个超码(superkey)。候选码:对于关系r的一个或多个属性的集合A,如果属性集A是关系r的超码,且属性集A的任意真子集都不能成为关系r的超码,则称属性集A为候选码(candidatekey)。主码:若一个关系有多个候选码,则可以选定其中的一个候选码作为该关系的主码。举例:Student关系studentNostudentNamesexbirthdayspeciality0701001李小勇男1990-12-21计算机0701008王红男1992-04-26计算机0802002刘方晨女1990-11-11信息系统0802005王红敏女1990-10-01信息系统0703045王红男1992-04-26会计学0703010李宏冰女1992-03-09会计学超码:studentNo,{studentNo,studentName}、{studentNo,sex}、{studentNo,studentName,speciality}、…候选码:studentNo和{studentName,speciality}——与语义有关主码:studentNo关系数据结构码外码:设F是关系r的一个属性(或属性集),Ks是关系s的主码。如果F与Ks相对应(即关系r中属性F的取值范围对应于关系s中主码Ks的取值范围的子集),则称F是关系r参照关系s的外码(foreignkey),简称F是关系r的外码。称关系r为参照关系,关系s为被参照关系或目标关系。r(Kr,F,…)s(Ks,…)参照关系被参照关系(目标关系)图2-3外码参照图关系数据结构关系数据库模式关系数据库也有型和值之分,型就是关系数据库模式,即它所包含的所有关系模式的集合;值就是这些关系模式在某一时刻所对应的关系的集合,通常就称为关系数据库实例。在实际应用中,人们经常把关系数据库模式和关系数据库实例都笼统地称为关系数据库。举例:学生成绩管理数据库ScoreDB的模式Class(classNo:char(6),className:varchar(30),institute:varchar(30),grade:smallint,classNum:tinyint)Student(studentNo:char(7),studentName:varchar(20),sex:char(2),birthday:datetime,native:varchar(20),nation:varchar(30),classNo:char(6))Course(courseNo:char(5),courseName:varchar(30),creditHour:numeric,courseHour:int,priorCourse:char(5))Score(studentNo:char(7),courseNo:char(5),term:char(5),score:numeric)说明:带下划线的属性(集)为主码,斜体属性为外码。基本数据类型请参见3.8.2节。空值的概念:空值(null)是所有可能的域的一个取值,表明值未知或值不存在。对于学位的取值域,某员工的学位为空值null,表示不知道该员工所获得的学位,或该员工没有获得学位;对于成绩的取值域,某学生的成绩为空值null,表示不知道该学生的成绩,或该学生没有成绩(如没有参加考试就没有获得成绩)。关系完整性约束条件实体完整性若属性集A是关系r的主码,则A不能取空值null。例如,关系Student,由于studentNo是关系Student的主码,因此它在任何时候的取值都不能为空值null,但其他属性如sex、birthday、speciality等都可以取空值,表示当时该属性的值未知或不存在。如果主码是由若干个属性的集合构成,则要求构成主码的每一个属性的值都不能取空值。例如,学生成绩管理数据库ScoreDB中的关系Score,它的主码是{studentNo,courseNo,term},因此这3个属性都不能取空值。关系完整性约束条件参照完整性若属性(或属性集)F是关系r的外码,它与关系s的主码Ks相对应,则对于关系r中的每一个元组在属性F上的取值要么为空值null,要么等于关系s中某个元组的主码值。关系完整性约束条件举例:实现多对一联系的外码学生成绩管理数据库ScoreDB中,学生关系Student与班级关系Class之间存在多对一的“归属”联系。Class(classNo,className,institute,grade,classNum)Student(studentNo,studentName,sex,birthday,native,nation,classNo)图2-4实现“多对一”联系的外码1n实现多对多联系的联系关系及外码学生成绩管理数据库ScoreDB中,假设每一个学生一个学期可以选修若干门课程,每一门课程同时有若干个学生选修,那么学生关系Student与课程关系Course之间存在多对多的“选修”联系,且课程的开课学期term和修读成绩score为联系属性。Student(studentNo,studentName,sex,birthday,native,nation,classNo)Score(studentNo,courseNo,term,score)Course(courseNo,courseName,creditHour,courseHour,priorCourse)图2-5实现“多对多”联系的联系关系及外码mn实现关系内部多对一联系的外码学生成绩管理数据库ScoreDB中,假设一门课程可能存在先修课程,且关系Course中的priorCourse属性用来存放先修课程的课程编号。属性priorCourse是课程关系Course参照课程关系Course的外码。Course(courseNo,courseName,creditHour,courseHour,priorCourse)图2-6实现关系内部多对一联系的外码关系完整性约束条件数据库模式导航图一个含有主码和外码依赖的数据库模式可以通过模式导航图来表示。关系完整性约束条件数据库模式导航图一个含有主码和外码依赖的数据库模式可以通过模式导航图来表示。关系Student与关系Class之间存在多对一的“归属”联系(一个班由多个学生组成,一个学生只能归属于某个班),通过外码classNo实现该联系。关系Course与关系Student之间存在多对多的“选修”联系。关系Score的主码是{studentNo,courseNo,term},显然同一个学生在同一个学期不允许修读同一门课程多次。关系Course的外码priorCourse参照本关系的主码courseNo。关系完整性约束条件数据库模式导航图开课班号开课班号聘用日期volumehireDate关系完整性约束条件数据库模式导航图一个含有主码和外码依赖的数据库模式可以通过模式导航图来表示关系Studen
本文标题:关系模型与关系代数
链接地址:https://www.777doc.com/doc-2628703 .html