您好,欢迎访问三七文档
第2章关系模型引言关系数据模型是1970年由E.F.Codd提出的,他把数学上的关系代数应用到数据存储的问题中,因此,关系模型的理论基础是集合论和数理逻辑。在关系模型中,数据以表的形式组织。不仅存放实体属性还可以存放实体间的关系,而且数据冗余少。关系模型以表形式存放数据,通俗易懂,又有严格的数据基础。本章主要内容关系模型的数据组织方式——数据结构按关系模型组织的数据必须满足的约束条件——数据完整性按关系模型组织的数据所允许的操作——数据操作2.1关系模型的数据结构1.关系的基本名词关系:一张满足某些约束条件的二维表,如表2-1Students关系。关系模型的数据结构是关系。元组:关系中的一行称为一个元组。对应表中的一行,存放的是客观世界的一个实体,如表Students关系中的一行,存放的是一个学生的数据。属性:关系中的一列,称为一个属性。对应表中的一列。一个属性表示实体的一个特征,如表Students关系中的Sno属性表示学生实体的学号特征值。域:关系中一个属性的取值范围。例如,Ssex的取值范围是{‘M’,‘F’},代表性别为男性和女性。。关系示例:关系的等价术语之间的对应关系一般用户关系模型程序员表(Table)关系(Relation)文件(File)行(Row)实体(Entity)记录(Record)列(Column)属性(Attribute)字段(Field)2.关系的性质关系中每一属性都是最小的。对表而言,每一个行与列的交叉点上只能存放一个单值。关系中同一属性的所有属性值具有相同的数据类型。对表而言,表中同一列中的所有列值都必须属于同一数据类型。例如表2-1中Students表的Sname列的所有值都是字符串类型。关系中的属性名不能重复。对表而言,表中每一列都有惟一的列名,不允许有两个列有相同的列名。例如表2-1Students表不允许有两个列,列名都叫Sname。关系的属性位置从左到右出现的顺序无关紧要。对表而言,表中的列从左到右出现的顺序无关紧要。即列的次序可以任意交换。例如表2-1Students表中,可以把Sname列放在第一列,也可以是第二列等等。关系中任意两个元组不能完全相同。对表而言,表中任意两个行不能完全相同,即每一行都是惟一的,没有重复的行。关系中的元组从上到下出现的顺序无关紧要。对表而言,表中的行从上到下出现的顺序也无关紧要,即行的次序可以任意交换。满足上述条件的表才能称作关系。当我们把关系和表看作是等价的时候,即默认此表是满足上述关系的性质的。理解关系的性质:横向上看,一个关系可以看作是若干个元组的集合;纵向上看,一个关系可以看作是若干个属性的集合。集合的理论表明,集合中不允许包含重复元素的,因而可以解释关系的6条性质。3.关系的候选键与主键表中某一列(或若干列的最小组合)的值能惟一标识一个行,称该列或列组为候选键。如Students表的Sno列,就是一个候选键。因为,给定一个Sno的值,如20030101,就能确定表中惟一的一行,第4行。对于一个表,可能有多个候选键。候选键取决于应用范围,如给定学院,没有重复的学生姓名,则Sname是Students表的一个候选键。如果一个表有多个候选键,数据库设计者通常选择其中一个候选键作为区分行的惟一性标识符,称为主键(primarykey,PK)。如果一个表只有一个候选键,那么这个候选键就作为主键。例如,在Students表,把Sno作为该表的主键。因为主键是候选键之一,而根据候选键的定义,候选键列上的各个值都惟一,因此主键列上的各个值也都惟一。4.关系模式关系模式是关系的形式化描述。最简单的表示为:关系名(属性名1,属性名2,…,属性名n)注意:主键要用下划线表明。但有时,关系模式中并没有表明主键。例如:Students关系的关系模式为:Students(Sno,Sname,Ssex,Sbirthdate,Sdept)关系模式即是一个表的表头描述。表头也称为关系的结构、关系的型等。除表头一行以外的所有行的集合(即表内容),称为关系的值。一个关系(表),由表头和表内容两部分组成,表头是相对不变的,而表内容是经常改变的。如Students表中,当有新学生入学时,就增加若干行,当学生毕业时,就要删除若干行,所以表是动态的。5.关系数据库关系数据库是相互关联的表或者说关系的集合因为一个表存放的是某一应用领域的一个实体或实体间的联系,如Students表存放的是学生这个实体(集),Courses表存放的是课程这个实体(集),Enrollment表存放的学生实体与课程实体之间的联系,这里为选课联系。因此关系数据库中存放的是某一应用领域中的所有实体和实体之间的联系。一个关系用一个关系模式表示,所有关系模式集合构成数据库的模式,它是数据库整体逻辑结构的描述。2.2关系模型的数据完整性关系模型的数据完整性指的是完整性规则。完整性规则包括实体完整性规则、参照完整性规则和用户自定义完整性规则三大类。实体完整性和参照完整性是关系模型必须满足的两个完整性规则。1.实体完整性规则实体完整性规则是表中任意一行的主键值不能为空值。空值,用“null”表示,大小写一样。空值是尚未确定的值或不确定的值。如Enrollment表中的Grade值。空值和数值型列的0值以及字符型列的空字符串的不同,数值型列的0值与字符型列的空字符串都是确定的值。根据主键的定义,主键值必须惟一。因此,实体完整性也可定义为:主键值惟一且不能为空值。表中任意一行的主键值不能为空值。完整性的意义:一个表对应存放一个实体,表中的每一行代表实体中的一个实例。如学生表用来存放学生实体,该表中的一行代表一个学生,一个学生有惟一的一个学号。如果主键值Sno为空值,表明该学生的学号不能确定,也就是说没有惟一确定的学号,这只能说明他/她不是学生,因此就不应该存放在学生表中。实体完整性的作用:一旦定义表的主键,RDBMS将自动地对该表中的每一行的主键值进行检查,若发现主键值为空或不惟一,RDBMS会给出错误信息,这样就能确保表中的每一行是惟一的,可以区分的。2.参照完整性规则参照完整性规则是一个表的外键值可以为空值。若不为空值,则必须等于另一个表中主键的某个值。外键(ForeignKey,FK):若一个表R1中的一个列或列组对应另一个表R2的主键,那么该列或列组称为表R1的外键。外键可以由一个或多个列组成,可以有重复值。外键与主键的关系示例:图2-1学生、课程、选课表主键、外键参照关系图外键的取值的两种情况分析:图2-2系表、课程表主键、外键参照关系图参照完整性的作用:在关系数据库系统中,一旦定义了表的外键,也即定义了外键与另一个表的主键的参照与被参照联系,RDBMS将根据外键的定义,自动检查表中的每一行,若发现外键值违反外键的规则,RDBMS会给出错误信息,要求用户纠正,这样能确保表之间的参照与被参照联系的正确性。说明:实体完整性和参照完整性在关系模型中是必须实现的。遗憾的是SQLServer2000中可以定义没有主键的表,即没有实现实体完整性。另外,即使表有外键,也可以不定义为外键,没有实现参照完整性。3.用户自定义完整性规则用户自定义完整性规则是表格设计者为了保证表中某些行、列的数据满足具体应用要求而自定义的一些规则。自定义规则往往根据实际的应用背景提出来。例如:在Students表中,Ssex列的取值范围只能是’F’/’M’,因为实际情况是性别只能为男或女。第二章作业(1)1.解释下列术语:(1)候选键、主键、外键(2)关系、关系模式、关系数据库(3)完整性规则、实体完整性规则、参照完整性规则2.Students、Courses、Enrollment三个表的结构和内容如图2-1所示。其中Sno列是Students表的主键,Cno列是Courses表的主键,(Sno,Cno)列组是Enrollment表的主键,Sno是Enrollment的外键,与Students表的主键对应,Cno是Enrollment的另一个外键,与Courses表的主键对应。假定要向Enrollment表中插入以下新行。问哪些行能够成功插入?为什么?(1)(‘20010119’,‘C1’,null)(2)(‘20010101’,‘C5’,null)(3)(‘20010101’,‘C1’,null)(4)(null,‘C1’,80)(5)(‘20010101’,‘C2’,null)图2-1学生、课程、选课表主键、外键参照关系图3观测以下两个表的内容,确定T1表的三个候选键,T2表的一个候选键。T1T2ABCDABCDA1B1C1D1A1B1C1D1A2B3C1D2A2B1C1D1A3B4C2D2A1B2C1D1A4B2C2D1A2B1C2D1关系代数是对关系型数据库操作的抽象语言,也称查询语言。这里的查询,包括数据的插入、删除、修改、查找等,即数据的操纵。关系代数只对数据操纵进行抽象表示,基于关系代数实现的关系型数据库操纵语言,如SQL,才能对数据库中的数据进行实际操作。关系代数的作用只是用来衡量其它实现了的查询语言如SQL等的查询能力。2.3关系模型的数据操作——关系代数关系代数中,运算的对象是关系(表),运算的结果是一个新关系(表)。关系的运算包含两部分,即传统的集合运算和特殊的关系运算。传统的集合运算:∪(并运算),-(差运算),∩(交运算),×(笛卡儿积运算)。5个特殊的关系运算:σ(选择),π(投影),∞(连接),÷(除)。1.传统的关系运算两个表的兼容性。所谓兼容,即两个表的表头结构相同,且对应列的数据类型相同。并、差、交运算都要求有两个表参加运算,并且两个表是兼容的。并运算:给定两个兼容的表R和S,R和S并运算的结果是一个与R和S兼容的新表。该表由属于R的所有行加上属于S的所有行组成,但必须删去重复的行,记作R∪S。并运算举例并运算含义:包含一年级学生或获奖学生的信息差运算:给定两个兼容的表R和S,R和S差运算的结果是一个与R和S兼容的新表。该表由属于R而不属于S的所有行组成,记作R-S。举例(见下页)交运算:给定两个兼容的表R和S,R和S交运算的结果是一个与R和S兼容的新表,该表由既属于R又属于S的行组成,记作R∩S。举例(见下页)差运算举例差运算含义:一年级但没有获奖的学生信息交运算举例交运算含义:一年级并获奖的学生信息。笛卡儿积:简称积运算,也是二元运算,即要求有两个表参加运算,但这两个表可以不兼容。笛卡儿积运算定义:给定两个表R和S,R和S的积运算的结果是一个新表,新表中的行由R中的每一行和S中的每一行组合而成。记作R×S。新表可能包含重复的列,因此不一定是一个关系。若R表有m个列,S表有n个列,则R×S是一个具有(m+n)个列的表,且R×S表中的任一行的前m列是R表的一个行,后n列是S表的一个行。如果R有i行,S有j行,则R×S有(i×j)行。可见两个表的笛卡儿积运算结果会很大。笛卡儿积运算举例2.专门的关系运算包含:选择运算、投影运算和连接运算。选择运算:从指定的R表中选择某些满足条件的行构成一个新表。记作бF(R)其中,б是选择运算的符号;F是选择条件,写成б的下标;R写在括号中,是被选择的表名。举例:从Students表找出所有女同学的情况бSsex=‘F’(Students)结果:关键:选择运算的条件表示如下单个查询条件形式为:AiθAj其中,Ai、Aj是表R中的列名或常量值;θ是比较运算符,是:=、!=、、≤、和≥之一。例如:学号为20010102的条件为:Sno=‘20010102’又如:所在系为计算机系的条件为:Sdept=‘Computer’多个查询条件用∧(逻辑与,也可用and)、∨(逻辑或,or)、﹁(逻辑非,not)构成例如:从Students表找艺术系的女同学的情况Sdept=‘Art’∧Ssex=‘F’等价于:Sdept=‘Art’
本文标题:第2章关系模型
链接地址:https://www.777doc.com/doc-2154872 .html