1.关系数据库及形式化定义
-
I、关系
关系模型的数据结构非常简单,只包含单一的数据结构--关系(表)。在用户看来关系就是一张扁平的二维表。
关系模型的数据结构虽然简单但是能够表达丰富的语义,描述出现实世界中的实体以及实体间的各种联系。
关系模型是建立在集合代数的基础上的,这里从集合论角度给出关系数据结构的形式化定义。
1.域(domain)
定义:域是一组具有相同数据类型的值的集合。 (这个定义有点像是数组)
2.笛卡尔积(cartesian product)
笛卡尔积是域上的一种集合运算(有点像乘法分配律)
定义: 给定一组域D1,D2,...,Dn,允许其中某些域是相同的,D1,D2,...,Dn的笛卡尔积为:
其中,每一个元素()叫做一个n元组,元素中的每一个值叫做一个分量。
3.关系(relation)
其实就是表。。。
关系是笛卡尔积的有限子集,所以关系也是一张二维表,表的每行对应一个元组,每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性。
若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性为候选码。
若一个关系有多个候选码,则选定其中一个为主码。
在最极端的情况下,关系模式的每个属性都是这个关系的候选码,称为全码(all-key)。
一般来说,笛卡尔积的子集才会有实际的含义。
关系可以有三种类型:基本关系(基本表或基表)、查询表和视图表。
-->其中 基本表是实际存在的表,它是实际存储数据的逻辑表示;查询表是查询结果相对应的表;视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
-
II、关系模式
在数据库中要区分型和值。关系数据库中,关系模式是型,关系是值。
关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。人们常把两者混为一谈,要根据上下文内容进行区分。