元组(tuple)是关系数据库(relational database)中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。
使K∈R,如果K值能够在一个关系中唯一地标志一个元组,则K是R的 超码。如果K是最小超码,则K是 候选码。
如果k是一个候选码,并由用户明确定义,则K是一个 主键。主键通常用下划线标记。
关系代数
六个基本运算:
1.选择(select)根据条件选出行(元组)。
2.投影(project)选择列(属性),将表中重复的元组删除。
3.并(union)将两个有相同属性(且排列顺序相同)的表合并,重复的元组删除。
4.差(set difference)将两个有相同属性(且排列顺序相同)的表中出现相同的元组删除。
5.广义笛卡尔积(cartesian product)
定义:r x s = { {t q} | t∈r and q∈s}
假设r(R)的属性和s(S)的属性没有交集
如果r(R)和s(S)的属性有交集,那么必须重命名这些有交集的属性(r.B和s.B)
6.重命名(rename)
四个附加运算:
1.交(Set intersection)从两个有相同属性(且排列顺序相同)的表中找出相同的元组。表达式:r ∩ s = r - ( r - s )
2.自然连接(natural join) r ⋈ s
(1) r,s必须含有共同属性 (名, 域对应相同),
(2) 连接二个关系中同名属性值相等的元组
(3) 结果属性是二者属性集的并集,但消去重名属性。
3.除(division) r ÷ s
理解这张图,语言太难描述了。
4.赋值(assignment)
(←)可以使复杂的查询表达变得简单
将 ← 右侧的表达式的结果赋给 ← 左侧的关系变量,该关系变量可以在后续的表达式中使用。
拓展关系运算:
1.广义投影~允许在投影列表中使用算术函数来对投影操作进行扩展
2.聚集函数~输入一个值集合,然后返回单一值作为结果,如avg,min,max,sum
3.外连接
外连接运算是连接运算的扩展,可以处理缺失信息
保留一侧关系中所有与另一侧关系的任意元组都不匹配的元组,再把
产生的元组加到自然连接的结构上
使用空值:
空值表示值不知道或不存在
数据库的修改:插入、删除、更新。
范式
函数依赖:The value of one or a group attributes can decide the value of other attributes.
即X->Y,称为Y函数依赖于X,X函数决定Y。
完全函数依赖:如果X->Y,且对于X的任何真子集都不能决定Y,则称Y对X完全函数依赖。
部分函数依赖:否则称为Y对X部分函数依赖。
传递依赖:如果X->Y,Y->Z,Y不依赖于X,(X∪Y)∩Z = null,则称Z对X传递函数依赖。
1NF:关系中每一个分量都不能再分,保证了数据的原子性。
2NF:消除了非主属性对码的部分函数依赖。
3NF:消除了非主属性对码的传递依赖。
BCNF:消除了任何属性(非主属性、主属性)对码的部分函数依赖和传递依赖。