1、关系的定义与性质:
1)定义:
一组域D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn = {(d1, d2,…,dn) | di∈Di, i=1,…,n}
笛卡尔积D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系,
用R(D1,D2,…,Dn)表示。
R是关系的名字,n是关系的元、度或目。
关系是笛卡尔积中有意义的子集(也可以表示为二维表)。
2)性质:
(a)列是同质的(每一列中的分量来自同一域,是同一类型的数据)。
(b)不同的列可来自同一域,每列必须有不同的属性名。
©行、列的顺序不重要。
(d)任意两个元组不能完全相同(集合内不能含有相同的两个元素)。
(e)每一分量必须是不可再分的数据(第一范式)。
2、候选键/码、主键/码、外键/码
1)候选键:关系中的一个属性组,其值能唯一标识一个元组。(若从属性组中去掉任何一个属性,它就不具有这一性质了)
任何一个候选键中的属性称主属性。
2)主键:从一个关系的多个候选键中选定一个作为主键。
3)外键:关系R中的一个属性组,它不是R的键,但它与另一个关系S的键相对应,则称这个属性组为R的外部键。
3、关系模型
数据模型三要素(数据结构、数据操作、完整性约束)
数据结构:单一的数据结构–关系;实体集、联系都表示成关系。
1)关系模型:关系的描述。包括关系名、关系中的属性名、属性向域的映象、属性间的数据依赖关系等。记作R(U, D, dom, F),简记为R(U)或R(A1,A2,…,An)
属性向域的映象:一般说明为属性的类型、长度等;
关系:某一时刻对应某个关系模型的内容(元组的集合);
关系模式是型、是稳定的(关系是某一时刻的值,是随时间不断变化的)
2)关系操作:是集合的操作,操作的对象及结果都是集合,是一次一集合的方式;(关系代数(选择、投影、选择、交、并、差、除等)、关系演算)
(而非关系型的数据操作方式是一次一记录)
3)关系模型的完整性:
实体完整性:
b)关系中的主键的属性值不能为空值;
c)关系的主键值不能重复
d)空值:不知道或无意义
e)意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分的,通过主键来唯一标识;若主键为空,则出现不可标识的实体,这是不允许的。
参照完整性(应用完整性):
用户定义完整性:
4、关系代数的集合并、交、差运算
并运算:所有至少出现在两个关系之一的元组集合。
关系R和S进行并运算,必须是相容的,必须是相容的(属性数目必须相同)
对任意的i,R的第i个属性的域必须和S的第i个属性的域相同
差运算:所有出现在一个关系而不在另一个关系中的元组的集合(R和S必须是相容的)
交运算:所有同时出现在两个关系中元组的集合。
5、选择、投影、广义笛卡尔积运算
1)选择:在关系R中选择满足给定条件的元组(从行的角度)
2)投影:从关系R中取若干个列组成新的关系(从列的角度)
3)广义笛卡尔积:
两个关系R,S,其度分别为n,m,则它们的笛卡尔积是所有这样的元组集合:
元组的前n个分量是R中的一个元组,后m个分量是S中的一个元组。
R×S的度为R与S的度之和;
R×S元组个数为R和S的元组个数的乘积;
4)更名运算:
5、连接运算:(θ连接、等值连接、自然连接)
1)θ连接:从两个关系的广义笛卡尔积中选取给定属性间满足一定条件的元组
**2)自然连接:**从两个关系的广义笛卡尔积中选取在相同属性列B上取值相等的元组,并去掉重复的列。
6、除运算: