数据库原理概论Ⅰ-关系数据库

数据库原理概论Ⅰ-关系数据库

数据库原理是一门不难,但是各种形式化的语言比较难以理解的课,我这次以《数据库系统概论》 王珊著 这本教材为基础,尽量以通俗的语言介绍数据库相关的概念,许多概念难以理解给出对应的英文单词,能更好的帮助我们理解。
总而言之,数据库原理理论并不难,是一门实战性很强的课程。作为一个学生能力有限,难免有不准确的地方,本文只是自己的理解的总结。
同时,数据库中有很多英文翻译过来的概念,将译文和中文对应起来,更有助于我们的理解。

一、关系模型

所谓模型就是组织数据的一种方式,而关系模型,我们就可以简单理解为一张类似于Excel的二维的表格。
正如前面所说,我们理解数据库的原理,要想从抽象的概念理解起,正如下面这张图:
学生登记表:

学号姓名年龄性别系名年级
2013004王小明19社会学2013
2013006黄大鹏20商品学2013
2013008张文斌18法律2013

1. 关系(Relation): 关系就是对应的表,例如这个关系就是这张“学生登记表”
2. 元组(tuple): 表中的一行数据即为一个元组,例如:(2013004, 王小明, 19, 女…)
3. 属性(attribute): 指的是表头元素,例如(学号,姓名,年龄,性别,系名,年级)
4. 码(key): 可以唯一确定一个元素的属性,比如通过学号就能唯一确定一个学生,进而确定其全部的信息,所以学号可以是该关系的码
5. 域(domain): 指的是数据类型的范围,比如人的年龄的范围在1-150岁之间,也就是说年龄的域是1-150

二、三级模式结构和二级映像

数据库的三级模式结构是指数据库系统由外模式、模式、内模式三级构成。
数据库分不同的层次是为了隔离底层的细节,让使用数据库的不同的人看到不同的细节。
在这里插入图片描述
1.外模式(external schema)
外模式处在最外层,是数据库的用户(应用程序员和最终用户)能够看见的局部的数据
一个数据库可以有多个external schema,每个用户只能看见和访问对应的外模式中的数据,对于其余的不可见。

2.模式(schema)
模式又称概念模式,是数据库全体数据的逻辑结构和特征描述,处在中间层,既与底层物理存储的细节无关,又与上层使用什么开发工具无关。
一个数据库只有一个schema,主要从逻辑上去考虑数据库的需求。

3.内模式(internal schema)
内模式又称存储模式(storage schema),是用来描述数据物理结构和存储方式,属于数据库内部的组织方式,例如索引是用B+树索引还是hash索引。
一个数据库只有一个internal schema

两级模式是为了在系统内部划分这三个模式的联系和区别,在中间提供了两层映像。
三层模式可以理解为三个地方,两级模式相当于桥梁,把三层模式联系起来,同时也划分除了三层模式的界限

1.外模式/模式映像
模式和外模式是一对多的关系,所以对于每一个外模式,都对应一个外模式/模式映像。
当模式改变时,通过改变映像,可以使外模式不变。因为应用程序是依据外模式编写的,所以应用程序也不必修改,保证了数据和程序的逻辑独立性

2.模式/内模式映像
模式和内模式是一对一的关系,所以模式/内模式映像是唯一的。
定义了数据全局逻辑结构与存储结构之间的对应关系.当数据库的存储结构改变时,通过改变映像,可以使模式不变,进一步可以使应用程序不变。保证了数据与程序的物理独立性

三、关系数据结构

1.笛卡尔积(cartesian product)
笛卡尔积是域(domain)上的一种集合运算,
通俗解释:笛卡尔积就是不同的域上所有元组(tuple)的组合,从图像看上,就是将每组一维数据变成了一张二维表格。
例:
有三个域:
D1 = 导师集合SUPERVISOR = {张青梅, 刘毅}
D2 = 专业集合SPECIALITY = {计算机专业, 信息专业}
D3 = 研究生集合POSTGRADUARE = {李勇, 刘晨, 王敏}

D1 是2元组,D2 是2元组, D3是3元组 ,所以D1*D2*D3=12个元组,即笛卡尔积的基数为2 * 2 * 3 = 12.

笛卡尔积可以表示为下面的这个表

SUPERVISORSPECIALITYPOSTGRADUARE
张青梅计算机专业李勇
张青梅计算机专业刘晨
张青梅计算机专业王敏
张青梅信息专业李勇
张青梅信息专业刘晨
张青梅信息专业王敏
刘毅计算机专业李勇
刘毅计算机专业刘晨
刘毅计算机专业王敏
刘毅信息专业李勇
刘毅信息专业刘晨
刘毅信息专业王敏

2.关系(relation)

D1 * D2 * … *Dn 的子集叫做域 D1 * D2 * … *Dn 上的关系,记做R(D1 ,D2 , … ,Dn ), R是关系的名字,n是关系的目或者度(degree)

所谓的关系,就是来自每个域的数据的一个集合,就相当于一行行的数组构成的表,表名为R

