第一章关系和关系模型主要内容:数据模型关系和关系模式键关系的更新数据模型的组成要素:数据结构、数据操作、数据的完整性基本的数据模型分类:层次、网状、关系数据模型、面向对象数据模型1.1数据模型1.1.1数据模型的组成要素(l)数据结构:用于描述数据的静态结构,包括应用所涉及的对象类和对象类所具有的特性以及它们之间的联系。(2)数据操作:是施加在对象上的一组操作,是对系统动态特性的描述。(3)数据的完整性:是对数据静态和动态特征性的限制,是一组完整性规则的集合。完整性规则是用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。1.层次模型有且仅有一个结点无双亲,称为根结点;其它结点有且仅有一个双亲。层次模型的数据结构是一棵树。1.1.2基本数据模型分类班级教研室系科室部科室处大学大学组织机构的层次模型2.网状模型允许一个结点可以有多个双亲;多个结点无双亲结点。班级课程学生基本结构是二维表,一张表称为一个关系。与层次和网状模型比较,关系模型有下列优点:数据结构单一;建立在严格的数学概念基础上;将数据定义和数据操纵统一在一种语言中,使用方便,易学易用。由于关系模型具有许多优点,因而在80年代之后的商品化数据库系统几乎都是关系型的。所以关系数据库是本课程的主要研究内容之一。3.关系数据模型9020042陆川2004029020041刘敏2004019020031李丽2003029020031王鸣200301班级姓名学号(a)学生关系9020042数据库计算机曹岩9020041人工智能计算机马小路9020032英语外语赵伟9020031计算数学数学吴云峰班级课程系别教师姓名(b)教师开课关系可以表示复杂对象;模块化的结构,便于管理;具有定义抽象数据类型的能力。面向对象的数据模型是新一代数据库系统的基础,是数据库技术发展的方向。4.面向对象数据模型1.2关系和关系模式1.2.1关系•在关系模型中唯一的数据结构是关系,一个关系对应一张二维表。•域:具有相同数据类型的值的集合。定义1(笛卡尔积):D1,D2,...,Dn的笛卡尔积为:D1D2...Dn={(d1,d2,...,dn)diDi,i=1,2,...,n}。其中每一个元素(d1,d2,...,dn)叫做一个n元组(n-tuple),元素中第i个值di叫做第i个分量。例:设D1={1,2,3},D2={a,b}D1D2={(1,a),(1,b),(2,a),(2,b),(3,a),(3,b)}实际上,如D1—学生集(50个),如D2—班级集(2个),D1D2有多少元素?意义?•定义2(关系):集合D1,D2,...,Dn笛卡尔积的任一个子集称该集合上的一个关系(Relation)。其中,集合D1,D2,...,Dn是关系中元组的取值范围,称关系的域(domain),这些域是有限的非空集合,n叫做关系的度(degree)。关系的基本概念关系(Relation)二维表,关系用关系名标识,如关系r。元组(Tuple)表中的行,一般用变量t表示。属性(Attribute)表中的一列,如列Ai,dom[Ai]表示属性Ai的域键(Key,码)可以唯一地确定一个元组的属性组。关系举例:火车时刻表dom(NUMBER)={565,523,532,K95,K96}dom(FROM)=dom(TO)={BeiJing,XuZhou,…,ShenZhen}dom(DEPARTS)=dom(ARRIVES)=一组时间。表1火车时刻表7:3717:13WuChangShenZhenK967:1816:55ShenZhenWuChangK959:4021:45BeiJingLuoYang5326:0621:30LuoYangXuZhou5237:5420:40BeiJing565ARRIVESDEPARTSFROMNUMBERTOXuZhou关系的性质(关系数据库中对关系的限定)1.每一列中的值是同类型的数据,来自同一个域。2.不同的列可以有相同的域,每一列称为属性,用属性名标识。3.列的顺序是无关紧要的。4.任意二个元组不能完全相同。(相同元组称重复组)5.行的顺序是无关紧要的。6.关系中的每个分量都是原子值,是不可分的数据项。1.2.2关系模式关系模式一般表示为:关系名(属性1、……属性n)如:R(A1,A2,…,An)。用U表示关系R的属性集合U=A1∪A2∪…∪An,模式R上的一个关系r是从U到D的映象。元组t∈r,t的分量用t[Ai]表示.t[Ai]∈Di例:在学生关系模式S(SNO,SNAME,AGE,SEX,CNO)中,当CNO=1,就可以一班学生的列表,即一个具体的关系;当CNO=2,就可以二班学生的列表,即另一个具体的关系。定义(关系数据库模式):设属性集U和U的属性所关联的域为D,U上的关系数据库模式R是R1,R2,…,Rp的集合,即:R={R1,R2,…,Rp},且U=R1∪R2∪…∪Rp。比如:R1为学生关系:S(Sno,Sname,Sbirth,Dept,Class,Rno)R2为班级关系:C(Class,Pname,Dept,Cnum,Cyear)R3为系关系:D(Dept,Dno,Office,Dnum)R4为学生会关系:M(Mname,Myear,Maddr,Mnum)关系数据库:一个关系数据库模式R对应的所有关系集合{r1,r2,…,rp}称为关系数据库模式R上的一个关系数据库d.关系模式和关系的区别和联系:关系模式:对一类实体特征的结构性描述,即对关系的结构性描述,该描述一般包括关系名、属性名、属性域的类型和长度,属性之间固有的依赖联系等。关系模式和关系的区别和联系:关系模式描述的是关系的静态结构信息,是对一个关系的“型”的描述,是相对固定的。关系是在关系模式约束之下的若干实体的集合,实体的数量是随时间变化的,但这种变化必定在关系模式的约束范围内。一般用大写字母表述关系的结构,比如R,用小写字母一个具体的关系值,如r.1.3键(Key)和关系的完整性1.键设关系模式R(U),KU,r是R上的任一关系,若对r中的任意二个不同的元组t1、t2满足:(1)t1[K]t2[K];(2)若KK而t1[K]t2[K]不成立。称K是R的键。若仅条件(1)成立,K是R的超键。有键的定义得出:键是能唯一标示元组的最小属性集。在上面火车时刻表的例子中,NUMBER是一个键。2.主键、隐含键、候选键、超键主键:有的关系具有多于一个键,这种情况下指派其中一个键为主键,简称为关系的键。用带下划线的属性表示。例如:TRAIN(NUMBER,FROM,TO,DEPARTS,ARRIVES)TRAIN(NUMBER,FROM,TO,DEPARTS,ARRIVES)隐含键:未被制定的键称隐含键,也称替补键。候选键:主键和隐含键统称为候选键。超键:在上面键的定义中,若条件(2)不成立,称K为R的超键。例如:NUMBER、FROM是一个超键。3.关系的完整性(1)关系模型的三要素:•数据结构关系模型的数据结构为单一的关系,它表示了实体和实体间的联系。•关系操作关系操作关系代数:布尔运算、专门关系运算;关系演算:关系元组演算、域演算。•完整性约束实体完整性、参照完整性、用户定义的完整性。•实体完整性关系中键属性的值不能取空值。例如:学生关系S(SNO,SNAME,AGE,SEX,CNO)•参照完整性是关系间引用所遵循的规则,与外键有关。•用户定义的完整性数据间应满足的语义约束关系,由用户定义,由系统检查。(2)完整性约束下下页外键:设F是关系R的一个或一组属性,但不是R的键。若F是另一个关系S的键,则称F是关系R的外键。R为参照关系,S为被参照关系。例如:参照关系学生关系S(SNO,SNAME,AGE,SEX,CNO)班级关系C(CNO,CMN)---被参照关系参照完整性规则关系R中外键的值或者为空值,或者为被参照关系中主键的值。建立表结构和完整性约束补充:SQL语言简介SQL是英文StructuredQueryLanguage的缩写,意思为结构化查询语言。SQL语言将数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能集于一体,可以独立完成数据库生命周期中的全部活动.SQL被作为关系型数据库管理系统的标准语言。目前,绝大多数流行的关系型数据库管理系统,如Oracle,Sybase,MicrosoftSQLServer,Access等都采用了SQL语言标准。基本的SQL语句包括Select、Insert、Update、Delete、Create、Drop,它们可以被用来完成几乎所有的数据库操作。很多数据库根据不同的需要对SQL语句进行了再开发和扩展。SQL的基本语句1.创建新表createtabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)例:CREATETABLEC(CNONUMBER(6),CMNCHAR(10))2.选择select*fromtable1where范围例:SELECTSNO,SNAMEFROMSWHERECNO=2002013.插入insertintotable1(field1,field2)values(value1,value2)例:INSERTINTOSVALUES(909901,‘李利’,21,‘男’,200205);4.删除deletefromtable1where范围例:DELETEFROMSWHERESNO=20100162;5.更新(修改)updatetable1setfield1=value1where范围例:UPDATESSETSage=23WHERESno=‘20100162’完成核心功能SQL语言只用9个动词,并且它的表达接近英语句子,所以比较简单、易学。SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言,比如:C、PL/1、FORTRAN。CREATETABLES(SNONUMBER(4),SNAMECHAR(10)NOTNULL,AGENUMBER(3),SEXCHAR(1),CNONUMBER(6),CONSTRAINTSK1PRIMARYKEY(SNO),CONSTRAINTSK2FOREIGNKEY(CNO)REFERENCESC(CNO)),CONSTRAINTSK3CHECK(AGEIN(16,45)));CREATETABLEC(CNONUMBER(6),CMNCHAR(10),CONSTRAINTCKPRIMARYKEY(CNO));1.4关系的更新—插入、删除、修改1.插入对关系r(A1,A2,…,An),插入操作形式为:ADD(r;A1=d1,A2=d2,…An=dn)ADD(r;d1,d2,…,dn)例:ADD(S;SNO=909901,SNAME=李利,AGE=21,SEX=男,CLASSNO=200205)插入操作的有效检查:(1).描述的元组是否符合所指定的关系模式;(2).元组的某些值是否属于对应的域;(3).元组的键是否已在关系中存在。例:用SQL语言实现在学生关系S中插入一个元组。INSERTINTOSVALUES(909901,‘李利’,21,‘男’,200205);2.删除对关系r(A1,A2,…,An),删除操作形式为:DEL(r;A1=d1,A2=d2,…An=dn)DEL(r;d1,d2,…dn);若K=B1B2…Bm,DEL(r;B1=k1,B2=k2,…Bm=km)例:DEL(S;SNO=909901,SNAME=李利,AGE=21,SEX=男,CLASSNO=200205)删除操作的检查:如果被删除元组在关系中不存在,这