分类: 数据库开发技术
2012-06-02 13:29:33
一,关系数据库的源头:
关系数据库的源头是离散数学中的笛卡尔积(D1 X D2 X D3 X ….X Dn),关系(relation)被定义为笛卡尔积上的子集,关系的属性(attribute)对应于笛卡尔积中的域(domain)Dn。于是数据库中的表与关系就有如下对应关系:
表(table) ç==è 关系(relation)
行(row) ç==è 元组(tuple)
属性(attitude) ç==è 域(domain)
二,数据库模式:
数据库模式(database schema):数据库的逻辑设计。
数据库实例(database instance):给定时刻数据库模式下的一个快照。
关系模式(relation shema):是一个给定域向量表达式(D1,D2,……,Dn),表示一种定义,可以理解成编程语言中的一个自定义数据类型。
例如:R = (D1,D2,……,Dn)为一个关系模式。
关系(relation):即给定关系模式下的一个实例对象,可以理解成自定义类型的变量。
例如:r(R)为关系模式R下的关系r对象。
关系实例(relation instance):对应于编程语言中的变量的值。
三.元组与码:
元组(tuple):即为关系中的一个实例(表的一行),一个关系中没有两个相同的元组。
超码(superkey):关系中可以唯一得标识一个元组的一个或多个属性的集合(注意:只要能唯一标识一个元组的属性集合即可成为超码,所以超码可能包含多余的属性,而不是能唯一标识一个元组的最少属性集)。
数学描述:如果关系模式R的子集K为R的超码,则满足如下关系:
tuple1,tuple2 r(R),且tuple1[r(R)] != tupel2[r(R)];
必有tuple1[r(R)] != tupel2[r(R)];
候选码(candidate key):其子集不再为超码的超码,即为最小超码(此时并非域成员最少的关系集合,比如(D1,D2),(D3)都是子集不是超码的超码,则他们满足候选码的要求)。
主码(primary key)被数据库设计者选来用于在同于关系中区分元组的候选码,因此主码必定唯一。
外码(foreign key):一个关系模式R1的属性中包含了另一个关系模式R2的主码,这个属性叫做R1参照R2的外码。
四.关系代数的基本运算:
1.选择运算(select) ç==è p(条件) 说明:选择为行过滤。
2.投影运算 (project) ç==è (Dn,Dm,…) 说明:投影为列过滤。
3.集合并运算(union) ç ==è (r1)U(r2)
操作结果:r1,r2做交集,同出现或者出现在r1,r2之一的。
需要满足的约束:a).关系r1与r2的属性数目必须相同。
b).r1与r2对应列位置上的属性的域必须相同。
4.集合差运算(set-deference)ç==è r1 – r2
需要满足的约束:a).关系r1与r2的属性数目必须相同。
b).r1与r2对应列位置上的属性的域必须相同。
5.笛卡尔积(Cartesian-product)ç==è r1 X r2
一下运算由于运算符无法编辑,用图片展示:
实例:
对应的四种操作结果:
五.空值(null):
Null表示”不知道或者不存在的值”。
1.任何包含空值的算术运算(+,-,*,/)应该返回空值。
2.任何包含空值的比较运算(>,<,>=,<=,!=)结果是特殊值unkown。
Ture and unkown = unkown,false and unkown = false, unkown and unkown = unkown
Ture or unkown = ture,false or unkown = unkown, unkown or unkown = unkown
Not unkown = unkown.
and |
Ture |
unkown |
False |
True |
Ture |
unkown |
False |
Unkown |
unkown |
unkown |
False |
false |
false |
false |
false |
or |
Ture |
unkown |
False |
True |
Ture |
ture |
true |
Unkown |
Ture |
unkown |
unkown |
false |
ture |
unkown |
false |