数据库系统概论 - 关系数据理论

数据库系统概论 - 关系数据理论

函数依赖:若在一张表中,在属性(或属性组)X 的值确定的情况下,必定能确定属性 Y 的值,那么就可以说 Y 函数依赖于 X,写作 X -> Y,如:(学号) -> (学生), (班级, 名称) -> (学生)

部分函数依赖:设 X, Y 是关系 R 的两个属性集合,存在 X -> Y,若 X’ 是 X 的真子集,存在 X’ -> Y,则称 Y 部分函数依赖于 X,如:通过 AB 能得出 C,通过 A 也能得出 C,通过 B 也能得出 C,那么说 C 部分依赖于 AB

完全函数依赖:设 X, Y 是关系 R 的两个属性集合,X’ 是 X 的真子集,存在 X -> Y,但对每一个 X’ 都有 X’ !-> Y,则称 Y 完全函数依赖于 X,如:通过 AB 能得出 C,但是 A, B 单独得不出 C,那么说 C 完全依赖于 AB

传递函数依赖:假如 X 函数依赖于 Y,且 Y 函数依赖于 Z ,则称 Z 对 X 传递函数依赖

范式

关系数据库中的关系要满足一定要求,满足不同程度要求为不同范式,满足高等级的范式必满足低等级的范式,范式阶数越高冗余度越低,查询效率越低

一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这个过程称为规范化

关系模式可能存在以下问题:

  • 数据冗余:每个学生都有一个系名称,则会存在多份,造成数据冗余
  • 更新异常:当系名称需要更新时,需要把所有系名称都进行更新,可能会导致不一致
  • 插入异常:如果一个系刚成立没有学生,无法把这个系及其系主任信息存入数据库
  • 删除异常:如果学生毕业,删除学生的同时会丢失系名称等信息

1NF

每一个分量必须都是不可再分的数据项,保证每列属性是原子性,是关系型数据库的基本要求

表中每一个字段都需要是唯一的,不可再分的

2NF

每一个非主属性完全函数依赖与任何一个候选码,保证每列属性和主键直接相关

一张表就是一个独立的对象,一张表只表达一个实体

3NF

非主键属性既不传递依赖与码,也不部分依赖与码,保证每列和主键直接相关而不是间接相关

非主键外的所有字段必须互不依赖,实体中的属性不能是其它实体中的非主属性

BCNF

在 3NF 的基础上只有一个候选码,或者每个候选码都是单属性,该关系就达到了 BCNF

对于第三范式的优化,消除了主属性对于候选码的部分依赖或传递依赖

4NF

限制关系模式的属性之间不允许有非平凡且非函数依赖多值依赖

要求把同一表内的多对多关系删除,消除表中多值依赖

反范式

数据库表中增加冗余字段提升查询效率,性能比规范更重要

你可能感兴趣的:(数据库)