目录

关系数据库数据库原理

关系数据库(数据库原理)

目录

**一、关系数据结构

二、关系的完整性

三、关系运算

四、关系的规范化**

一、关系数据结构

1、关系的定义和性质

(1)、 关系的数学定义:

: 一组有相同数据类型的值得集合

笛卡尔积 : 设任意的N个域D1,D2,…,Dn。定义D1,D2,…,Dn的笛卡尔积为:D1*D2*****Dn={(d1,d2,…,dn)|di属于Di,i=1,2,…,n}。例如(D1的取值类型都为动物,D2的取值类型都为菜食物):D1={猫,狗,猪},D2={鱼,骨头,白菜},则D1乘D2={(猫,鱼),(猫,骨头),(猫,白菜),(狗,鱼),(狗,骨头),(狗,白菜),(猪,鱼),(猪,骨头),(猪,白菜)}

关系 : D1Dn中有关系的行形成的一个子集称为D1Dn的一个关系,用R(D1,D2…Dn)表示,R表示关系名,n表示关系的元或目

(2)、关系的性质:

同一列的数据类型必须一致

同一关系中,不同列可以有相同的数据类型,但列名必须不一样

同一关系中,任意两行不能重复,且元组(行)的排行不分先后顺序

同一关系中,列的排列部分先后顺序

关系中属性不可再分,满足原子性

**2、关系数据库的基本概念:

(1)关系模式**

在惯性型数据库中,关系模式是型,关系是值, 关系模式是对关系的描述

关系模式的表示:R(U,D,dom,F),R表示关系名;U是组成该关系的属性名集合;D是属性组U中属性来自的域;dom是属性向域的映像关系;F是属性间的数据依赖关系集合

简记:R(U)或者R(A1,A2,A3…An),例如: 学生情况(姓名,班级,学号,身份证号等)

(2)关系数据库 采用关系模式的数据库

3、关系的完整性 : 保证行不重复(唯一)

(1)实体完整性约束

  • 主键约束(primary key):非空且唯一
  • 唯一键约束(unique):唯一

(2)引用完整性约束:

  • 存在两个关系(表)R和S,F是一个属性或者属性集合;F属于R但不是R的主键,同时F属于S并且F是S的主键,则称F是基本关系R的外码,R为外键表,S为主键表
  • 外键约束(foreign key):表与表之间建立联系

(3)域完整性约束 : 用户定义的完整性规则

由用户根据实际情况对数据库中的数据内容进行规定,对列的约束

检查约束(check):添加范围

数据类型约束(int、char等)

默认约束(default)

非空约束(not null)

3、关系运算: 关系代数是以关系为运算对象的一组高级运算的集合

(1)传统的集合运算 : 并、交、差、笛卡尔积

笛卡尔积 : 两张表R和S也就是关系 ,笛卡尔积R*S就是R表的字段加上S表的字段,如图:

举例: https://i-blog.csdnimg.cn/blog_migrate/45daa0d5e58867745bc984e203b92edd.png#pic_center

: 关系R和S具有相同的关系模式(属性相同,域相同)

公式: https://i-blog.csdnimg.cn/blog_migrate/80c75cfbe0880dfd07d418d7d1cb1d3b.png#pic_center

https://i-blog.csdnimg.cn/blog_migrate/893612f8194a050a8a31929819b9dce3.png#pic_center

: R和S具有相同的关系模式,R和S的交是属于集合R有属于集合S的元素组成的集合

: R和S具有相同的关系模式,R和S的差是有属于关系R但不属于关系S的元素构成的集合

https://i-blog.csdnimg.cn/blog_migrate/8ed4fd79c5c254f690f66fd1b50dceaa.png#pic_center

https://i-blog.csdnimg.cn/blog_migrate/b6c9901416d32b73e5fcda0737e9a313.png#pic_center

(2)专门的关系运算: 投影、选择、连接、除法

投影 :(对关系进行垂直分割) 关系R上的投影是R上选择出若干个属性列组成新的关系(从表中选择列)

https://i-blog.csdnimg.cn/blog_migrate/50ea04d352ceace25a8b1e2f6dd3ad9f.png#pic_center

