以下内容均个人理解,若有出错的地方,请指出,感谢不吝赐教
…………………………………………………………………………
数据库模型
- 三级模式
模式(逻辑模式、概念模式)一个数据库只有一个模式
外模式(子模式、用户模式)一个数据库可以有多个外模式
内模式(存储模式)一个数据库只能有一个内模式,他是数据物理结构和存储方式的描述 - 二级映像
外模式/模式映像:逻辑独立性
模式/内模式映像:物理独立性
关系模型
- 基本概念
关系:一张表
元组:表中的一行
属性:表中的一列
码(主键):表中某个属性组,可以唯一确定一张表
域:属性的取值范围来自某个域(也就是属性的取值范围)
分量:元组中的一个属性值
关系数据库
- 基本定义
域:一组具有相同数据类型的值得集合
笛卡尔积:域的乘积
目(度):关系中的列
候选码:某个属性组的值能唯一标识一个元组,而其他子集不能
主码:一个关系中有多个候选码,选取其中的一个为主码
主属性:候选码的所有属性为主属性
全码:最极端的情况,关系模式的所有属性都是主属性
关系是笛卡尔积的有限子集
关系必须有候选码,不可能出现两行完全相同的属性
关系的完整性
- 实体完整性
限制主属性不为空 - 参照完整性
限制外码的取值:空值or主码的值 - 用户定义完整性
反映用户的需求
关系代数
(关系代数操作以一个或多个关系输入,其结果仍是一个新的关系)
传统的集合运算:并、差、交、笛卡尔积
要进行传统的集合运算,必须要满足的关系:
关系R和关系S具有相同的目(两个关系都有相同的属性,每一列的属性相同)
相应的属性取自同一个域,t∈R表示t是R的一个元组(t属于R)
并(union)R∪S={t|t∈R∨t∈S}
关系内不能出现相同的行,若有相同的,只保留一个
关键词:或者……或者……
差(except)R-S={t|t∈R∧t∉S}
R-S=R-R与S相同的行
R-S与S-R的结果不同
关键词:是……但不含……,除了什么…… ,没有……
交(intersection)R∩S={t|t∈R∧t∈S}
R∩S=R与S相同的部分
R∩S=R-(R-S)
关键词:既……又……,……并且……
笛卡尔积RxS={trts|tr∈R∧ts∈S}(tr和ts之间的符号实在没找到)
设关系R是x行y列,关系S是m行n列:
RXS=(x*m,y+n)
运算不要求RS具有相同的元素,且他们的对应属性的数据类型也相同
关系运算中花费时间可是是最长的运算
例:若D1={a1,a2,a3},D2={1,2,3},则D1×D2集合中共有元组9个
专门的关系运算:选择、投影、连接、除运算
student表
course表
sc表(学生选课表)
选择(selection)σF®={t|t∈R∧F(t)=‘真’}
对行的运算
例:选择19岁的全部学生
投影(projection)πA®={t [A] | t∈R}
对列的运算
取出关系中的某些列,并消去重复元组的关系代数运算
例:查询学生的姓名和所在系
连接(join)
等值连接
自然连接:内连接,外连接(外连接、左外连接、右外连接)
等值连接
自然连接(先等值连接再再去掉相同的列)
两个关系在没有公共属性时,其自然连接操作表现为笛卡尔积操作
有两个关系R(A,B,C)和S(B,C,D),则R∞S结果的属性个数是4
悬浮元组:自然连接时,选择两个关系在公共属性上值相等的元组构成新的关系。此时,被舍弃的元组称为悬浮元组
如果把悬浮元组也保留在新的关系中,而其他属性上为空值(NULL),那么就把这种连接称为外连接(两边的悬浮元组都保留)
左外连接(只保留左边关系中的悬浮元组)
右外连接(只保留右边关系中的悬浮元组)
除运算(division)
新的关系包含所有在R但不在S中的属性(T中的属性不包含S的属性,也就是说T的属性只有例题中关系R的A属性),且T的元组与S的元组的所有组合都在R中
关键词:至少包含……
思路1、
此时,若将红色的a2改为a1,其结果仍为a1
思路2(象集)
关系R:
a1的象集{(b1,c1),(b1,c2),(b2,c2)}
a2的象集{(b3,c3),(b1,c1)}
关系S(与关系R属性相同的投影)
{(b1,c1),(b1,c2),(b2,c2)}
很显然,只有a1的象集包含S的投影,所以R÷S={a1}