第二章第一讲关系数据库设计理论本章要点1、关系模型的概念与分类2、关系数据结构及定义3、关系代数的基本运算4、关系完整性5、关系数据库设计与设计规范2.1关系模型2.1.1关系的一些术语(1)关系:在关系模型中,一个关系就是一张二维表。(2)属性:表中的列称为属性,每一个列有一个属性名。(3)元组:表中的行称为元组。(4)域:具有相同数据类型的值的集合称为域(Domain),域是属性的取值范围。(5)候选码:如果关系中的某个属性或属性组能唯一地标识一个元组,称该属性或属性组为候选码。(6)主码(主键):若一个关系中有多个候选码,则选定其中一个为主码(主键)。主码的属性称为主属性。(7)外码(外键):设F是基本关系R的一个或一组属性,但不是R的候选码,如果F与基本关系S的主码Ks相对应,则称F为基本关系R的外码。域(Domain)定义:一组具有相同数据类型的值的集合。例如,假设规定人的年龄在1至200之间,那么年龄对应的域就是1至200所有整数的集合;如果用1表示性别为男,0为女,则性别对应的域就是{0,1}。2.1.2关系模型关系模型是用二维表格结构来表示实体及实体间联系的模型。关系模型由关系数据结构、关系操作集合和完整性规则三部分组成。关系模型的特点:(1)关系必须规范化,指关系模型中的每一个关系模式都必须满足一定的要求;(2)模型概念单一;(3)集合操作,操作对象和结果都是元组的集合,即关系。关系模型关系模型包括数据结构、关系操作和完整性。数据结构关系模型的数据模型非常单一,实体和实体间联系均使用关系表示。可以将关系理解为一个二维表格。关系操作关系模型是基于关系代数数学基础的模型,关系运算的语言分为两类:关系代数语言:把关系当作集合,常用的关系操作有交、并、差、除法、选择、投影和连接等。关系演算语言:使用谓词来表达查询的要求。若谓词的对象是元组变量,称为元组关系演算;若为域变量,称为域关系演算。SQL语言:结合了关系代数和关系演算的优点,是关系数据库的标准语言。完整性1.实体完整性规则:若属性A为基本关系R的主属性,则属性A不能取空值。例如,学生关系中,如果学号是主键,则所有的元组(即学生的记录)中学号属性不能为空,因为每个学生必有学号。1982年12月4日女王珊010210……1982年3月19日1982年6月9日出生日期李婷王南姓名备注女010208男010205性别学号学生关系(表)主键为:学号王珊的记录信息是关系的一个元组。2.参照完整性外码(ForeignKey):设F是关系R1的一组属性,但不是R1的键;如果F与关系R2的主键P对应,则称F是关系R1的外键。并称关系R1为参照关系(ReferencingRelation),关系R2为被参照关系(ReferencedRelation)或目标关系(TargetRelation)。R1和R2也可能是同一个关系。例如,现在有两个关系,分别表示学生信息和学院信息:R1(学号,姓名,性别,所在学院编号)R2(学院编号,学院名称,学院位置)参见下页的图形:2.2关系模型学号姓名性别所在学院编号010205王南男001010208李婷女001……R1:学生信息关系(表)学院编号学院名称学院位置001材冶学院采矿馆002信息学院主楼……R2:学院信息关系(表)“学号”是R1的主键。“学院编号”是R2的主键。R1中的“所在学院编号”要参照R2的“学院编号”取值;二者定义在同一个域上。“所在学院编号”是R1的外键。R1为参照关系;R2为被参照关系。2.2关系模型•关系数据库中,一个关系可以看作是一个______思考题:•一个关系中某个属性的值能唯一标识关系中的每一个元组,该属性称为_____•关系模型包括三部分:_________2.2关系数据结构及形式化表示在关系模型中,无论是实体还是实体之间的联系都由单一的结构类型关系来表示。2.2.1关系数据结构(1)笛卡儿积(CartesianProduct)设有一组域D1,D2,…,Dn,这些域可以部分或者全部相同。域D1,D2,…,Dn的笛卡儿积定义为如下集合:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}其中每一个元素(d1,d2,…,dn)称为一个n元组(或简称元组),元素中的每一个值称为一个分量。人们通常感兴趣的是笛卡儿积的某些子集,笛卡儿积的子集就是一个关系。笛卡儿积可表示为一个二维表,表中每行对应一个元组,每列对应一个域。例如,给出两个域:D1=Student={王南,李婷},表示学生集合D2=Major={理学院,信息学院},表示学院集合D1×D2={(王南,理学院),(王南,信息学院),(李婷,理学院),(李婷,信息学院)},对应二维表为:D1×D2基数为4。D1×D2共4个元组。StudentMajor王南理学院王南信息学院李婷理学院李婷信息学院(2)关系(Relation)笛卡儿积D1×D2×…×Dn的子集R称为在域D1,D2,…,Dn上的一个关系(Relation),通常表示为:R(D1,D2,…,Dn)其中,R表示关系的名称,n称为关系R的元数或度数(Degree),而关系R中所含有的元组个数称为R的基数(CardinalNumber)。在关系模型中,对关系作了下列规范性限制:①关系中不允许出现相同的元组;②不考虑元组之间的顺序,即没有元组次序的限制;③关系中每一个属性值都是不可分解的;④关系中属性顺序可以任意交换;⑤同一属性下的各个属性的取值必须来自同一个域,是同一类型的数据;⑥关系中各个属性必须有不同的名字。2.2.2关系模式关系模式是对关系的描述。关系是元组的集合,也就是笛卡儿积的一个子集。因此关系模式必须指出这个元组集合的结构,即它由哪些属性构成,这些属性来自哪些域,以及属性和域之间的映像关系。其次,一个关系通常是由赋予它的元组语义来确定的,元组语义实质上是一个n目谓词(n是属性集中属性的个数)。凡使该n目谓词为真的笛卡儿积中的元素(或者说凡符合元组语义的元素)的全体就构成了该关系模式的关系。关系的描述称为关系模式(relationschema)。它可以形式化地表示为:R(U,D,Dom,F)其中R为关系名,U为组成关系的属性名集合,D为属性组U中属性所来自的域,Dom为属性向域的映像集合,F为属性间数据依赖关系的集合。2.3关系代数1.运算对象关系,将整个关系作为运算单位(操作数),用关系代数表达式表示的运算方法。2.关系操作分类传统的集合操作(并、差、交、笛卡尔积)扩充的关系操作(投影、选择、连接、除法)传统的集合运算并(Union)关系R和S的并记作:R∪S={t|t∈R∨t∈S},即属于R或S的所有元组。R和S应该有相同的目,即属性个数相同,类型相同。ABCa1b1c1a1b2c2a2b2c1R关系ABCa1b2c2a2b2c2a2b2c1S关系R∪SABCa1b1c1a1b2c2a2b2C1a2b2c22.3关系代数2.3关系代数差(Difference)关系R和S的差记作:R-S={t|t∈R∧t!∈S},即属于R且不属于S的所有元组。R和S应该有相同的目,即属性个数相同,类型相同。ABCa1b1c1a1b2c2a2b2c1R关系ABCa1b2c2a2b2c2a2b2c1S关系R-SABCa1b1c1交(Intersection)关系R和S的交记作:R∩S={t|t∈R∧t∈S},即属于R且属于S的所有元组。R和S应该有相同的目,即属性个数相同,类型相同。ABCa1b1c1a1b2c2a2b2c1R关系ABCa1b2c2a2b2c2a2b2c1S关系R∩SABCa1b2C2a2b2c12.3关系代数广义笛卡儿积(ExtendedCartesianProduct)n目关系R和m目S的广义笛卡儿积为n+m目关系,记作R×S。其中,前n个属性为R的属性集,后m个属性为S的属性集,R×S中的每个元组为每一个R元组与所有S元组的组合。若R有K1个元组,S有K2个元组,则R×S共有K1×K2个元组。ABCa1b1c1a1b2c2R关系ABCa1b2c2a2b2c2a2b2c1S关系R×SABCABCa1b1c1a1b2c2a1b1c1a2b2c2a1b1c1a2b2c1a1b2c2a1b2c2a1b2c2a2b2c2a1b2c2a2b2c12.3关系代数扩充的关系运算选择(Selection)在关系R中选择满足条件的元组,记作:σF(R)={t|t∈R∧F(t)=TRUE},F可以是逻辑运算符(如AND,OR等)和关系运算符(,,=等)等的组合。选择运算就是从关系R中选取使逻辑表达式F为TRUE的元组。SNOSNAMESDEP010203王南机械学院010204李婷信息学院010205张力信息学院Student关系σSDEP=‘信息学院’(Student)SNOSNAMESDEP010204李婷信息学院010205张力信息学院2.3关系代数SNO(学号)SNAME(姓名)SGEN(性别)SAGE(年龄)SDEP(学院)010203王南男18机械学院010204李婷女19信息学院010205张力男22信息学院例:Student关系σSGEN=‘男’ANDSAGE20(Student)SNO(学号)SNAME(姓名)SGEN(性别)SAGE(年龄)SDEP(学院)010203王南男18机械学院2.3关系代数专门的关系运算投影(Projection)从关系R中选择若干属性列,组成新的元组,记作:∏A(R){t[A]|t∈R},其中A为R中的属性列。投影操作是从列的角度参加的运算;如果取消某些属性列后,出现重复的行,则去掉这些完全相同的行。SNO(学号)SNAME(姓名)SDEP(学院)010203王南机械学院010204李婷信息学院010205张力信息学院Student关系∏SNO,SNAME(Student)SNO(学号)SNAME(姓名)010203王南010204李婷010205张力2.3关系代数ABC102030401112AC1112=AC112则:A,C(R)例:若关系R连接(Join)从关系R和关系S的笛卡尔积中选择属性间满足一定条件的元组,记作:当Ө为=时,称为等值连接。见下页的等值连接例子。RAӨBS2.3关系代数ABMa1b13a1b25a2b27R关系R×SAR.BMS.BNa1b13b26a1b13b38a1b25b26a1b25b38a2b27b26a2b27b38例:求RR.B=S.BSBNb26b38S关系RR.B=S.BSAR.BMS.BNa1b25b26a2b27b26取R.B=S.B的所有元组2.3关系代数自然连接(NaturalJoin)从两个关系的笛卡儿积中选择出公共属性值相等的元组,并在结果中去掉重复的属性列,记作:自然连接是一种特殊的等值连接,只有两个关系有相同属性组时才可以参加。RS2.3关系代数ABCa1ab1bb2bR关系R×SAR.BR.CS.BS.CDa1a1aea1a2bfb1b1aeb1b2bfb2b1aeb2b2bf例:求RSS关系BCD1ae2bfRS取R.B=S.B且R.C=R.C的所有元组AR.BR.CS.BS.CDa1a1aeb2b2bf2.3关系代数ABCDa1aeb2bf去掉重复属性除法(Division)给定关系R(X,Y)和S(Y,Z),其中X,Y,Z均为属性组,R和S的属性组Y属于同一个域。R÷S得到一个新关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集包含S在Y上投影的集合。象集:R(A,B,C)为关系,A、B、C为属性组,a1在R中的象集为R中属性组A上值为a1的各元组在B、C上分量的集合。2.3关系代数ABCa1b1c2a3b4c6a1b2c3a2b2c1a1b2c1R关系S关系BCb1c2b2c1b