第二章、关系数据库

来源:互联网 发布:万网域名注册阿里云 编辑:程序博客网 时间:2024/05/16 09:16

第二章:关系数据库

2.1关系数据结构及形式化定义:

本节主要介绍关系的形式化概念以及有关概念。

 

2.1.1 关系:

关系数据库系统是支持关系模型的数据库系统。

在关系模型中,数据结构非常简单,值包含单一的数据结构—>关系。

虽然关系模型中的数据结构非常简单,但它却描述出显示世界的实体以及实体之间的关系。关系模型是建立在集合代数的基础之上的,这里从集合论的角度给出关系数据结构的形式化定义。

 

  1.  域domain:一组具有相同数据类型的值的集合。比如person(张教授、李同学、刘同学)
  2.  笛卡尔积 Cartesian product:域上面的集合运算。比如有三个域:A(A1),B(B1,B2),C(C1,C2),那么这三个域的笛卡尔积就是A X B X C = {(A1,B1,C1),(A1,B1,C2),(A1,B2,C1),(A1,B2,C2)},其实就是这三组数据的排列组合。
  3. 关系relation:域笛卡尔积的子集。其实笛卡尔积对于关系数据库是没有意义的,只有其中的某些子集也是有实际意义的。R(D1,D2… Dn)。其中n=1,表示为单元关系,也就是该关系中只有一个属性,n=2表示为二元关系,也就是这个关系中只有两个属性。
  4. 候选码candinate key:在关系中的某一属性组能唯一标识一个元祖,该属性组就成为候选码。例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是(超级码)候选码。
  5. 主码primary key:若一个关系中有多个候选码,则选定其中一个主码
  6. 主属性:候选码的诸属性称为主属性。
  7. 全码all key:关系模型中所有的属性是这个关系模型的候选码。

 

关系有三种类型:

  •  基本表:实际存在的表,它是实际存储数据的逻辑表示
  •  查询表:查询结果对应的表
  •  视图表:由基本表或则其他视图表到处的表,是个虚表,不对应实际存储的数据。创建一个视图,在其中输入一些常用的查询语句,比如查询学生分数的SQL语句。有了视图之后,我们就不需要每次都在查询分析器中输入查询语句,只要打开视图即可。也就是说视图是保存常用查询语句,并且能够显示最新数据结果的界面。

 

 

2.1.2 关系模式:

在数据库中,要区分型和值。那么在关系数据库中,关系模型就是型,关系就是值。关系模式是对关系的描述,那么关系需要哪些描述呢?

 

关系其实就是一个二维表,二维表就是行和列组成的,因此需要对行和列进行描述,那么关系模式就是对行和列以及其关系进行的描述。

 

对关系的描述,即关系模式可以形式化的表示为:R(U,D,DOM,F):

  • U:组成该关系的属性名的集合
  • D:为属性组U中属性所来自的域
  • DOM:为属性向域的映像集合。
  • F:属性间数据依赖关系的集合。

关系是关系模式在某一时刻的状态和内容。关系模式是静态的、稳定的。而关系是动态的,比如数据库管理人员可以随时对表格进行增删查改。

 

 

2.2 关系操作:

关系操作的特点是集合操作方式,即操作的对象和结构都是集合。这种操作方式也成为一次一集合方式set-at-a-time。非关系数据库模型的数据操作则是一次一记录方式。

 

2.2.2 关系数据语言的分类:

早期关系操作的能力通常用关系代收和逻辑方式来表示,分别成为关系代数和关系演算。

关系代数:是用关系的运算来表达查询要求的。

关系演算:是用谓词来表达查询请求的。关系演算又可按谓词变元的基本对象是元祖变量还是域变量分为元祖关系演算和域关系演算。

  

对于一个几百万条记录的关系型数据库,RDBMS进行所有的优化工作,包括数据存储,查询。用户只要键入查询操作命令,所有的工作由RDBMS来负责处理。

  

2.3 关系的完整性约束:

1、实体完整性entity integrity:若属性(一个或则一组属性)A是基本关系R的主属性,则A不能取空值。

对实体完整性规则说明如下:

  •  实体完整性规则是针对基本关系而言的。一个基本关系对应现实世界的一个实体。
  • 现实世界中的实体是可以区分的,他们具有唯一的标示性。因此也要求关系模型中的主码也是唯一的。
  • 主码的属性不能为空。

 

2、参照完整性reference integrity:

参照完整性规则就是定义外码与主码之间的引用关系。

学生(学号,姓名,专业号),专业(专业号,专业名)。专业号对于专业关系式主码,对于学生关系就是外码。

 

参照完整性要求外码取值要么全部为空,要么为其主码值之一。比如外码为空时,学生(001,张三,null)表示张三还没有选择专业。

 

这里举几个比较典型的例子:

  •  学生(学号,姓名,专业号,专业(专业号,专业名)
  •  学生(学号,姓名),课程(课程号,课程名),选修(学号,课程号
  • 学生(学号,姓名,班长)。班长表示该学生所在班级的班长的学号,其实它就是引用了本关系“学号”的属性。这个例子告诉我们同一关系内部属性之间也可能存在着引用关系。 

从以上例子可以看出,参照关系就是告诉我们在使用外码的时候需要注意的事项。

 

 

3、  用户定义完整性user-defined integrity:

实体完整性约束和参照完整性约束,任何数据库都应该支持这两种约束,必须的。

除此之外,不同的关系数据库系统根据应用环境的不同,往往还需要一些特殊的约束条件。用户自定义的完整性就是正对某一具体关系数据库的约束条件。

 

比如我们学校的关系数据库就要求:成绩必须在0~100之间,学生的姓名不能为空值等等。是针对某个具体数据库而言的约束条件,并不是所有关系数据库都必须满足的条件。这就是用户自定义完整性。

 

因此可以看出,关系数据库必须有的约束 + [某个数据库必须有的附加约束] == 才可能是一个数据库完整的约束条件。

 

 

2.4 关系代数:待续