数据库基本概念

定义

数据库(DataBase)是长期存储在计算机的、有组织的、可共享的、数据集合。

数据库管理系统

DBMS,对数据进行定义、存储、操作控制管理等。

数据库系统

DBS,针对某种应用而开发的信息管理系统。

事物

transaction,指一个或一组数据库操作。

事物处理器

有如下一些任务:记日志、并发控制、消除死锁

ACID

事物有如下特性

A - 原子性 C - 一致性 I - 独立性 D - 持久性

关系数据库设计

函数依赖

一个函数依赖是指两个元组在满足属性A1…An时,也在B1…Bm上满足,并且这得是一个单一映射。

是一个集合,这个集合里面的属性能够决定一个元组,且该集合的真子集不能决定元组。

主键

当键多于一个时,需要规定一个作为主键

超键

就是键集合的超集

函数依赖规则

对于函数依赖(下文简称FD),有两点重要规则。

  • A->B, B->C => A -> C
  • A1…Am -> B1…Bn => A1…Am -> B1, A1…Am -> B2, … , A1…Am -> Bn

平凡FD

对于A1…An->B1…Bm,如果说{B1…Bm} \subseteq {A1…An},为简化我们记为A->B, B\subseteqA,则有A->B-A

闭包

  1. 对{A1…Am}的构造过程,首先对于一个R的所有FD进行分解,使得每个FD右边只有一个属性,初始化X集合为{A1…Am},不断重复2.
  2. 如果有FD左边元素在X中,则如果右边元素不在X中,将其加入X
  3. X即为{A1…Am}的闭包

例子

image-20210401085956129

闭包和键

闭包A包含了R所有的属性当且仅当A是集合的超键,这个证明想想就会。

检验A是否为R的超键,可以看闭包A是否包含R的所有属性,如果想看是否为键,则去掉A中任一一个属性,是否仍能包含所有属性。

基本集

给定R的一个FD的集合为S,则与S等价的集合称为S的基本集。

最小基本集

  • 所有FD的右端只有一个元素
  • 如果任一FD从集合中移除,则不再是一个基本集
  • 如果对任一FD移除左端的某几个元素,结果也不再是基本集

函数依赖投影

image-20210401093821124

关系数据库模式设计

异常

  • 冗余

    信息在多个元组中重复

  • 更新异常

    不能更新所有对应的值

  • 删除异常

    删除某个值时删除了不应该删除的信息

分解

分解就是把一个关系模式转换为等价的多个关系模式

BCNF

分解的目的是将一个关系替换为多个不存在异常的关系,即在一个条件下不存在之前的异常,这个条件就是BC范式。

关系R属于BCNF当且仅当,R中的非平凡FD A->B成立(非平凡就是B⊈\not\subseteqA)。

也就是说每个非平凡FD的左边必须包含键。

当然了,如果一个关系R没有非平凡FD,他一定遵守BCNF的。

分解为BCNF

这有一个算法

image-20210401115308133