关系数据模型前面介绍了数据模型的分类,层次模型、网状模型、关系数据模型。那么,关系数据模型又是什么样的呢?为什么关系数据模型能够成为当今市场的主流呢?目录关系数据库概述关系数据结构关系的完整性关系操作-----关系代数关系数据库概述关系数据库系统是支持关系数据模型的数据库系统。关系数据模型三要素:关系数据结构、关系操作、完整性约束。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域基数:域中数据个数。(注:在域中相同的值被视为同一值)例:{0,1}和{0,1,1}等价基数都为2笛卡尔积基数:各域基数的乘。关系:D1×D2×…×Dn的子集叫作在域D1、D2、…Dn上的关系,用R(D1、D2、…Dn)表示度(目、元数):属性的个数就是关系的度。D1=男人的集合={张二,王三,李四}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(客户编号))一个关系中的某个属性的取值应参照另一关系中的某个属性的取值。定义:外码、参照关系、被参照关系设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码KS相对应,则称F是基本关系R的外码(foreignkey),并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。关系R和S不一定是不同的关系。1.学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)2.学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名)选修(学号,课程号,成绩)3.学生2(学号,姓名,性别,专业号,年龄,班长号)2、参照完整性(referentialintegrity)规则:若属性(或属性组)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),所属院系intNOTNULL,PRIMARYKEY(记录编号),UNIQUE(姓名),CHECK(入学成绩=0))关系代数数据库的核心应用是数据库的查询查询语言用户用来从数据库中请求获取信息的语言关系代数是一种抽象的查询语言,是用对关系的运算来表达查询的。运算的三个要素:运算对象、运算符、运算结果关系代数运算:运算对象:关系运算结果:关系运算符:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。含义∪并∩交-差×广义笛卡尔积σ选择∏投影∞连接÷除>大于≥大于等于<小于≤小于等于=等于≠不等于非∧与∨或比较运算符逻辑运算符运算符专门的关系运算符集合运算符关系代数运算符几个记号及举例(了解)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)}关系PPQTY2BCD9AEF2BEF9ADE7GEF一、传统的集合运算:1.并(Union):运算符为“∪”R∪S={t│t∈R∨t∈S}例:T1=R1∪R2表示关系R1,R2的并运算,生成一个新的关系T1.例如:R1={1、2、3、4、5}R2={3、4、5、6、7}T1=R1∪R2={1、2、3、4、5、6、7}关系运算有两大类传统的集合运算,专门的关系运算2.差(difference):运算符为“-”R—S={t│t∈R∧┐t∈S}例:T2=R1-S1表示关系R1,S1的差运算,生成一个新的关系T2例如:R1={红、黄、绿}S1={红、黑、紫}T2=R1-S1={黄、绿}3.交(intersection)运