数据库复习——关系数据库

在用户看来,关系模型的数据的逻辑结构是一张二维表。关系模式中常用的关系操作包括:选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)等查询操作和增加(Insert)、删除(Delete)、修改(Update)操作,查询的表达能力是其中最主要的部分。

 

关系是迪卡尔积的有限子集

候选码(Candidate Key):在关系中能唯一标识一个元组的属性值

主码(Primary Key):被选择的候选码

主属性(Prime attribute):候选码中的诸属性

 

关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表。基本表是实际存在的表,它是实际存储数据的逻辑表示,查询表是查询结果对应的表,视图表是由基本表和其他视图表导出的表,是虚表,不对应实际存储的数据。

 

当关系作为关系数据模型的数据结构时,给予如下限定和扩充:

(1)无限关系在数据库中是无意义的,因此,限定关系数据模型中的关系必须是有限集合

(2)通过为关系的每一个列附加一个属性名的方法取消关系元组的有序性。

 

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

(1)列是同质的,即每一列的分量来自同一域

(2)不同的列可出自同一个域,不同的属性要给予不同的属性名

(3)列的顺序无所谓

(4)任意两个元组不能完全相同

(5)行的顺序无所谓

(6)每一个分量都必须是不可分的数据项

但是在许多实际的关系数据库产品中,基本表并不完全具有这6条性质。

 

 

关系模式可以形式地表示为R(U,D,dom,F)

其中R为关系名,U为组成该关系的属性名,D为属性组U中属性所来自的域,dom为属性的映像集合,F为属性间数据的依赖关系集合。可以简记为R(U)或R(A1,A2,……,An),A1~An为属性名。而域名及dom常常直接说明为属性的类型、长度。

 

定义:设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码,并称基本关系R为参照关系 ,基本关系S称为被参照关系或目标关系。关系R和S不一定是不同的关系。

参照关系完整性:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的值必须为:(1)或者为空值(F中每个属性值均为空值)(2)或者等于S中某个元组的主码值

 

用户完整性:反映某一具体应用所涉及的数据必须满足语义要求。

 

选择满足给定条件的诸元组,逻辑表达式F由逻辑运算符连接各算术表达式组成,属性名也可以用它的序号来代替。

投影是从列的角度进行的运算,它表示从关系R中选择若干属性列组新的关系,其中A为R中的属性列。

自然连接是一种等值连接,它要求两个关系中进行比较的分量必须是相同的属性组。

除:给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与X中的Y可以有不同的属性名,但必须出自相同的域集,R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上的分量值x的象集Yx包含S在Y上的投影的集合。

关系 代数中并、差、笛卡尔积、投影和选择是5个基本的运算,交、连接、除可用它们表示。

 

元组演算系统中,称为元组演算表达式。其中t是元组变量,关系演算公式由原子公式和运算符组成。

原子公式有3类:

(1)R(t):表示t是R中的元组

(2)t[i]op u[j]:op是算术比较运算符,表示“元组t的第i个分量与元组u的第j个分量满足比较关系 op”

(3)t[i] op C:表示t的第i个分量与常量C满足比较关系op

若公式中一个元组变量前有“全称量词”或“存在量词”,则称该变量为元组变量,否则称为自由元组变量。

在元组演算中,各种运算符的优先级次序为:

(1)算术比较运算符最高

(2)量词次之,且“存在”的优先级高于“任意”的优先级

(3)逻辑运算符最低,且“非”的优先级高于“与”的优先级,“与”的优先级高于“或”的优先级

 

数据库中的左连接(left join)和右连接(right join)区别

1、表结构

  

2、left join

Select * From A left join B on A.aid = B.bid;

left join以左表为准,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录,右表记录为空的为null。

3、right join

Select * From A right join B on A.aid = B.bid;

以右表为基础,左这不存在为null.

4、inner join

Select * From A inner join B on A.aid = B.bid;

inner join等同于

Select * From A, B Where A.aid = B.bid

最后欢迎大家访问我的个人网站: 1024s

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值