关系模型Relational model
一、关系数据库的基本结构
1.关系relation:一个实体集或关联关系的集合(一个二维表)
给定集合D1、D2…Dn,关系r就是D1×…×Dn的一个子集(n元组的集合:就是对集合中的某种情况填到表里)。
a.关系模式Relational Schema(有具体属性值)
属性名字A1…An,属性名字组成的集合**R=(A1…An)**就是关系模式,如schema=(name,street,city)
**r®**表示关系模式R上的一个关系r,如customer(schema)。
一个关系的当前值(关系实例relation instance)可以通过一个表来表示
b.关系是随机的
关系中元组的顺序是随机的,任意顺序存储
2.元组tuple:关系的每一行
元组变量tuple variable:表示元组的变量,域是特定关系中所有元组的集合
元组变量就是在更换一个元组后,对应的值能发生相应的变化
3.属性attribute:关系命名的列
4.域domain每个属性允许值的集合
5.通常,属性值是原子的atomic(不可划分的)
6.null空值 :不存在的信息
7.关系数据库:
由许多关系组成。(不能是单一的关系(有重复和空值))
8.码keys
K是R的超码superkey:K是属性的集合且是R的真子集,能区分给定关系不同的元组(不存在两个元组在K上的取值相同)(超码内部不存在两个相同的值)。
候选码candidate key:超码K是最小的超码(真子集都不是超码)就是候选码(A不是超码,B不是超码,A+B是超码,A+B就是候选码)
主码primary key:被设计者选中的,用来在一个关系中区分不同元组的候选码(不经常或不变的属性)
外码foreign key:关系模式r1中属性包含r2的主码,对r2的主码,在r1上就叫参照r2的外码。
r1称为外码依赖的参照关系referencing relation,r2为外码的被参照关系referenced relation。
9.引用约束reference constraint
被引用关系的属性是主码时才可以用作引用关系的外码(外码引用的必须是主码,引用的一定是子集)。
10.模式图schema diagram
!
灰色:主码
二、关系代数基本运算Relational Algebra Fundamental Operations
1.数据库查询语言Query language
用户从数据库中请求获取信息的语言。
分为过程化查询语言(知道系统一系列计算的结果)和非过程化查询语言(只需要描述信息,不用提供过程)。
SQL语言包含过程化和非过程化。
纯的语言pure languages:关系代数(过程化),元组关系演算(非),域关系演算(非)。
2.关系代数
1.定义:
包含一组运算,以一个或两个关系的运算作为输入,产生一个新的关系作为结果。
2.六种基本运算:
选择运算、 投影运算、并运算、集合差运算、笛卡尔积运算、重命名运算。
运算之间可以进行组合。
!
a.选择运算(行)
在给定关系r中,选择满足给定条件的元组。
!!
b.投影运算(列)
单目运算,在r中选出若干组属性列组成一个新的关系。
不能有重复行。
!
c.并运算
对两个关系取并集的运算。
条件:r和s必须同源arity(属性数目相同),属性域相同
!
d.集合差运算
找出在一个关系中存在,另一个关系中不存在的元组。
条件:r和s同源。
!
e.笛卡尔积运算
将任何两个关系的信息组合在一起。
!
如果r和s之间有相同的属性,需要对其中一个进行重命名
f.重命名运算
关系代数运算中,为中间结果进行命名。
!用x命名表达式E
!用x命名表达式E,E的属性分别命名为A1…An
3.其他运算
a.集合交运算
!
!
b.自然连接
将两个集合进行笛卡尔积,然后对两个属性名相同的列的相同属性进行选择,然后将重复的去掉
!
c.除法运算
属性名不相同的列,完全包含除数的属性。
!
!
d.赋值运算符
4.扩展关系代数运算
a.广义投影运算
投影的目标可以是关系表达式
b.聚集运算
可以进行max、min、avg、sum、count(值的数量)
c.外连接运算
可以产生空值null
全外连接:
左/右外连接:
5.空值null
算数表达式中就是空。聚集函数中忽略null。重复删除和分组时,多个空值要看成一个值。比较运算时结果时unknown。选择判定时结果时unknown认为判定结果为假。