数据库(二)关系数据库

本文详细介绍了关系数据库的概念,包括关系的数据结构、类型、性质和完整性。关系的完整性包括实体完整性、参照完整性和用户定义完整性。此外,还阐述了关系操作,如查询、插入、删除和修改,以及传统集合运算和专门关系运算,如选择、投影、连接和外连接等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

关系模型中,现实世界的实体以及其间各种联系均用单一的结构类型,即“关系”来表示

几个概念

域:一组具有相同数据类型的值的集合

笛卡尔积:
域上的一种运算的集合,若干关系经过笛卡尔积运算得到一个新的关系(表),该关系的每一条记录(行)都是以前所有关系(表)的每条记录(行)的全排列组合。
此新关系包括了涵盖了之前若干关系(表)中的所有信息。
表X有a行b列,表Y有m行n列,笛卡尔积X*Y有a*m行,b+n列

关系的度:属性个数(列)

关系的基数:元组个数(行)

候选码:某一个可以唯一标识一个元组,而其子集不能做到的属性组

主属性/非主(码)属性:候选码中的属性/不在候选码中的属性

主码:候选码中选定的其中之一

全码:关系中的所有属性均为候选码

关系的类型

基本关系(基本表):实际存储数据的逻辑表示,实际存在
查询表:查询结果对应的表
视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储数据

基本关系的性质

1. 列同质:每一列的分量为同一类型的数据,来自同一域
2. 不同的列可出自同一域,但要分配不同的属性名
3. 列(属性)的顺序无所谓
4. 行(元组)的顺序无所谓
5. 任意两个元组的候选码必不相同
6. 每个分量必须为不可分的数据项(不能表中有表)

关系模式:

关系的描述——R(U,D,DOM,F)
R:关系名
U:组成该关系的属性名的集合
D:U中属性所来自的域
DOM:属性向域的映像集合
F:属性间数据的依赖关系集合
(见后序)

关系的完整性

实体完整性

约束主码,主属性的值不能为空和无意义的值。(现实中的实体必存在且可区分)

参照完整性

约束外码,R关系的外码的取值必为–其所参照的关系S的某一元组的主码值,或空值

注:设F为基本关系R的一个(或一组)属性,但不是R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系(或目标关系)。一个基本关系可以既为参照关系又为被参照关系。

用户定义完整性

约束域的取值,数据的取值必须满足特定的语义,如年龄不能为负。

关系操作

分为查询插入,删除,修改;两大部分。

查询操作又分为-选择,投影,连接,除,并,差,交,笛卡尔积-等
其中-选择-投影-并-差-笛卡尔积-为5种基本操作,其他操作可由基本操作定义和导出。

关系代数
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。分为-传统集合运算-专门关系运算-两类。

传统集合运算

两个关系R,S的所有属性数目相等且属性名分别相同
并(union): R∪S 由属于R或属于S的元组组成
差(except): R-S 由属于R而不属于S的元组组成
交(intersection):R∩S 由既属于R又属于S的元组组成

关系的属性不必相同
笛卡尔积(cartesian product):此处为广义笛卡尔积,见开头概念介绍

专门关系运算

选择(selection):σF(R)
选出关系R中满足F条件的所有元组,F为取值为真或假的逻辑表达式

投影(projection):ΠA(R)
从R中选出若干属性列组,A为R中的属性列

连接(join) R ▷◁ S (AθB)
从两个关系的笛卡尔积中选出属性之间满足一定条件的元组,A、B为R和S上数目相等且可比的属性组,θ为比较运算符。当θ为‘=’时,称为等值连接

自然连接: R ▷◁ S
为一种特殊的等值连接,要求等值连接中进行比较的必须是同名的属性组,并将结果去掉重复的(在R和S中重名)的属性列。
自然连接所选出的元组中的每一项的值都与关系R与关系S中的全部属性(不重复)相对应。每个元组为一条完整的记录,该记录包含表R和S中的全部对应信息。
可以看做将表R与S进行整合,只保留所有属性(R和S)均存在的(不为空)元组

外连接 R =▷◁= S

引入概念—–浮空元组:在自然连接过程中被舍弃的元组

将浮空元组依然保留在连接后的结果关系中,而在其他属性上添空值(NULL)

左外连接: R =▷◁ S
在外连接的基础上,去掉以R为基准(结果的行为R的行)的,其他有空值的元组
可看做以R中的实体为参考的记录的集合,对R表进行列(S中的属性)与行(一条R中的记录可能对应多条S中的记录)的扩展
R中的实体有表R和S中的所有属性的信息(尽管某些扩展可能为空)

右外连接: R ▷◁= S
在外连接的基础上,去掉以S为基准(结果的行为S的行)的,其他有空值的元组
可看做以S中的实体为参考的记录的集合,对S表进行列(R中的属性)与行(一条S中的记录可能对应多条R中的记录)的扩展
S中的实体有表R和S中的所有属性的信息(尽管某些扩展可能为空)

除(division): R÷S

引入概念—象集
给定一个关系R(X,Z),当t[X]=x时,x在R中的象集为Zx
该象集为满足条件:属性X中的值为x的元组中,属性(组)Z的值的集合,并非元组
注:t[X]=x :t是R的一个元组,元组t中相应于属性X的值为x

R÷S
首先将R中的属性分为-未在S中重名出现的属性组X-在S中重名的属性组Y-
选取每个元组在属性组X中的值(组)x的象集Yx
若某个象集包含表S中属性组Y的所有属性值的集合(满足集合间的包含关系)
则选取该象集对应的x
由所有的x和属性(组)X共同构成R÷S的结果

关系表达式:关系代数中的运算经过有限次复合所形成的表达式。


仅为个人学习整理归纳………………………


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值