种豆资源网

当前位置:首页 > 百科 > 百科综合 / 正文

关係模型

(2019-08-02 09:03:11) 百科综合
关係模型

关係模型

关係实际上就是关係模式在某一时刻的状态或内容。也就是说,关係模式是型,关係是它的值。关係模式是静态的、稳定的,而关係是动态的、随时间不断变化的,因为关係操作在不断地更新着资料库中的数据。但在实际当中,常常把关係模式和关係统称为关係,读者可以从上下文中加以区别。

基本介绍

  • 中文名:关係模型
  • 外文名:Relational model
  • 套用用途:资料库
  • 属于:逻辑模型

发明历史

网状资料库和层次资料库已经很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。用户在对这两种资料库进行存取时,仍然需要明确数据的存储结构,指出存取路径。而后来出现的关係资料库较好地解决了这些问题。关係资料库理论出现于60年代末到70年代初。关係数据模型提供了关係操作的特点和功能要求,但不对DBMS的语言给出具体的语法要求。对关係资料库的操作是高度非过程化的,用户不需要指出特殊的存取路径,路径的选择由DBMS的最佳化机制来完成。
1970年,IBM的研究员E.F.Codd博士发表《大型共享数据银行的关係模型》一文提出了关係模型的概念,论述了範式理论和衡量关係系统的12条标準,如定义了某些关係代数运算,研究了数据的函式相关,定义了关係的第三範式,从而开创了资料库的关係方法和数据规範化理论的研究,他为此获得了1981年的图灵奖。
后来Codd又陆续发表多篇文章,奠定了关係资料库的基础。关係模型有严格的数学基础,抽象级别比较高,而且简单清晰,便于理解和使用。但是当时也有人认为关係模型是理想化的数据模型,用来实现DBMS是不现实的,尤其担心关係资料库的性能难以接受,更有人视其为当时正在进行中的网状资料库规範化工作的严重威胁。为了促进对问题的理解,1974年ACM牵头组织了一次研讨会,会上开展了一场分别以Codd和Bachman为首的支持和反对关係资料库两派之间的辩论。这次着名的辩论推动了关係资料库的发展,使其最终成为现代资料库产品的主流。
此后许多人把研究方向转到关係方法上,陆续出现了关係资料库系统。

定义

关係数据模型是以集合论中的关係概念为基础发展起来的。关係模型中无论是实体还是实体间的联繫均由单一的结构类型——关係来表示。在实际的关係资料库中的关係也称表。一个关係资料库就是由若干个表组成。
关係模型是指用二维表的形式表示实体和实体间联繫的数据模型。

基本术语

关係模型的基本概念和基本术语共有十三个,它们分别是:
(1)关係(Relation):一个关係对应着一个二维表,二维表就是关係名。
(2)元组(Tuple):在二维表中的一行,称为一个元组。
(3)属性(Attribute):在二维表中的列,称为属性。属性的个数称为关係的元或度。列的值称为属性值;
(4)(值)域(Domain):属性值的取值範围为值域。
(5)分量:每一行对应的列的属性值,即元组中的一个属性值。
(6)关係模式:在二维表中的行定义,即对关係的描述称为关係模式。一般表示为(属性1,属性2,......,属性n),如老师的关係模型可以表示为教师(教师号,姓名,性别,年龄,职称,所在系)。
(7)键(码):如果在一个关係中存在唯一标识一个实体的一个属性或属性集称为实体的键,即使得在该关係的任何一个关係状态中的两个元组,在该属性上的值的组合都不同。
(8)候选键(候选码):若关係中的某一属性的值能唯一标识一个元组如果在关係的一个键中不能移去任何一个属性,否则它就不是这个关係的键,则称这个被指定的候选键为该关係的候选键或者候选码。
例如下列学生表中“学号”或“图书证号”都能唯一标识一个元组,则“学号”和“图书证号”都能唯一地标识一个元组,则“学号”和“图书证号”都可作为学生关係的候选键。
学号
姓名
性别
年龄
图书证号
所在系
S3001
张明
22
B20050101
外语
S3002
李静
21
B20050102
外语
S4001
赵丽
21
B20050301
管理
而在选课表中,只有属性组“学号”和“课程号”才能唯一地标识一个元组,则候选键为(学号,课程号)。
学号
课程号
S3001
C1
S3001
C2
S3002
C1
S4001
C3
(8)主键(主码):在一个关係的若干候选键中指定一个用来唯一标识该关係的元组,则称这个被指定的候选键称为主关键字,或简称为主键、关键字、主码。每一个关係都有并且只有一主键,通常用较小的属性组合作为主键。例如学生表,选定“学号”作为数据操作的依据,则“学号”为主键。而在选课表中,主键为(学号,课程号)。
(9)主属性和非主属性:关係中包含在任何一个候选键中的属性称为主属性,不包含在任何一个候选键中的属性为非主属性。
(10)全键或者全码:一个关係模式中的所有属性的集合。
关係模型
(11)外键或者外码:关係中的某个属性虽然不是这个关係的主键,或者只是主键的,但它却是另外一个关係的主键时,则称之为外键或者外码。
(12)超键或者超码:如果在关係的一个键中移去某个属性,它仍然是这个关係的键,则称这样的键为关係的超键或者超码。
(13)参照关係与被参照关係:是指以外键相互联繫的两个关係,可以相互转化。

