目录
关系数据库系统是支持关系模型的数据库系统。本章将从数据模型的三个组成部分展开,2.4则介绍了关系代数,这是关系数据库系统中实现关系操作的一种语言,2.5介绍关系验算。
2.1关系数据结构及形式化定义
2.1.1关系
关系模型的数据结构很简单,只包含单一的数据结构--关系。
关系模型是建立在集合代数的基础上的,这里从集合论角度给出关系数据结构的形式化定义。
1、域domain--一组具有相同数据类型的值的集合。
2、笛卡儿积--域上的一种集合运算。(直接看例子再看定义)
给定一组域D1,D2,…,Dn,允许其中某些域是相同的。
D1,D2,…,Dn的笛卡儿积为:D1×D2×…×Dn ={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}。‘
笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组。
笛卡尔积元素(d1,d2,…,dn)中的每一个值di 叫作一个分量(component)。
一个域的不同取值个数称为这个域的基数(cardinal number)。若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:
笛卡尔积可表示为一张二维表
表中的每行对应一个元组,表中的每列对应一个域。
Eg:给出3个域:
D1=导师集合SUPERVISOR={张清玫,刘逸}
D2=专业集合SPECIALITY={计算机专业,信息专业}
D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏}
则D1,D2,D3的笛卡尔积为
D1×D2×D3={
(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),
(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),
(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),
(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),
(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),
(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }
其中,(张清玫,计算机专业,李勇)、(张清玫,计算机专业,刘晨) 等都是元组n-tuple。
张清玫、计算机专业、李勇、刘晨等都是分量component。
基数cardinal number为2×2×3=12,也就是说,D1×D2×D3一共有2x2x3=12个元组。这12个元组可以列成一张二维表:
3、关系relation
1)基本概念
D1,D2,…,Dn的笛卡尔积的某个子集才有实际含义,称之为在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)。其中,R是关系的名称,n是目或度degree。
(注意:关系是笛卡尔积的有限子集。无限关系在数据库系统中是无意义的。)
当n=1时,称该关系为单元关系(Unary relation)或一元关系;
当n=2时,称该关系为二元关系(Binary relation)。
因为关系是笛卡尔积的有限子集,所以关系也可以表示为一张二维表。
元组tuple--关系中的每个元素是关系中的元组,通常用t表示。
属性attribute—每一列。
候选码candidate key—所有可以唯一标识每一个tuple的属性,这些属性叫prime attribute,其他叫no-key attribute或no-prime attribute。当所有属性都是prime attribute时,称为all-key。
主码primary key—指定的一个候选码