目录上一页下一页退出关系数据库的基本概念关系模型概述关系数据库系统是支持关系模型的数据库系统关系模型由三部分组成:数据结构关系操作集合关系的完整性。目录上一页下一页退出在关系模型中最重要的数据结构就是关系;关系就是一张表,设计关系就是设计一张表;元组是表中的一行;属性是表中的一列,属性名是给属性起的名字;关键字是表中的某个属性组,唯一确定一个元组;关系模式是对关系的描述,一般表示为关系名(属性1,属性2,···,属性n);外键是关系中不是该关系的关键字或只是关键字的一部分的某个属性或属性组合,但它同时是另一个关系的关键字;主表是以外键作为主键的表;从表指外键所在的表。在为数据库设计关系时,必须为每个关系指定一个关键字或主码,并且在该关系中,关键字的值不能为空,即关键字的值为空的元组在关系中是不允许存在的。在有些关系中关键字是由单个属性组成的,在另一些关系中关键字是由若干个属性的组合而构成的,即这种关系中的元组不能由任何一个属性惟一表示,必须由多个属性的组合才能惟一表示。关系模式是稳定的,而关系是随时间不断变化的,因为数据库中的数据在不断更新。目录上一页下一页退出一.单一的数据结构----关系在关系模型中,无论是实体还是实体之间的联系均由单一的结构类型即关系来表示。关系模型中数据的逻辑结构是一张二维表。目录上一页下一页退出二.关系操作关系操作指存储操作和检索操作,且以检索操作为核心。关系模型给出了关系操作的能力和特点,但不对DBMS的语言给出具体的语法要求。关系语言的特点是高度非过程化。用户不必请求DBA为他建立特殊的存取路径,存取路径由DBMS的优化机制来完成。此外,用户也不必求助于循环、递归来完成数据操作。上一页下一页退出要点目录关系操作包括:θ选择、投影、连接、除、并、交、差等查询操作和增加操作、删除、修改操作,非关系的数据操作方式则为一次一记录方式。关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一集合的方式。目录上一页下一页退出三、关系的三类完整性约束关系模型的三类完整性是实体完整性、参照完整性和用户定义的完整性。实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系自动支持。目录上一页下一页退出关系数据结构及形式化定义在关系模型中,无论是实体还是实体之间的联系均由单一的结构类型即关系来表示。目录上一页下一页退出1.关系定义:域(Domain)是值的集合。(属性的取值范围)例如:域名基数姓名={张力,李红,王芳,刘吉}4职称={高工,工程师,助工,技术员}4X={男,女}2目录上一页下一页退出定义:给定一组域D1,D2,…,Dn,则D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,I=1,2,…,n}称为D1,D2,…,Dn的笛卡尔积。其中每一个(d1,d2,…,dn)叫做一个n元组(表中的一行,称为一个元组),元组中的每一个di是Di域中的一个值,称为一个分量(元组中的属性)。若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数为:m=m1*m2*…*mn其中:m=笛卡尔积的基数目录上一页下一页退出例:给定三个域:D1={王芳,刘吉},D2={高工,助工},D3={男,女},则D1×D2×D3笛卡尔积是D1,D2,D3各域的各元素间的一切可能的组合。如表1:姓名职称性别王芳高工男王芳高工女王芳助工男王芳助工女刘吉高工男刘吉高工女刘吉助工男刘吉助工女D1×D2×D3的基数m=2×2×2=8目录上一页下一页退出给定一组域D1,D2,…,Dn则D1×D2×…×D3的子集称为D1×D2×…×Dn上的关系。记作R(D1,D2,…,Dn),其中,R为关系名,n为关系R的度或目。当n=1时,称该关系为单元关系,当n=2时,称该关系为二元关系定义目录上一页下一页退出根据实际情况,能从上表中找到两个元组。如表2。构成名为“职工”关系(表文件名)。可以记作:职工(姓名,职称,性别)表2目录上一页下一页退出关系中的某一属性组,若它的值唯一地标识一个元组(记录),则称该属性组为候选键(码)若一个关系有多个候选键,则选定其中一个为主键(码),主键的诸属性称为主属性。不包含在任何候选码中的属性称为非码属性。关系模式的所有属性组是这个关系模式的候选码,称为全码。目录上一页下一页退出关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表、视图表关系的性质(1)任意两个元组(即二行)不能完全相同。(2)关系中元组(行)的次序是不重要的,可以任意交换。(3)属性(列)的次序也是不重要的,可以任意交换。(4)同一列中的分量,必须来自同一个域,是同类型的数据。目录上一页下一页退出(5)属性必须有不同的名称,但不同的属性可以出自相同的域,即它们的分量可以取值于同一个域。例如在表3,职业与兼职是两个不同的域,但都取自同一个域集合。(6)每一分量必须是原子的,即是不可再分的数据项。满足上述性质的关系称为规范化关系。表3目录上一页下一页退出2.关系的一阶谓词表示定义:设有关系模式R,其原子谓词表示形式为P(t),其中P是谓词,t是个体变元,以元组为其表现形式。关系R与原子谓词P之间的关系如下:集合的表示方法为:R={t|P(t)}表示所有使谓词为真的元组t都属于关系R。目录上一页下一页退出4.1.3关系模式定义关系的描述称为关系模式。它可以形式化地表示为:R(U,D,dom,F)其中R为关系名,U为组成该关系的属性名集合,D为属性组U中所来自的域,dom为属性向域的映像集合。F为属性间数据的依赖关系集合。关系模式通常可以简记为R(U),通常简记为:关系名(属性名1,属性名2,…,属性n)。目录上一页下一页退出属性向域的映象常用属性的类型、长度来说明。如表2的职工关系其域可定义为:DOMAIN姓名PICA(8)DOMAIN职称PICA(4)DOMAIN性别PICA(2)以上三行分别定义了三个域。姓名、职称、性别为三个域名;PIC说明域的数据类型和长度。目录上一页下一页退出某一时刻对应某个关系模式的内容称为相应模式的状态,它是元组的集合,称为关系。关系模式和关系常常统称为关系。目录上一页下一页退出对于关系数据库要分清型和值的概念。关系数据库的型即数据库描述,它包括若干域定义以及在这些域上定义的若干关系模式(是这些域的子集);数据库的值是这些关系模式在某一时刻对应的关系的集合。数据库的型亦称为数据库的内涵(二维表格的框架),数据库的值亦称为数据库的外延。关系模式是稳定的,而关系是随时间不断变化的,因为数据库中的数据在不断更新。目录上一页下一页退出关系数据库模式多个关系的集合构成了关系数据库例:学生选课数据库系统的模式:由三个关系模式构成。S(S#,SN,SEX,SA,SD)C(C#,CN,PC#)S-C(S#,C#,G)目录上一页下一页退出四种基本数据操纵功能:(1)数据检索(2)数据插入(3)数据删除(4)数据修改对关系模型的数据操纵可描述为:(1)操纵的对象(2)基本操纵方式五种:属性指定、元组选择、关系合并、元组插入、元组删除目录上一页下一页退出1.关系模式数据库系统的结构2.关系数据语言的分类独立型宿主型3.关系数据语言与宿主语言的接口方式显式过程调用隐式过程调用按系统固有语法调用关系数据库的用户接口和关系数据语言目录上一页下一页退出关系代数关系数据库的数据操作分为查询和更新两类。查询语句用于各种检索操作,更新操作用于插入、删除和修改等操作。关系查询语言根据其理论基础的不同分成两大类:1.关系代数语言:查询操作是以集合操作为基础运算的DML语言。2.关系演算语言:查询操作是以谓词演算为基础运算的DML语言。目录上一页下一页退出关系代数是以关系为运算对象的一组高级运算的集合。关系定义为元数相同的元组的集合。集合中的元素为元组,关系代数中的操作可分为两类:传统的集合操作:并、差、交、笛卡尔积。扩充的关系操作:投影,选择,联接和自然联接,除。关系代数的基本运算目录上一页下一页退出传统的集合运算主要指并、交、差、笛卡尔积四种运算。它们传统地用于两个集合之间的运算。当用于关系运算时,参加运算的关系必须是相容的和可并的,即它们应有相同的度(属性个数相等),且相应的属性值来自同一域。如下表中的关系R和S就是两个相容的关系。4.3.1传统的集合运算目录上一页下一页退出记作R∪S,由属于R和属于S的元组合并而得,但须除去重复的元组。可用于元组的插入操作。1.关系R与关系S之并目录上一页下一页退出2.关系R与关系S之差记作R一S,由属于R但不属于S的元组组成。可用于删除操作。目录上一页下一页退出记作R∩S,由属于R又属于S的元组组成。3.关系R与关系S之交目录上一页下一页退出两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1╳k2个元组。记作:R╳S={trts|tr∈R∧ts∈S}4.广义笛卡尔积目录上一页下一页退出目录上一页下一页退出在存储操作中,并运算可实现插入;差运算可实现删除;修改相当于“删除加插入”。例:见P63例4-24-3目录上一页下一页退出4.3.2专门的关系运算(选择、投影、连接、除)(1)选择运算性质:单目运算,即操作对象仅有一个关系。文字表示:SELECT关系名WHERE条件公式表示:关系名[条件]记为:σc(R)≡{t∣t属于R∧C(t)=true}目录上一页下一页退出C表示逻辑条件表达式,这个表达式按以下规则组成:αθβ关系模型中θ表示大于、小于、等于、不等于、大于或等于、小于或等于这些比较运算符中的一种。目录上一页下一页退出作用:在关系的水平方向上选取符合给定条件的子集。其中的条件是以逻辑表达式给出的,该逻辑表达式的值为真的元组被选取。这是从行的角度进行的运算,即水平方向抽取元组。经过选择运算得到的结果可以形成新的关系,其关系模式不变,但其中元组的数目小于或等于原来的关系中的元组的个数,它是原关系的一个子集.目录上一页下一页退出例:找出关系GP中单价小于或等于1.80元的通用零件。这实际上是从关系GP中找一个水平子集。用公式表示可写成:σ单价≤1.80(GP)≡{t∣t属于GP∧C(t)=true}目录上一页下一页退出性质:单目运算,即操作对象仅有一个关系。文字表示:∏[属性表](关系名)作用:在关系的垂直方向取含有给定属性的子集。注意:在属性表中可包括一至若干个属性。(2)投影运算目录上一页下一页退出从关系中挑选若干属性组成的新的关系称为投影。这是从列的角度进行运算。经过投影运算可以得到一个新关系,其关系所包含的属性个数往往比原关系少,或者属性的排列顺序不同。如果新关系中包含重复元组,则要删除重复元组(2)投影运算目录上一页下一页退出例:列出关系P中所有产品的名称与型号。其公式应写为:∏[产品名,产品型号](P)(2)投影运算目录上一页下一页退出注意:投影后,如出现内容完全相同的元组,应将重复的元组取消。所以投影不仅会取消一些列,也可能会取消某些行。例:找出所有选用了通用零件的产品号即取关系PGP在属性“产品号”上的投影:∏[产品号](PGP)如左图产品号P1P2P4(2)投影运算目录上一页下一页退出联接有三种类型:θ-连接(条件连接)自然连接半连接(3)连接JOIN运算目录上一页下一页退出性质:二目运算。θ联接是从关系R和S的笛卡尔积中选取属性值满足某一θ操作的元组。连接可看成是有选择的笛卡尔乘积。记为:RiθjS,这里i和j分别是关系R和S中第i个、第j个属性的序号。它的含义是:RiθjS≡σiθ(n+j)(R×S)如果θ是等号“=”,该联接操作称为“等值联接”。●θ-连接目录上一页下一页退出例:给定两个关系R、S:RR.z=s.zS目录上一页下一页退出两个关系R和S的自然联接用RS表示。具体计算过程如下:①计算R×S②设R和S的公共属性是A