MyException - 我的异常网
当前位置:我的异常网» 数据库 » 数据库系统概论(二)——Chap. 2 关系数据库基础

数据库系统概论(二)——Chap. 2 关系数据库基础

www.MyException.Cn  网友分享于:2013-10-08  浏览:0次
数据库系统概论(2)——Chap. 2 关系数据库基础

数据库系统概论(2)——Chap.2 关系数据库基础

一、关系数据结构及形式化定义

1、关系

关系模型的数据结构只包含单一的数据结构——关系。在关系模型中,现实世界的实体及实体间的各种联系均用单一的结构类型,即关系来表示。

(1)笛卡尔积

关系是建立在集合基础上的,先介绍笛卡尔积的概念:
【笛卡尔积(cartesian product)】给定一组域D1,D2,……,Dn,允许其中某些域是相同的,D1,D2,……,Dn的笛卡尔积为:

D1 x D2 x…… x Dn = {(d1, d2, ……, dn)|di属于Di,i=1,2,……,n}

其中,每一个元素(d1, d2, ……, dn)叫做一个n元组(n-tuple),或简称元组(tuple)。元素中的每一个值di叫做一个分量(component)

一个域允许的不同取值个数称为这个域的基数(cardinal number)。
若Di(i=1,2,……,n)为有限集,其基数为mi(i=1,2,……,n),则D1 x D2 x…… x Dn的基数M为:

M = m1 x m2 x …… x mn
(2)关系

下面给出关系的定义:
【关系】:D1 x D2 x…… x Dn的子集叫做在域D1,D2,……,Dn上的关系,表示为:

R(D1,D2,……,Dn)

R为关系的名字,n是关系的目或度(degree)。n=1时,称为单元关系(unary relation)或一元关系;n=2时,称为二元关系(binary relation)。n目关系必有n个属性。
一般来说,D1,D2,……,Dn的笛卡尔积是没有实际语义的,只有它的某个真子集才有实际含义。关系是笛卡尔积的有限子集。

【候选码(candidate key)】:若关系中的某一属性组能唯一地标识一个元组,而其子集不能,则称该属性组为候选码。
若一个关系有多个候选码,则选定其中一个为主码(primary key)(最小属性集)。
极端情况下,关系模式的所有属性是这个关系的候选码,称为全码(all-key)

【主属性(prime attribute)和非主属性(non-prime attribute)】:候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性(non-key attribute)。

关系可以由三种类型:基本关系(或称基本表或基表)、查询表和视图表。

  • 基本表是实际存在的表,它是实际存储数据的逻辑表示;
  • 查询表是查询结果对应的表;
  • 视图表是由基本表导出的表,是虚表,不对应实际存储的数据。

基本关系具有以下6条性质:

  1. 列是同质的(homogeneous),即每一列中的分量是同一类型的数据,来自同一个域。
  2. 不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
  3. 列的顺序无所谓。
  4. 任意两个元组的候选码不能取相同的值。
  5. 行的顺序无所谓。
  6. 分量必须取原子值,即每一个分量都是不可分的数据项。

关系模型要求关系必须是规范化的,规范化的关系简称为范式(Normal Form,NF)

2、关系模式

关系数据库中,关系模式是型,关系是值。
【关系模式】是对关系的描述,关系模式必须指出这个元组集合的结构、元组语义及完整性约束条件、属性的域以及属性与域之间的映像关系。关系模式可以表示为:

R(U,D,DOM,F)
其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。

关系模式是静态的、稳定的;
关系是动态的、随时间不断变化的,关系是关系模式在某一时刻的状态或内容。

对于关系模型中的联系,一对一的联系可以表示在任意一方,一对多的联系常表示在多的一方。

二、关系操作

1、关系操作包括两部分:

  1. 查询(QUERY)操作:选择(select)、投影(project)、连接(join)、除(divide)、并(union)、交(intersection)、差(except)、笛卡尔积等。其中选择、投影、并、差、笛卡尔积是5种基本操作。
  2. 更新(UPDATE):插入(insert)、删除(delete)、修改(update)。

关系操作是集合操作。(一次一集合(set-at-a-time))。非关系数据模型的数据操作方式是一次一记录(record-at-a-time)。

2、关系数据语言的分类

【关系代数(relational algebra)】:用对关系的运算来表达查询要求。
【关系演算(relational calculus)】:用谓词来表达查询要求。
一个关系数据语言能够表示关系代数可以表示的查询,称为具有完备的表达能力,简称关系的完备性

【结构化查询语言SQL】:介于关系代数和关系演算之间。是集查询、数据定义语言、数据操纵语言和数据控制语言(DCL)于一体的关系数据语言。SQL语言是一种高度非过程化的语言。

三、关系的完整性

1、实体完整性

基本关系R的主属性A不能取空值。所谓空值就是“不知道”或“不存在”或“无意义”的值。
说明:

  1. 实体完整性规则是正对基本关系而言的。
  2. 现实世界中的实体是可区分的,即他们具有某种唯一性的标识。
  3. 相应的,关系模型中以主码作为唯一标识。
  4. 主码中的属性即主属性不能取空值。

2、参照完整性

先给出外码的定义:
定义:设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码(foreign key),并称基本关系R是参照关系(referencing relation),基本关系S是被参照关系(referenced relation)目标关系(target relation)
关系R和S不一定是不同的关系。目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或同一组)域上。

下面是参照完整性的定义:
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应,则R中每个元组在F上的取值:

  • 或者取空值(F的每个属性值均为空值);
  • 或者等于S中某个元组的主码值。

3、用户定义完整性

用户定义完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需要由应用程序来承担这一功能。


实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。用户定义的完整性是应用领域需要遵循的条件,体现了具体应用领域中的语义约束。

四、关系代数

运算的三大要素:运算对象、运算符、运算结果。
关系代数的运算符包括两类:集合运算符和专门的关系运算符。
关系代数的运算按运算符的不同可分为传统的集合运算和专门的关系运算两类。

关于关系代数运算这里放上一个链接,以下内容为转载,如有侵犯,请在下方评论联系。
请尊重原作者版权,转载注明出处。

【转载】关系代数的基本运算

文章评论

Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
10个调试和排错的小建议
10个调试和排错的小建议
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
总结2014中国互联网十大段子
总结2014中国互联网十大段子
编程语言是女人
编程语言是女人
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员必看的十大电影
程序员必看的十大电影
中美印日四国程序员比较
中美印日四国程序员比较
Java程序员必看电影
Java程序员必看电影
程序员和编码员之间的区别
程序员和编码员之间的区别
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
一个程序员的时间管理
一个程序员的时间管理
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
老程序员的下场
老程序员的下场
我的丈夫是个程序员
我的丈夫是个程序员
为什么程序员都是夜猫子
为什么程序员都是夜猫子
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
我是如何打败拖延症的
我是如何打败拖延症的
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员都该阅读的书
程序员都该阅读的书
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
每天工作4小时的程序员
每天工作4小时的程序员
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
鲜为人知的编程真相
鲜为人知的编程真相
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
 程序员的样子
程序员的样子
那些争议最大的编程观点
那些争议最大的编程观点
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
如何成为一名黑客
如何成为一名黑客
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员应该关注的一些事儿
程序员应该关注的一些事儿
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有