举例:将a1和a3进行投影,去掉重复的:

https://i-blog.csdnimg.cn/blog_migrate/2a01af1d66f0c464cd8b462d3c099db7.png#pic_center

选择(对关系进行水平分割) : 挑选满足条件的行

https://i-blog.csdnimg.cn/blog_migrate/77c3e29dab451cd65356d21935c12122.png#pic_center

举例: 选择A2值为a或b的元素

https://i-blog.csdnimg.cn/blog_migrate/ee781151af2f4f7609534c8c47f1aade.png#pic_center

象集 : 给定关系R(A,B),A,B为属性组。表示A属性上a在B上的分量就是象集

例如:

| A|B |

| a1|b1 |

| a2|b2|

| a2|b3 |

a1对应的象集为(b1)

a2对应的象集为:(b2,b3)

步骤:R/S

stop1:找到两个关系中属性相同的列

step2:R/S就是相同的列中属于R但不属于S的列

step3:找到R中列的元素所对应的象集,和S在和R相同列的投影

step4:象集包含S中得到的投影的元素就是除法的结果

四、关系的规范化

1、 数据依赖 : 函数依赖 、多值依赖、连接依赖

(1)、 函数依赖 : 关系模式中各个属性之间的一种依赖关系

函数依赖定义 : 简单点说就是,关系R(X,Y),如果指导属性X的值就能得到属性Y的值,就能说Y函数依赖于X

(2)、 几种特定的函数依赖:

  • 平凡和非平方函数依赖 : 关系模式R(X,Y),如果 X—>Y,Y是X的子集,则称为平凡函数依赖;如果X—>Y,Y不是X的子集,则称为非平凡函数依赖。例如: 学号,课程号—>成绩为非平凡函数依赖
  • 完全函数依赖和部分函数依赖 : 关系模式R(X,Y),如果X—>Y,并且X的任意一个真子集Z都不满足Z—>Y,则Y完全函数依赖 X;如果X—>Y,但对于X的某一个真子集Z,有Z—>Y满足,则称Y部分依赖于X。例如: 成绩表(学号,课程号,成绩),学号,课程号为主键,学号和课程号共同决定成绩,但是学号和课程号分开不能决定成绩,所以成绩完全函数 依赖学号和课程号
  • 传递函数依赖 : 关系模式R(X,Y),X—>Y,Y—>X(不成立),有Y—>Z,则称X—>Z称为传递函数依赖。例如: 学生关系(学号,所在系,系主任),学号——>所在系,所在系——>系主任,学号——>系主任

(3)、码的函数依赖表示:

  • 候选码: 设K为关系模式R(U)中的一个属性或属性集合,若K——>U,则K称为R的一个候选码
  • 主码: 选定R中一个候选码作为主码

2、关系规范化的目的:

数据冗余 :数据库中重复存放数据的情况。造成浪费空间,修改数据时会发生数据不一致情况

更新异常 :存在数据冗余,更新数据时代价会增高

插入数据 :信息插不进去

删除异常 :不该删除的数据不得不删除

3、关系规范化的过程:

(1)、第一范式: 目标是确保每列的原子性(即不可再分的最小数据单元)

关系模式的属性不可再分解

缺点:不能排除数据冗余和异常情况

(2)、第二范式: 要求每个表只描述一个实体的属性

主属性: 包含在任何候选码中的属性

非主属性: 不包含在任何候选码中的属性

定义:满足第一范式的条件下,且它的每一个 非主属性 都完全函数依赖于码(候选码)

例如:学生关系(学号,姓名,性别,课程号,学分),其中学号和课程号的组合为主码,姓名、性别、学分为非主属性

(3)、第三范式: 要求实体各属性之间不能具有直接的依赖关系

满足第二范式,且没有一个非主属性传递函数依赖于码

(4)、BC范式:

定义:对于任何非平凡函数依赖X——>Y,X均包含码

所有非主属性完全函数依赖于每一个候选码

所有主属性完全函数依赖于每个不包含它的候选码

没有任何属性完全函数依赖于非码的任何一组属性