主要内容
关系数据库的各项定义
1. 关系(relation)
关系模型是关系数据库系统使用的数据模型,它只包含了单一的数据结构——关系,从用户的角度看来,关系只是一张简单的二维表。
下面通过例子介绍与关系相关的几个概念:
D1,D2和D3是相同数据类型的值的集合,它们被称为域(domain)。需要注意的是,域和属性(attribute)的概念比较类似,但属性<=域。
D1 = 导师集合 SUPERVISOR = {Bob,Jack}
D2 = 专业集合 SPECIALITY = {Computer,Art}
D3 = 研究生集合 POSTGRADUATE = {Yong,Tony,Zed}
笛卡尔积(D1xD2xD3)是域上的集合运算,可以表示为一张二维表。表中的每行对应一个元组(tuple),每列的值来自同一个域,这些值被称为分量(component),分量必须是不可分割的数据项。
D1有2个值,D2有2个值,D3有3个值,则笛卡尔积的基数为2x2x3 = 12,也就是D1xD2xD3一共有12个元组。
SUPERVISOR | SPECIALITY | POSTGRADUATE |
Bob | Computer | Yong |
Bob | Computer | Tony |
Bob | Computer | Zed |
Bob | Art | Yong |
Bob | Art | Tony |
Bob | Art | Zed |
Jack | Computer | Yong |
Jack | Computer | Tony |
Jack | Computer | Zed |
Jack | Art | Yong |
Jack | Art | Tony |
Jack | Art | Zed |
一般来说,每列(每个属性)对应一个域,不过也有不同列出自同一个域的情况。比如导师和研究生同来自PERSON域,但是在二维表中它们必须写在不同的列上,取不同的属性名:
D4 = 人 PERSON = {Bob,Jack,Yong,Tony,Zed}
关系是笛卡尔积的有限子集,是若干元组的集合,所以关系也是一张二维表。但一般来说,笛卡尔积的真子集才具有实际意义。比如当一名导师只上门一个专业,一位研究生只走一个专业方向时:
SUPERVISOR | SPECIALITY | POSTGRADUATE |
Bob | Computer | Yong |
Bob | Computer | Tony |
Jack | Art | Zed |
若某个关系含有n个域,则称该关系为n元关系。n是关系的目或度(degree)。
若关系中某一属性组能唯一标识一个元组,而其子集不能,则称该属性组为候选码(candidate key),亦称为关系的主属性(prime attribute)。如果关系中有多个候选码,则选定其中一个为主码(primary key)。