3.码(key)
候选码(candidate key):能唯一确定一个元组的属性组叫做候选码,例如通过身份证号能唯一确定一个人,那么身份证号就可以称为人的一个候选码
主码(primary key):多个候选码的时候,选择其中一个座位主码

四、关系代数

关系代数是一种抽象的语言,是用来对关系的运算来表达查询
包括传统的集合运算:并、差、交、笛卡尔积
专门的运算:选择、投影、连接、除
只要记住,关系代数核心是一种查询的表达式

1.传统关系的集合运算
传统的关系运算与我们平常数学中学到的集合运算相同,以下各举一个例子

关系R:

ABC
a1b1c1
a2b2c2
a3b3c3

关系S:

ABC
a1b2c2
a1b3c2
a2b2c1

R∪S

ABC
a1b1c1
a1b2c2
a2b2c1
a1b3c2

R∩S

ABC
a1b2c2
a2b2c1

R-S

ABC
a1b1c1

R×S

R.AR.BR.CS.AS.BS.C
a1b1c1a1b2c2
a1b1c1a1b3c2
a1b1c1a2b2c1
a1b2c2aab2c1
a1b2c2a1b3c2
a1b2c2a2b2c1
a2b2c1a1b2c2
a2b2c1a1b3c2
a2b2c1a2b2c1

2.专门的关系运算
专门的关系运算包括选择、投影、连接、除
以下面的3个关系为例。

Student

学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept
201215121李勇20CS
201215122刘晨19CS
201215123王敏18MA
201215125张立19IS

Course

课程号Cno课程名Cname先行课Cpno学分Ccredit
1数据库54
2数学2
3信息系统12
4操作系统63
5数据结构74
6数据处理2
7PASCAL语言64

SC

学号Sno课程号Cno成绩Grade
201215121192
201215121285
201215121388
201215122290
201215122380

2.1 选择(selection)
选择是从行的角度,筛选出符合条件的元组

例:查询信息系(IS)全体学生 :δSdept=‘IS’(Student)

SnoSnameSsexSageSdept
201215125张立19IS

查询年龄小于20岁的学生 : δSage<20(Student)

SnoSnameSsexSageSdept
201215122刘晨19CS
201215123王敏18MA
201215125张立19IS

2.2 投影(projection)
投影是从关系中选出一些属性列组成新的关系,从列的角度考虑

例:查询学生的姓名和所在系: ∏Sname,Sdept(Student)

SnamSdept
李勇CS
刘晨CS
王敏MA
张立IS

查询学生关系中都有哪些系: ∏Sdept(Student)

Sdept
CS
MA
IS

注意有重复的数据要删除,因此只有三个元组

2.3连接
连接是将两个关系以某种关系合并成一个关系
连接包括两种最为常用的:等值连接(equioin)自然连接(natural join)
以下面两个关系为例

R

ABC
a1b15
a1b26
a2b38
a2b412

S

BC
b13
b27
b310
b32
b52

等值连接是将两个关系中,某个分量相等的,变为一个关系
例 等值连接 R⋈SR.b=S.b

AR.BCS.BE
a1b15b13
a1b26b27
a2b38b310
a2b38b32

注意:等值连接相同的属性要进行区分

非等值连接 R⋈SC<E

AR.BCS.BE
a1b15b27
a1b15b310
a1b26b27
a1b26b310
a2b38b310

自然连接是一种特殊的等值连接,要求两个关系中必须有相同名称的属性组,在连接后的关系中只保留一个
例: 自然连接R⋈S

ABCE
a1b153
a1b267
a2b3810
a2b382

注意自然连接和等值连接的区别

外链接(outer join) 是在自然连接的基础上,加上那些被舍弃的元组,把舍弃的元组加入新的关系,在没有数据的地方上填充NULL
根据保留数据的不同,分为外链接、左外连接、右外连接,分别的意思就是都保留、只保留左边、只保留右边

例如:R⋈S

外连接

ABCE
a1b153
a1b267
a2b3810
a2b382
a2b412NULL
NULLb5NULL2

左外连接

ABCE
a1b153
a1b267
a2b3810
a2b382
NULLb5NULL2

右外连接

ABCE
a1b153
a1b267
a2b3810
a2b382
NULLb5NULL2

2.4 除运算(division)
R/S 表示所有在R中,不在S中的属性的值
除是从行和列的角度记性筛选

例如

关系R

ABC
a1b1c2
a2b3c7
a3b4c6
a1b2c3
a4b6c6
a2b2c3
a1b2c1

关系S

BCD
b1c2d1
b2c1d1
b2c3d2

计算R÷S步骤

1.首先R和S公共的属性是B和C
2.再看S在BC上的投影共有3种,即(b1 , c2),( b2, c1), (b2, c3)
3.R比S多的属性是A,A属性有四种不同的取值,从a1 - a4
4.其中a1对应的BC有3种{(b1 , c2),( b2, c1), (b2, c3)}(也叫作a1的象集),同理可得其他对应的象集
5.只有a1对应的BC属性包括S在BC上的投影,所以R÷S = {a1}

  • 11
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值