数据库系统原理 - - (2)关系数据库

感谢内容提供者:金牛区吴迪软件开发工作室

上一篇:数据库系统原理 - - (1)数据库系统概论

二:关系数据库

1.关系数据库概述

a.关系数据库的产生历史

在这里插入图片描述

b.关系数据模型的组成要素

在这里插入图片描述

2.关系数据模型

a.表(Table)

在这里插入图片描述

b.关系(Relation)

在这里插入图片描述
在这里插入图片描述

c.列(Column)

在这里插入图片描述
在这里插入图片描述

d.行(Row)

在这里插入图片描述
在这里插入图片描述

e.码或键(Key)

在这里插入图片描述

f.超码或超键(Super Key)

在这里插入图片描述

g.候选码或候选键(Candidate Key)

在这里插入图片描述

h.主属性(Primary Attribute)或非主属性(Nonprimary Attribute)

在这里插入图片描述

i.主码或主键(Primary Key)

在这里插入图片描述

j.全码或全键(All Key)

在这里插入图片描述

k.外码或外键(Foreign Key)

在这里插入图片描述

l.参照关系(Referencing Relation)和被参照关系(Referenced Relation)

在这里插入图片描述

m.域(Domain)

在这里插入图片描述

n.数据类型(Data Type)

在这里插入图片描述

o.关系模式(Relation Schema)

在这里插入图片描述

p.关系数据库(Relation Database)

在这里插入图片描述

q.关系数据库对关系的限定/要求:

在这里插入图片描述

r.基本的关系操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

s.关系数据语言的分类

在这里插入图片描述
在这里插入图片描述

t.关系代数的运算符

在这里插入图片描述

u.传统的集合运算

在这里插入图片描述
U代表并【作用是去重】
俩个关系必须有相同的属性个数。
在这里插入图片描述
- 代表差
俩个关系必须有相同的属性个数
在这里插入图片描述
n 代表交【作用是把俩个表重复的记录提出】
在这里插入图片描述
x 代表笛卡尔积
在这里插入图片描述

v.专门的关系运算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

w.关系的完整性约束

数据库的数据完整性是指数据库中数据的正确性相容性一致性

举例:在这里插入图片描述

分类:
  1. 实体完整性约束
    主码的组成不能为空,主属性不能是空值NULL
  2. 参照完整性约束
    定义外码和主码的引用规则
    要么外码等于主码中某个元祖的主码值,要么为空值(NULL)
  3. 用户定义完整性约束
    域完整性约束(针对某一应用环境的完整性约束)、其他

3.关系数据库的规范化理论

a.关系模式中可能存在的冗余和异常问题

1) 数据冗余

数据冗余指同一数据被反复存储的情况

数据冗余会导致更新异常、插入异常、删除异常。

2)插入异常

想要插入数据,结构因为表设计的问题,导致不能成功插入

3)更新异常

想更新一条数据,结果工作量大,还容易出错

4)删除异常

只想删除其中的某些数据 ,结果把不该删的也删了

b.函数依赖与关键字

函数依赖:

关系中属性间的对应关系。
在这里插入图片描述
分类:

  • 完全函数依赖
  • 部分函数依赖
  • 传递函数依赖
关键字的定义:

设R为任一给定关系,U为其所包含的全部属性集合,X为U的子集,若有完全函数依赖X -> U,则X为R的一个候选关键字。

举例:
1.完全函数依赖:
我在某公司上班,每个部门有部门号,然后每个员工有员工号。每个部门的员工的号都是以0开始【说白了就是员工号不是唯一的】
那么就只有知道了我的部门号 + 员工号才能知道我。
那么这三者的关系就是我完全依赖于部门号加员工号。
2.部分函数依赖:
我在某公司上班,公司记录了我的身份证号,并另外给了我一个全公司唯一的员工号。
那么在我的公司当中,既可以通过我的员工号找到我,也可以通过我的身份证号找到我。
那么这三者的关系就是我部分函数依赖于身份证号和员工号。
3.传递函数依赖:
某公司绩效考评记录表记录的是员工号加上绩效评分。员工号是通过我的身份证号 + 指定规则生成的【意思就是员工号不等于我的身份证号】
那么想要知道我的绩效的话是这个步骤 : 知道我的身份证号 + 指定规则得到员工号 -> 通过员工号查到我的绩效。
那么这三者的关系就是传递函数依赖关系

c.范式与关系规范化过程

在这里插入图片描述

第一范式1NF

设R为任一给定关系,如果R中每个列与行的交点处的取值都是不可再分的基本元素,则R为第一范式。简而言之,第一范式就是无重复的列。

缺点:
冗余高,插入操作异常,删除操作异常

下表所示情况,便不符合1NF的要求:
在这里插入图片描述

第二范式2NF

设R为任一给定关系,若R为1NF,
且其所有非主属性都完全函数依赖于候选关键字,则R为第二范式。
第二范式简单说 建立在第一范式基础上,消除部分依赖。

第三范式3NF

设R为任一给定关系,若R为2NF,
且其每一个非主属性都不传递函数依赖于候选关键字,则R为第三范式。
第三范式简单说 建立在第二范式基础上,消除传递依赖

第三范式的改进形式BCNF

在这里插入图片描述
设R为任一给定关系,X、Y为其属性集,F为其函数依赖集,若R为3NF,且其F中所有函数依赖X -> Y(Y不属于X)中的X必包含候选关键字,则R为BCNF。

在这里插入图片描述
在这里插入图片描述
下一篇:数据库系统原理 - - (3)数据库设计

超级吴小迪 小程序 ECMAScript 6 React.js
除了生孩子不会其他啥都会的程序猿