一、教学要求:1.熟悉关系的数据模型及其相关的概念术语。2.掌握关系的运算:并、差、交和选择、投影、连接等3.掌握关键字和外关键字的概念。第2章关系数据库数学模型二、教学重点:1.关系的数据模型及其相关的概念术语。2.关系的运算:并、差、交和选择、投影、连接三、教学难点:关系代数表达式的运用技巧引入:前面介绍了数据模型的分类,基本层次模型、网状模型、关系数据模型。那么,关系数据模型又是什么样的呢?为什么关系数据模型能够成为当今市场的主流呢?一、关系数据库概述关系数据库系统是支持关系模型的数据库系统。关系模型组成:关系数据结构、关系操作集合、完整性约束。(从形式上定义)1、关系数据结构:二维表2、关系操作集合:操作的对象和结果都是集合。常用的关系操作:选择、投影、连接、除、并、交、差等查询操作和增、删、改更新操作。关系代数语言----例如ISBL关系数据语言关系演算语言(元组关系演算语言(APLHA)和域关系演算语言(QBE))具有关系代数和关系演算双重特点的语言(SQL)3、完整性约束实体完整性、参照完整性、用户定义的完整性。二、关系数据结构一个关系,从用户的观点来说,它是一张二维表。整个关系在磁盘上以文件形式存储。一行,表示一条记录。一列,表示一个字段。1、关系域(值域):一组具有相同数据类型的值的集合。笛卡尔积(carttesianproduct):给定一组域D1、D2、…Dn,这些域可以完全相同,也可以部分或全部相同,D1、D2、…Dn的笛卡尔积为D1×D2×…×Dn={(d1,d2,…,dn)│di∈Di,i=1,2,…n}元组:每一个(d1,d2,…dn)分量:每一个di域基数:域中数据个数。(注:在域中相同的值被视为同一值)笛卡尔积基数:各域基数的乘。关系:D1×D2×…×Dn的子集叫作在域D1、D2、…Dn上的关系,用R(D1、D2、…Dn)表示度(目、元数):属性的个数就是关系的度。例:{0,1}和{0,1,1}等价基数都为2D1=男人的集合={张二,王三,李四}D2=女人的集合={丁梅,王芳}D3=孩子的集合={张英,王世}用二维表表示笛卡尔积D1×D2×D3男人女人孩子张二丁梅张英张二丁梅王世张二王芳张英张二王芳王世王三丁梅张英王三丁梅王世王三王芳张英王三王芳王世李四丁梅张英李四丁梅王世李四王芳张英李四王芳王世元组分量笛卡尔积基数m=3×2×2=12二维表中元组的个数是12家庭关系(父亲,母亲,孩子)张二丁梅张英王三王芳王世3目关系笛卡尔积D1×D2×D3={(张二,丁梅,张英),(张二,王芳,王世),……}属性:表的每列都对应一个域,由于域可以相同,必须为每列起一个名字,称为属性。候选码(candidatekey码):若关系中的某一属性组的值能唯一标识每一个元组,则称该属性组为候选码。主码:(primarykey)若一个关系中有多个候选码,则选定一个为主码。主属性:(primaryattribute)主码的诸属性。非码属性:不包含在任何候选码中的属性。全码:(all–key)关系模式的所有属性组是这个关系模式的候选码。外码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码KS相对应,则称F是基本关系R的外码(foreignkey)。关系1学生(学号,身份证号,姓名,性别,系名)关系2系别(系名,系主任,系学生人数)关系3存折(日期,账号,户名,单位,取款额,余额)关系4片约(影院名,日期,片名)课堂练习:试指出下列关系的候选码、主码、主属性、若有全码、外码,请指出。关系1学生(学号,身份证号,姓名,性别,系名)关系2系别(系名,系主任,系学生人数)关系3存折(日期,账号,户名,单位,取款额,余额)关系4片约(影院名,日期,片名)主码候选码全码外码关系类型:基本关系(基本表)、查询表(查询结果结应的表)和视图(虚表)。基本关系性质:Ø列是同质的Ø不同列可出自同一个域Ø列的顺序无关Ø任意两个元组不能相同Ø行的顺序无关Ø分量必须取原子值(不能再分)人(张二,王三,李四,丁梅,王芳,张英,王世),家庭关系(父亲,母亲,孩子)定义:关系的描述,简记为R(U)。R:关系名;U:属性名集合;关系实际上就是关系模式在某一时刻的状态和内容。关系模式是型,关系是它的值。即关系的结构就是关系模式关系模式关系:一个关系就是一个二维表,每个关系有一个关系名,在计算机中可以作为一个文件存储起来关系模式:一组被命名的相关属性的集合关系模型:为一个应用系统所建立的一组关系模式,每个模式之间的联系是通过公共属性(即具有相同定义域的属性)实现的。关系的完整性实体完整性、参照完整性、用户定义的完整性1、实体完整性(entityintegrity)规则:若属性A是关系R的主属性,则属性A不能取空值。例:1.学生(学号,姓名,性别,专业号,年龄)2.专业(专业号,专业名)3.课程(课程号,课程名)4.选修(学号,课程号,成绩)5.存折(日期,账号,户名,单位,取款额,余额)6.片约(影院名,日期,片名)实体完整性又称为行完整性。它把表中的每行都看作一个实体,要求所有行都具有惟一标识。在SQLServer中,可以通过建立PRIMARYKEY约束.例如,对“客户信息表”,客户编号就可以作为主键,每个客户的编号能够惟一地确定该客户对应的记录信息,那么在输入数据时,则不能有相同客户编号的记录存在,通过对客户编号这一字段建立主键约束,可实现“客户信息表”的实体完整性。CREATETABLE客户信息表(客户编号int,客户名称varchar(50),PRIMARYKEY(客户编号))2、参照完整性(referentialintegrity)一个关系中的某个属性的取值应参照另一关系中的某个属性的取值。定义:外码、参照关系、被参照关系设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码KS相对应,则称F是基本关系R的外码(foreignkey),并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。关系R和S不一定是不同的关系。1.学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)2.学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名)选修(学号,课程号,成绩)3.学生2(学号,姓名,性别,专业号,年龄,班长学号)规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码KS相对应,则对于R中每个元组在F上的值必须为:l或者取空值(F的每个属性值均为空值)l或者等于S中某个元组的主码值前两条规则在使用时,应注意三点:l外码和相应主码可以不同名,只要在同一域lR和S可以是同一关系模式,表示属性间联系l外码F是否允许为空,视具体情况前两类规则是由系统自动支持的,即:在建立关系(表)时,只要指明了主码、外码,系统将自动进行此类完整性检查。规则:关系的参照图学生关系专业关系专业号学生关系选修关系学号课程关系课程号参照关系被参照关系参照完整性又称为引用完整性。它保证主表(被参照表)中的数据与从表(参照表)中数据的一致性。在SQLServer中,它通过主键约束PRIMARYKEY和外键FOREIGNKEY约束实现。在数据库管理系统中,保证数据库的完整性是非常重要的。参照完整性确保键值在所有表中一致。在被参照的表中,当其主键值被其他表参照时,该行记录既不能被删除,也不允许被改变。例:学生(学号,姓名,性别,班级,年龄,入学成绩,专业号)专业(专业号,专业名)CREATETABLE专业(专业号varchar(10)PRIMARYKEY,专业名varchar(50))CREATETABLE学生(学号intPRIMARYKEY,姓名varchar(50),性别bit,班级varchar(50),年龄INT,入学成绩float,专业号varchar(10)FOREIGNKEYREFERENCES专业(专业号),)3.用户定义的完整性(user-definedintegrity)例:定义一个关系S1(SNO,AGE),要求“年龄大于等于15,且小于等于25”定义一个关系S2(SNO,SEX,NAME),要求SEX为“男”或“女”定义一个关系S3(SNO,NAME,ADDRESS,TEL),ADDRESS不为空,TEL(字符型):位数为8位,且第一位数字为8附加约束——用户定义的约束某些属性的取值有特定的要求这是针对某一应用环境的完整性约束条件,它反映了某一具体应用所涉及的数据应满足的要求。系统提供定义和检验这类规则的机制(一般在建立表的同时进行定义),其目的是用统一的方式由系统来处理它们,不再由应用程序来完成这项工作。用户定义的完整性例:CREATETABLE学生(记录编号intIDENTITY(1,1),--定义该列为标识列姓名varchar(50)NOTNULL,性别bitDEFAULT(0),--定义该列的默认值为0班级varchar(50)NOTNULL,入学成绩floatDEFAULT(0),所属院系intNOTNULLPRIMARYKEY(记录编号),UNIQUE(姓名),CHECK(入学成绩=0))小节:关系模型组成:关系数据结构关系操作集合完整性约束习题类型:1.试指出下列关系的候选码、主码、主属性、若有全码、外码,用----标出。2.找出下列一组关系中的主码,外码,指出哪个是参照关系,哪个是被参照关系三、关系代数数据库的核心应用是数据库的查询查询语言用户用来从数据库中请求获取信息的语言关系代数是一种抽象的查询语言,是用对关系的运算来表达查询的。运算的三个要素:运算对象、运算符、运算结果关系代数运算:运算对象:关系运算结果:关系运算符:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。关系代数运算符含义∪并∩交-差×广义笛卡尔积σ选择∏投影∞连接÷除>大于≥大于等于<小于≤小于等于=等于≠不等于非∧与∨或比较运算符逻辑运算符运算符专门的关系运算符集合运算符几个记号及举例R(A1,A2,…An):关系模式例:R(C,D,E),S(A,B,C),STUDENT(SNO,SNAME,SSEX,SDEPT,SAGE)R:关系例:关系R和关系S、关系STUDENTt∈R:t是R的一个元组例:{a1,b1,c1}是R的一个元组,{95001,赵四,女,CS,19}是STUDENT的一个元组t[Ai]:元组t中相应于属性Ai的一个分量例:b1是元组{a1,b1,c1}中相应于属性D的一个分量Ā:若A={Ai1,Ai2,…Aik},其中Ai1,Ai2,…Aik是A1,A2,…An的一部分,A是属性列,Ā是{A1,A2,…An}中去掉{Ai1,Ai2,…Aik}后剩余的若干属性列例:A={C},Ā={D,E}t[A]:t[A]={t[Ai1],t[Ai2],…t[Aik]}表示元组t中相应于属性A上诸分量的集合例:t[C]={a1,a1,a2}ABCa1b3c2a1b2c2a2b2c1CDEa1b1c1a1b2c2a2b2c1关系R关系Ssnosnamessexsdeptsage95001赵四女CS1995002李阳男CS1895003刘广男IS2095004刘地男CS21关系STUDENT几个记号及举例ABCa1b3c2a1b2c2a2b2c1CDEa1b1c1a1b2c2a2b2c1关系R关系S⌒⌒trts:R是n目关系S是m目关系,trts是元组的连接,是一个n+m列的元组⌒trts:{a1,b2,c2,a1,b3,c2}是一个n+m列的元组象集Zx:给定一个关系R(X,Z),X和Z是属性组,定义当t[X]=x时,x在R中的象集为Zx={t[Z]│t∈R,t[X]=x}它表示R中属性组X上值为x的诸元组在Z上分量的集合例:对于关系R,a1的象集{(b1,c1),(b2,c2)},a2的象集{(b2,c1)}对于关系P,2,B的象集{(C,D),(E,F)},9,A的象集{(E,F),(D,E)},7,G的象集{(E,F)}关