二维表格

关係模型中,栏位称为属性,栏位值称为属性值,记录类型称为关係模型。关係模式名是R。记录称为元组,元组的集合称为关係或实例。一般用大写字母A、B、C、……表示单个属性,用小写字母表示属性值。关係中属性的个数称为“元数”,元组的个数称为“基数”。例子的关係元数为5,基数为2。有时也称关係为表格,元组为行,属性为列。

键,又称码,由一个或几个属性组成,分为以下几种:
a.超键:如果在关係的一个键中移除某个属性,它仍然是这个关係的键,则这样的键成为超键。
b.候选键:不含多余属性的超键称为候选键。即在候选键中,若要再删除属性,就不是超键了。
c.主键:用户选作元组标识的一个候选键称为主键。一般情况下,键指主键。

关係的定义和性质

关係是个元数为K(K>=1)的元组的集合。
关係是一种规範化的表格,他有以下限制:
a.关係中的每一个属性值都是不可分解的。
b.关係中不允许出现相同的元组。
c.关係中不考虑元组之间的顺序。
d. 元组中属性也是无序的。
关係模式、关係子模式和存储模式
关係模型中,概念模式是关係模式的集合,外模式是关係子模式的集合,内模式是存储模式的集合。
1.关係模式
关係模式实际就是记录类型,包括:模式名、属性名、值域名及模式的主键。他不涉及物理存储方面的描述,只是对数据特性的描述。
2.关係子模式
子模式是用户所用到的那部分数据的描述。除了指出用户的数据外,还应指出模式和子模式之间的对应性。
3. 存储模式
关係存储时的基本组织方式是档案,元组是档案中的记录。由于关係模式有键,因此存储一个关係能用散列方法或索引方法实现。
关係模型的三类完整性规则
1.实体完整性规则
这条规则需求关係中元组在组成主键的属性上不能有空值。如有空值,那幺主键值就起不了唯一标识元组的作用。
2.参照完整性规则
如果属性集K是关係模式R1的主键,K也是关係模式R2的外键,那幺在R2的关係中,K的取值只允许有两种可能,或为空值,或等于R1关係中某个主键值。
使用时应注意:
a.外键和相对应的主键能不同名,只要定义在相同的值域上即可。
b.R1和R2也能是同一个关係模式,表示了属性之间的联繫。
c. 外键值是否允许为空,应视具体问题而定。
3.用户定义的完整性规则
这是针对具体数据的约束条件,由套用环境而定。
关係模型的形式定义
一、三个组成部分:数据结构、数据操作和完整性规则。
1.关係模型的基本数据结构就是关係。
2.关係运算分为关係代数和关係演算。
3.关係模型的三类完整性规则。
二、关係代数
关係资料库的数据操作分为查询和更新两类。查询语句用于各种检索操作,更新操作用于插入、删除和修改等操作。
关係查询语言根据其理论基础的不同分成两大类:
1.关係代数语言:查询操作是以集合操作为基础运算的DML语言。
2.关係演算语言:查询操作是以谓词演算为基础运算的DML语言。
关係代数的五个基本运算
关係代数是以关係为运算对象的一组高级运算的集合。关係定义为元数相同的元组的集合。集合中的元素为元组,关係代数中的操作可分为两类:
传统的集合操作:并、差、交、笛卡尔积。
扩充的关係操作:投影,选择,联接和自然联接,除。
1.并
设有两个关係R和S具有相同的关係模式,R和S的并是由属于R和S的元组构成的集合,记为R∪S。
注意:R和S的元数相同。
2.差
设有两个关係R和S具有相同的关係模式,R和S的差是由属于R但不属于S的元组构成的集合,记为R-S。
注意:R和S的元数相同。
3.笛卡尔积
设关係R和S的元数分别为r和s。定义R和S的笛卡尔积是个(r+s)元的元组集合,每个元组的前r个分量(属性值)来自R的一个元组,后s个分量来自S的一个元组,记为R×S。
若R有M个元组,S有n个元组,则R×S 有m×n个元组。
4.选择
从关係中找出满足给定条件的所有元组称为选择。其中的条件是以逻辑表达式给出的 ,该逻辑表达式的值为真的元组被选取。这是从行的角度进行的运算,即水平方向抽取元组。经过选择运算得到的结果能形成新的关係,其关係模式不变,但其中元组的数目小于或等于原来的关係中的元组的个数,他是原关係的一个子集。
记为: δF(R)≡{t?t属于R∧F(t)=true}
5.投影
从关係中挑选若干属性组成的新的关係称为投影。这是从列的角度进行运算。经过投影运算能得到一个新关係,其关係所包含的属性个数往往比原关係少,或属性的排列顺序不同。如果新关係中包含重複元组,则要删除重複元组。
记为:∏A(R)={t[A] ?t属于R} A为R中的属性列。
例如: ∏3,1(R)
关係代数的四个组合操作
1.交
关係R和S的交是由属于R又属于S的元组构成的集合,记为R∩S。R和S需求定义在相同的关係模式上。
R∩S≡ {t?t属于R∧t属于S},R和S的元数相同。
2.联接
联接有两种:θ联接和F联接(θ是算术比较符,F是公式)。
⑴ θ联接
θ联接是从关係R和S的笛卡尔积中选取属性值满足某一θ操作的元组,记为:
R?×i θj?S,这里i和j 分别是关係R和S中第 i个、第j个属性的序号。
R?×i θj?S≡ δi θ (r+j)( R×S )
如果θ是等号“=”,该联接操作称为“等值联接”。
⑵F联接
F联接操作是从关係R和S的笛卡尔积中选取属性值满足某一公式F的元组,记为:
R?×F?S,这里的F是形为F1∧F2∧…∧Fn的公式,每一个f都是形为i θj的式子,而i和j 分别是关係R和S中第 i个、第j个属性的序号。
3.自然联接
两个关係R和S的自然联接用R?×?S表示。具体计算过程如下:
①计算R×S
②设R和S的公共属性是A1,……,Ak,挑选R×S中满足R .A1=S.A1,……,R.Ak=S.Ak的那些元组
③去掉S.A1,……, S.Ak的这些列。
如果两个关係中没有公共属性,那幺其自然联接就转化为笛卡尔积操作。
4.除法
给定关係R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y和S中的Y能有不同的属性名,但必须出自相同的域集。R和S的除运算得到一个新的关係P(X),P是R中满足下列条件的元组在X属性上的投影:元组在X上分量值x的象集YX包含S在Y上投影的集合。
关係代数表达式及其套用实例
在关係代数运算中,把由五个基本操作经过有限次複合的式子称为关係代数表达式。这种表达式的结果仍然是个关係。能使用关係代数表达式表示各种数据查询操作。
例题:设教学库中有三个关係:
学生关係S(S#,SNAME,AGE,SEX)
学习关係SC(S#,C#,GRADE)
课程关係C(C#,CNAME,TEACHER)
下面用关係代数表达式表达各个查询语句
1.检索学习课程号为C2的学生学号和成绩。
2.检索学习课程号为C2的学生学号和姓名。
3.检索选修课程名为MATHS的学生学号和姓名。
4.检索选修课程号为C2或C4的学生学号。
5.检索至少选修课程号为C2或C4的学生学号。
6.检索不学C2课的学生姓名有年龄。
7.检索学习全部课程的学生姓名。
1. ∏S#,GRADE(δC#=‘C2’(SC))
或∏1,3(δ2=‘C2’

关係模式

关係模式是对关係的描述。
R(U,D,dom,F)
R 关係名,U 组成该关係的属性名集合,D 属性组U中属性所来自的域,dom 属性向域的映象集合,F 属性间的数据依赖关係集合。例如:导师和研究生出自同一个域——人,取不同的属性名,并在模式中定义属性向域的映象,即说明它们分别出自哪个域:
dom(SUPERVISOR-PERSON)= dom(POSTGRADUATE-PERSON)=PERSON
关係模式通常可以简记为:
R (U) 或 R (A1,A2,…,An)
R 关係名,A1,A2,…,An 属性名,注:域名及属性向域的映象常常直接说明为属性的类型、长度。
关係资料库系统是支持关係模型的资料库系统。
关係模型所具有的特点是:概念单一、规範化、以二维表格表示。

简介

关係模型是1970年由E.F.Codd提出的。
关係模型
它和层次、网状模型相比,有以下特点:
1.数据结构简单(二维表格)
2.扎实的理论基础。
a.关係运算理论
b.关係模式设计理论
关係模型的基本假定是所有数据都表示为数学上的关係,就是说n个集合的笛卡儿积的一个子集,有关这种数据的推理通过二值(就是说没有NULL)的谓词逻辑来进行, 这意味着对每个命题都只有两种可能的求值: 要幺是真要幺是假。数据通过关係演算和关係代数的一种方式来操作。关係模型是採用二维表格结构表达实体类型及实体间联繫的数据模型.
关係模型允许设计者通过资料库规範化的提炼,去建立一个信息的一致性的模型。访问计画和其他实现与操作细节由DBMS引擎来处理,而不应该反映在逻辑模型中。这与SQL DBMS普遍的实践是对立的,在它们那里性能调整经常需要改变逻辑模型。
基本的关係建造块是域或者叫数据类型。元组是属性的有序多重集(multiset),属性是域和值的有序对。关係变数(relvar)是域和名字的有序对(序偶)的集合,它充当关係的表头(header)。关係是元组的集合。儘管这些关係概念是数学上的定义的,它们可以宽鬆的映射到传统资料库概念上。表是关係的公认的可视表示;元组类似于的概念。
关係模型的基本原理是信息原理:所有信息都表示为关係中的数据值。所以,关係变数在设计时刻是相互无关联的;反而,设计者在多个关係变数中使用相同的域,如果一个属性依赖于另一个属性,则通过参照完整性来强制这种依赖性。

优点

(1) 数据结构单一
关係模型中,不管是实体还是实体之间的联繫,都用关係来表示,而关係都对应一张二维数据表,数据结构简单、清晰。
(2)关係规範化,并建立在严格的理论基础上
构成关係的基本规範要求关係中每个属性不可再分割,同时关係建立在具有坚实的理论基础的严格数学概念基础上。
(3)概念简单,操作方便
关係模型最大的优点就是简单,用户容易理解和掌握,一个关係就是一张二维表格,用户只需用简单的查询语言就能对资料库进行操作。

组成

关係数据结构

单一的数据结构——关係
现实世界的实体以及实体间的各种联繫均用关係来表示,从用户角度看,关係模型中数据的逻辑结构是一张二维表。

关係操作集合

常用的关係操作包括查询操作和插入、删除、修改操作两大部分。其中查询操作的表达能力最重要,包括:选择、投影、连线、除、并、交、差等。
关係模型中的关係操作能力早期通常是用代数方法或逻辑方法来表示,分别称为关係代数和关係演算。关係代数是用对关係的代数运算来表达查询要求的方式;关係演算是用谓词来表达查询要求的方式。另外还有一种介于关係代数和关係演算的语言称为结构化查询语言,简称SQL。

关係的数据完整性

包括:域完整性、实体完整性、参照完整性和用户自定义的完整性。
域完整性:指属性的取值範围,如性别取值应为男或女。
实体完整性(Entity Integrity)规则:若属性A是基本关係R的主属性,则属性A不能取空值。例如:在课程表(课程号,课程名,教师,周课时数,备注)中,“课程号”属性为主键,则“课程号”不能取相同的值,也不能取空值。
参照完整性规则:若属性(或属性组)F是基本关係R的外键,它与基本关係S的主键Ks相对应(关係R和S不一定是不同的关係),则对于关係R中每个元组在属性F上的值必须为:
1.或者取空值(F中的每个属性值均为空);
2.或者等于S中某个元组的主键值。
例如:职工(职工号,姓名,性别,部门号,上司,工资,佣金)
部门(部门号,名称,地点)
其中职工号是“职工”关係的主键,部门号是外键,而“部门”关係中部门号是主键,则职工关係中的每个元组的部门号属性只能取下面两类值:
第1类:空值,表示尚未给该职工分配部门;
第2类:非空值,但该值必须是部门关係中某个元组的部门号值,表示该职工不可能分配到一个不存在的部门中,即被参照关係“部门”中一定存在一个元组,它的主键值等于该参照关係“职工”中的外键值。
域完整性、实体完整性和参照完整性是关係模型中必须满足的完整性约束条件,只要是关係资料库系统就应该支持域完整性、实体完整性和参照完整性。除此之外,不同的关係资料库系统根据其套用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是对某些具体关係资料库的约束条件。例如:选课表(课程号,学号,成绩),在定义关係选课表时,我们可以对成绩这个属性定义必须大于等于0的约束。

标 签

搜索
随机推荐

Powered By 种豆资源网||