您好,欢迎访问三七文档
第3章关系数据模型3.1关系数据模型概述3.2关系数据库的数据结构3.3从E-R模型到关系模型3.4关系的完整性约束本章内容3.5关系代数1.掌握关系数据模型的基本概念4.理解关系完整性约束的含义3.掌握从E-R模型到关系模型的转换学习要求2.理解关系数据库实现联系的方法5.熟悉使用关系代数表示查询的方法3.1关系数据模型概述关系数据模型是数据模型的一种。关系模型由关系数据结构、关系数据操作和关系完整性约束三个部分组成。3.1.1关系数据结构(3.2节)3.1.2关系数据操作(3.5节)3.1.3关系的完整性约束(3.3节)3.1.1关系数据结构关系数据模型的数据结构非常单一,在关系模型下,现实世界的实体及实体间的各种联系均用关系来表示。在用户看来,关系模型中数据的逻辑结构就是一张二维表。3.1.2关系数据操作关系数据操作是采用关系数据语言对关系数据库中的数据进行操作。关系模型中常用的关系操作包括:选择、投影、连接、除、并、交、差等查询操作和增加、删除、修改操作两大部分。查询的表达能力是其中最主要的部分。关系操作采用集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一集合(setatatime)的方式。相应地,非关系数据模型的数据操作方式则为一次一记录(recordatatime)的方式。3.1.2关系数据操作早期,关系操作能力通常是用代数方式或逻辑方式来表示,分别称为关系代数和关系演算。关系代数是用对关系的运算来表达查询要求的方式。关系演算是用谓词来表达查询要求的方式。另外还有一种介于关系代数和关系演算之间的语言SQL(structuredquerylanguage,结构化查询语言)。SQL不仅具有丰富的查询功能,而且具有数据定义和数据控制功能,是集查询、DDL(数据定义语言),DML(数据操纵语言)和DCL(数据控制语言)于一体的关系数据语言。它充分体现了关系数据语言的特点和优点,是关系数据库的标准语言。3.1.2关系数据操作3.1.3关系的完整性约束完整性约束是一组规则,用以限定符合数据模型的数据库状态和状态的变化,以保证数据的正确、有效和相容。关系模型提供了丰富的完整性控制机制,允许定义三类完整性:实体完整性、参照完整性和用户定义的完整性。其中,实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持,称为是通用的完整性约束。用户自定义的完整性约束称为是专用完整性约束。3.1.3关系的完整性约束3.2关系数据库的结构关系数据库是采用关系模型作为组织方式构建的数据库。在用户观点下,关系就是一张二维表,由行和列组成。学号姓名年龄性别系名年级2005004王小明19女社会学20052005006黄大鹏20男商品学20052005008张文斌18女法律2005………………关系模型的数据结构3.2关系数据库的结构3.2.1基本概念3.2.2码3.2.1基本概念1.关系(Relation)一个关系对应于通常说的一张表。2.元组(Tuple)表中的一行即为一个元组。3.属性(Attribute)表中的一列即为一个属性,给每一个属性起一个名称即属性名。4.域(Domain)属性的取值范围。如属性系名的域是学校所有系名的集合。3.2关系数据库的结构5.分量元组中的一个属性值。如上表中的王小明。3.2关系数据库的结构6.关系模式关系模式是对关系的描述,由关系名和关系的属性集合组成。如:学生(学号,姓名,性别,班级名称)在数据库中要区分型和值,在关系数据库中关系模式是型,关系是值。关系是关系模式在某一时刻的状态或内容,关系模式是静态、稳定的,而关系是动态的。在实际当中,人们常把关系模式和关系都称为关系。3.2.2码码(Key):是表中的属性或者属性组,可以唯一确定一个元组。码又称候选码分类1.超码(SuperKey):能够唯一标识一个元组的属性或属性组。2.候选码(CandidateKey):最小的超码,该属性组能唯一标识一个元组,又不包含多余的属性。3.主码(PrimaryKey):用户可以指定一个候选码为主码,即用户正在使用的候选码为主码。主码又叫主键。主码超码候选码3.2.2码主属性(Primaryattribute):候选码的属性称为主属性。非主属性(Non-keyattribute):不包含在任何候选码中的属性称为非主属性或非码属性。候选码:教师编号和身份证号主码:教师编号或身份证号主属性:教师编号、身份证号非主属性:姓名、学历3.2.2码在一个关系模式中,可以有多个候选码,但只能有一个主码。例如:1.在关系模式供应商(供应商名称,供应商地址,供应商电话)中,供应商名称是唯一的候选码,也是它的主码。2.关系模式选修(学号,课程号,成绩)中,属性的组合(学号,课程号)是唯一的候选码,也是它的主码。注意:单个学号属性和单个的课程号属性不是码。3.在关系模式教师信息(教师编号,姓名,身份证号,学历)中,有两个候选码:教师编号和身份证号,可以选择其中一个作为主码。3.2.2码4.外码(ForeignKey):如果一个关系的属性或属性组不是它的码,但却是另一个关系的主码,则该属性或属性组称为该关系的外码。外码是关系数据库实现数据之间联系的方法。3.2关系数据库的结构关系术语一般表格的术语关系名表名关系模式表头(表格的描述)关系(一张)二维表元组记录或行属性列属性名列名属性值列值分量一条记录中的一个列值非规范关系表中有表(大表中嵌有小表)术语对比3.3从E-R模型到关系模型E-R模型和关系模型都是现实世界抽象的逻辑表示。不同在于E-R模型并不被DBMS直接支持,更适合对现实世界建模;而关模型则是DBMS直接支持的数据模型。由于两种模型采用了类似的设计原理,我们容易将E-R模型转换成关系模型。3.3从E-R模型到关系模型将E-R模型转换成关系模型的方法:(1)每个实体集用一个关系表示。实体集的名字作为关系的名字,实体集的全部属性构成关系的全部属性,实体集的码作为关系的码。(2)每个联系集用一个关系表示。联系集名作为关系名,参与联系的各个实体集的码和联系集的属性共同构成关系的属性。关系的码根据联系的类型,按如下方法确定:3.3从E-R模型到关系模型①如果联系是一对一的,则每个实体集的码都是关系的码。②如果联系是一对多(多对一)的,则“多端”实体集的码组合成关系的码。③如果联系是多对多的,则参与联系的所有实体集的码组合成关系的码。3.3从E-R模型到关系模型(3)另外,如果两个关系模式具有相同的码,则可以合并它们,以减少重复存放的空间开销。在关系模式中的码|主码用下划线标识。例:将例2.2的概念模型转换为相应的关系模型3.4关系的完整性约束关系模型的完整性规则是对关系的某种约束条件。关系模型中有三类完整性约束:实体完整性约束、参照完整性约束和用户定义的完整性约束。其中,实体完整性约束和参照完整性约束是关系模型必须满足的完整性约束条件,由DBMS自动支持,称为是通用的完整性约束。用户自定义的完整性约束称为是专用完整性约束。3.4.1实体完整性约束3.4.2参照完整性约束3.4.3用户自定义完整性约束3.4.1实体完整性约束实体完整性规则:基本关系R的所有元组在主码上的值必须唯一,并且在主码的任何属性上不能取空值。空值指“缺失的值”,是目前尚不知道的值,通常用NULL表示。如:在教师关系中,某一元组在属性院系名上取空值,表示该教师尚未分配到具体院系,或者是校长。3.4.1实体完整性约束例:学生、课程、学生与课程之间的多对多联系可以如下3个关系表示:学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)选修(学号,课程号,成绩)在学生关系中,主码学号必须是非空唯一的在课程关系中,主码课程号必须是非空唯一的在选修关系中,主码(学号,课程号)中的任何一个属性学号、课程号都必须是非空唯一的。3.4.2参照完整性约束参照完整性约束是定义外码和主码之间的应用规则。参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码KS相对应(即R的外码参照S的主码),则关系R的某个元组在F上的取值或者等于关系S在主码KS上的值,或者为空值。3.4.2参照完整性约束例1:学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)学生关系中属性“专业号”是它的外码,参照专业关系的主码“专业号”。按照完整性规则,学生关系中某个元组的“专业号”属性只能取两类值:(1)空值,表示尚未给该学生分配专业;(2)非空值,这时该值必须是专业关系中的某个元组的“专业号”的值。表示该学生不可能分配到一个不存在的专业中。即被参照关系“专业”中一定存在一个元组,它的主码值等于该参照关系“学生”中的外码值。3.4.2参照完整性约束例2:学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)选修(学号,课程号,成绩)在选修关系中,(学号、课程号)是它的主码,单个的“学号”和“课程号”不是它的码。同样,按照按照完整性规则,“学号”和“课程号”属性也可以取两类值:空值或者目前关系中已经存在的值。但由于(学号、课程号)是选修关系的主码,按照实体完整性规则,它们均不能取空值。所以,在选修关系中“学号”和“课程号”属性实际上只能取相应被参照关系中已经存在的主码的值。3.4.2参照完整性约束参照完整性规则中,两个关系R和S可以是同一个关系。例3:学生(学号,姓名,性别,专业号,年龄,班长)关系中,“学号”属性是主码,“班长”属性表示该学生所在班级的班长的学号,它引用了学生关系“学号”属性,即“班长”必须是确实存在的学生的学号。按照参照完整性规则,“班长”属性可以取两类值:(1)空值,表示该学生所在的班级尚未选出班长;(2)非空值,这时该值必须是本关系中某个元组的学号值。3.4.3用户自定义的完整性约束任何关系数据库系统都支持实体完整性约束和参照完整性约束。此外,某些数据库所涉及的数据还需要一些特殊的约束条件,这就需要用户自定义完整性规则。如:在教务管理数据库中,我们可以定义如下约束条件:(1)学生的成绩必须是0到100之间的整数(2)性别的取值只能是男、女(3)教师和学生的姓名都不能取空值DBMS提供定义和检查用户自定义完整性机制:用户可以根据实际问题定义特定的语义约束条件;系统根据用户的定义进行检查,确保用户定义的语义约束能够满足。3.5关系代数关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。任何一种运算都包含运算对象,运算结果和运算符。关系代数的运算对象是关系,运算结果亦为关系,运算符有四类:传统的集合运算符,专门的关系运算符,算术比较运算符和逻辑运算符。3.5关系代数运算符含义运算符含义传统的集合运算符∪并比较运算符>大于∩交≥大于等于-差<小于×广义笛卡尔积≤小于等于=等于≠不等于专门的关系运算符选择逻辑运算符非投影∧与连接∨或÷除关系代数运算符3.5关系代数其中:(1)传统的集合运算是从关系的水平方向即行的角度来进行;(2)专门的关系运算不仅涉及行也涉及列;(3)比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的。3.5关系代数3.5.1传统的集合运算3.5.2专门的关系运算3.5.3用关系代数表达式表示查询3.5.1传统的集合运算两个关系R和S若进行并、交、差运算,则它们必须是相容的:(1)关系R和S必须是同元的,即它们的属性数目必须相同。(2)对于所有i,R的第i个属性的域必须和S的第i个属性的域相同。(1)并(Union)运算设R和S是n元关系,并且两者各对应属性的数据类型也相同。则R和S的并运算定义为:RS={t|tRtS}其结果仍为n元关系,由属于R或属于S的元组构成。RS3.5.1传统的集合运算(1)并(Union)运算3.5.1传统的集合运算ABCabcdafcbdRSABCabcdafcbdbgaR∪SABCbgadaf(2)交(Intersection)运算设R和S是n元关系,并且两者各对应属性的数据类型也相同。则
本文标题:第3章关系数据模型
链接地址:https://www.777doc.com/doc-2155632 .html