网站首页 > 文章精选 正文
基于关系模型的关系数据库是应用最广泛的数据库系统,因此需要深入学习关系模型的基本概念和原理。
关系模型由关系数据结构、关系操作和关系完整性约束三部分组成。学习关系数据结构,包括关系的定义及相关概念。
一、关系的基本概念
关系数据模型的思想由IBM公司的E.F.Codd于1970年在他的一系列论文中提出,以后的几年里陆续出现了以关系数据模型为基础的数据库系统,称为关系数据库系统。Codd是关系数据库之父,他首次将关系引入到数据建模中,创建了关系数据库的基本理论,如关系代数、关系演算,定义了连接、选择和投影等关系操作,提出了关系数据库设计的指导方针、关系的规范化理论等等。关系数据库系统核心是关系数据模型,关系数据模型是一个逻辑模型,而逻辑模型由三部分组成,同样,关系数据模型也由三部分组成的。
关系数据模型由关系数据结构、关系操作和关系完整性约束三部分组成。
关系数据模型也可以简称为关系模型。在关系模型中,数据结构是比较重要的概念,用来刻画一个模型的性质,是最重要的一个方面。关系模型中的数据结构只是单一的数据结构即关系,即现实世界的实体(或对象)以及实体间的联系均用关系表示。
在用户看来,关系就是一张二维表格。
属性和属性值:列和列的值
域:一组具有相同数据类型的值的集合
关系模式:二维表的表头
元组:二维表中的每一行
关系或实例:行的集合
元数(列数):属性的个数
基数(行数):元组的个数
关系模型是建立在集合论的基础上的,其中最重要的理论基础就是笛卡尔积。笛卡尔积是域上的一种集合运算。
笛卡尔积可表示为一张二维表,表中每行对应一个元组,表中每一列对应一个域。
例如:给出三个域:
D?=导师集合=张清玫,刘逸
D?=专业集合=计算机专业,信息专业
D?=研究生集合=李勇,刘晨,王敏
如图所示,D? 、D?、D?的笛卡尔积是由三列组成的,分别对应的导师列、专业列以及学生列。在这个二维表中,笛卡尔积是一个三元组,每个列来自一个域的取值,每一行称为一个元组,每一项称为一个分量,笛卡尔积的基数分别等于D?的基数 ×D?的基数×D?的基数即2*2*3,所以笛卡尔积的结果是12行。
笛卡尔积就是我们关系模型中使用的关系结构吗?
笛卡尔积可以在关系模型中建立关系之间的联系。
不是。它是一个全组合,比如是张清玫一定是属于两个专业、带所有的学生,而每一个导师都是这样,显然这不是十分符合语义的。
所以,假设一个导师只有一个专业,一个研究生只能师从于一个导师,一个导师可带多个研究生。在这样的语义下,上述笛卡尔积中许多元组是没有实际意义的,取出有实际意义的元组来构造导师与研究生的关系,并取名为SAP关系。
那么关系SAP中就只含有三行记录,这是真实的语义的一个表达。
二、关系的定义
关系是笛卡尔积的有限子集,关系也是一张二维表,表中每行对应个元组,表中每列对应一个域。必须对每一列取一个名字,称为属性。
关系定义:
把D1×D2×…Dn的子集称为域D1,D2,…Dn上的关系,表示为:
R(D1,D2,…,Dn),其中R表示关系名。
一般,属性的名字和域的名字是相同的。
三、关系的性质
当把关系作为关系模型的数据结构的时候,需要对关系给予限定或者是扩充。那么关系中可能有一些性质与数学中的集合概念不同,有些性质与工作和生活中使用的表格不同。
关系是一个元数(列数)为K的元组的有限集合,是一种规范化了的二维表。因为数学中可以表达无限的关系;但是在计算机中,由于受到存储器的限制,关系不是无限的,它是一个有限的关系。关系模型要求关系是一种规范化的二维表。
关系模型要求关系必须规范化,即满足一定的规范条件。规范条件中最基本的一条是:关系的每一个分量必须是一个不可分的数据项。
如图所示的例子是一个非规范化的关系,其中它是由三列组成的,而它的最后一列又被分成了两列。这样的关系在关系数据库中是不允许的,关系模型是不能存储的。也就是说,在关系中的性质不允许表中有组合数据、不允许表中嵌入表,属性是不能再分解的。
关系的性质:
(1)每个分量必须是不可分的量;
(2)列的分量是同一类型的数据,来自同一域;
(3)每一列为一个属性,属性有属性名;(同一关系中的属性不能同名,但不同的列可以来自同一个域;通过为每个列附加属性名的方法可以消除元组的有序性)
(4)行的次序无关,列的次序无关;
(5)一个关系中不存在两个元组在各个分量(或属性)上完全相同。(这是通过在关系指定主键、约定主键具有实体完整性来保证的。)
如图五所示,图中的R1、R2和R3是同一个关系。R1和R2是把A?列和A?列列的列的顺序进行交换。关系与列的次序无关,所以R1和R2是同一个关系;R2和R3列的次序是一样的,是把第一行和第三行的数据进行了交换,关系与行的次序无关,所以R2和R3是同一个关系;因此,R1、R2和R3是同一个关系。
关系的性质是在关系模型中采用关系作为数据结构获得了巨大的成功。
- 上一篇: 数据库设计规范
- 下一篇: 数据标准是数据管理的基石
猜你喜欢
- 2025-01-06 9大数据库性能优化方案详解(图文全面总结)
- 2025-01-06 数据总线是否就是ESB服务总线,从企业应用集成场景说起
- 2025-01-06 数据标准是什么?企业如何做好数据管理?
- 2025-01-06 数据库的常见的反规范化技术
- 2025-01-06 项目标准化建设之数据库设计说明书
- 2025-01-06 影响数据库性能的因素有哪些?
- 2025-01-06 统计规范化管理对企业影响是深远而全方位的
- 2025-01-06 积攒十五年的MySQL数据库设计经验,拿走不谢
- 2025-01-06 海南热带海洋学院专升本-数据库试题及答案(二)
- 2025-01-06 数据规范化方法
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)