WHCSRL 技术网

关系数据库


关系数据库

3.1关系模型

  1. 组成:数据结构、操作集合、完整性约束
  2. 组成的三个部分也称为关系模型三要素

3.1.1数据结构

  • 关系数据模型用二维表组织数据
  • 二维表在关系数据库中称为关系
  • 关系数据库即表或关系的集合
  • 表是逻辑结构,不是物理结构

学生关系模型:


3.1.2数据操作

  • 传统的关系运算:并、交、差、广义笛卡尔积
  • 专门的关系运算:选择、投影、连接、除
  • 有关的数据操作:查询、插入、删除、更改

3.1.2.1操作特点

  • 操作的数据及查询结果为完整的集合/表
  • 集合可只包含一行数据,也可以为空集合
  • 集合处理能力

3.1.2.2关系与非关系模型区别

  • 非关系模型中,各个数据记录间通过指针等方式连接,要定位到某条记录,需要用户自己按指针的链接方向逐层查找——导航
  • 关系模型中,用户只需指定数据的定位条件,数据库管理系统就可以自动定位到该数据记录——非导航

层次模型查找示例:

关系模型查找示例:

3.1.2.3关系操作

  • 关系模型的数据操作主要包括:查询、插入、删除、更改
  • 关系数据库中的信息表示方式:表中的行列位置有明确的值——逻辑层。

3.1.2.4关系数据库物理层

  • 物理层也使用指针,但这些物理层的存储细节对用户不可见,用户所看到的物理层实际上是存放数据的数据库文件:文件名、存放位置

3.1.2.5关系语言特点

  • 高度非过程化:用户不必关心数据存取路径/过程,只需要提出数据请求,DBMS会自动完成用户请求的操作;
    用户没有必要编写程序代码来实现对数据的重复操作。

3.1.3数据完整性约束

  • 是指保证数据正确性的特征
  • 是一种语义概念:与现实世界中应用需求的数据的相容性和正确性;
    数据库内数据之间的相容性和正确性

3.1.3.1数据完整性

  • 数据完整性由一组完整性规则定义,关系模型的完整性规则是对关系的某种约束条件
  • 关系数据模型中数据完整性分:实体完整性、参照完整性(引用完整性)、用户定义的完整性

3.2基本术语与形式定义

3.2.1基本术语

  • 关系:关系就是二维表,二维表的名字就是关系的名字
  • 属性:二维表中每个列称为一个属性(或叫字段),
    每个属性有一个名字:属性名
    某一列的值:属性值
    列的个数:关系的元数。若一个二维表有n个列,则称其为n元关系。
  • 值域:二维表中属性的取值范围
  • 元组:二维表中一行数据称为一个元组
  • 分量:元组中的每一个属性值称为元组的一个分量,n元关系的每个元组有n个分量
  • 关系模式:二维表的结构。(关系模式理解为数据类型,关系就是该数据类型的一个具体值)
  • 关系数据库:一个关系模型的所有关系的集合称为关系数据库

3.2.1.1键

  • 超键:在关系中能唯一标识元组的属性集

  • 候选键:不含有多余属性的超键

  • 主键:多个候选键中选择一个作为主键:

    每个关系只能有一个主键
    主键也称为主码或主关键字,用于唯一地确定一个元组
    主键可以由一个属性组成,也可以由多个属性共同组成

主键示例:

  • 主属性:包含在任一候选键中的属性
  • 非主属性:不包含在任一候选键中的属性

3.2.2关系的形式化定义

  • 笛卡尔积:两个集合相乘的结果
  • 集合A{a1,a2,a3}集合B{b1,b2},笛卡尔积为:A*B={(a1,b1),(a1,b2),(a2,b1),(a2,b2),(a3,b1),(a3,b2)}
  • 笛卡尔积D1…Dn的任意一个子集称为D1…Dn上的一个n元关系
  • 形式化的关系定义同样可以把关系看成二维表,给表中的每个列取一个名字,称为属性。n元关系有n个属性,一个关系中的属性的名字必须是唯一的。属性的取值范围为值域。

笛卡尔积实际就是二维表:

3.2.2.1对关系的限定

  • 关系中的每个分量都是不可再分的最小属性
  • 表中列的数据类型是固定的,即列中的每个分量都是同类型的数据,来自相同的值域
  • 不同列的数据可以取自相同的值域
  • 关系表中列的顺序不重要
  • 关系表行的顺序也不重要
  • 同一个关系中的元组不能重复

3.3完整性约束

  • 数据完整性是指数据库中存储的数据是有意义的或正确的,和现实世界相符

3.3.1实体完整性

  • 保证关系中的每个元组都是可识别的和唯一的
  • 即关系数据库中所有的表都必须有主键,且表中不允许存在无主键值的记录和主键值相同的记录

3.3.1.1主键的作用

  • 当在表中定义了主键时,数据库管理系统会自动保证数据的实体完整性,即保证不允许存在主键值为空的记录以及主键值重复的记录
  • 空值是特殊的标量常数,它代表未定义的或者有意义但目前还处于未知状态的值

3.3.2参照完整性

  • 又称引用完整性
  • 表与表直接的数据参照引用,使用外键约束实现
  • 外键是构建于一个表的两个字段或两个表的两个字段之间的参照关系
  • 主表中的记录被从表参照时,主表的记录不允许删除
  • 若要删除数据,需要先删除从表中依赖该记录的数据
  • 一个表中可以有多个外键

3.3.3用户定义的完整性

  • 又称域完整性或语义完整性
  • 是针对某一具体应用领域定义的数据约束条件
  • 实际是指明关系中属性的取值范围,防止属性的值与应用语义矛盾

3.4关系代数

  • 关系代数是关系操作语言的一种传统表示方式,是一种抽象的查询语言
  • 关系代数的运算对象是关系,运算结果也是关系
  • 三大要素:运算对象、运算符和运算结果
  • 关系代数的运算分为:
    传统的集合运算:并、交、差、笛卡尔积
    专门的关系运算:选择、投影、连接、除

3.4.1运算符

3.4.2选择运算

  • 选择运算是从指定的关系中选出满足给定条件(用逻辑表达式表达)的元组而组成一个新的关系

  • 选择运算表示为:

    σF(R)={ t | t∈R ∧ F(t)= true }

    其中 σ 是选择运算符,R 是关系名,t 是元组,F 是逻辑表达式,

    取逻辑“真”值或“假”值。

3.4.3投影运算

  • 投影运算是从关系 R 中选取若干属性,并用这些属性组成一个新的关系

  • 投影运算表示为:

    ∏A(R)= { t.A | t∈R }

    其中∏是投影运算符,R 是关系名,A 是被投影的属性或属性组。t.A 表示 t 这个元组中相应于属性(集)A 的分量,也可以表示为 t[A]

  • 投影运算一般由两个步骤完成:

    选取出指定的属性,形成一个可能含有重复行的新关系;

    删除重复行,形成结果关系

3.4.5连接运算

  • 连接运算用来连接相互之间有联系的两个关系,从而产生一个新的关系

  • 0连接、等值连接(0连接特例)、自然连接(特殊的等值连接,去掉了等值连接结果中重复的属性列)、外部连接(左外连接,右外连接,全外连接)、半连接(在两个关系之间执行连接操作,并将其结果投影在第一个操作关系的所有属性上。优点是可以减少必须参与连接的元组的数目)

3.4.6关系代数优先级

由高到低:投影-选择-乘积-连接、除-交-并、差

推荐阅读