Purpose of normalization

Normalization与ER Modeling类似,是另一种Database design technique.通过考察attribute之间的关系(又称为functional dependencies),并使用一系列测试(称为normal forms)以此确定属性之间的最佳分组.

一组合适的关系应该具备以下特点:

  • 具有紧密逻辑关系的attribute位于同一关系中
  • minimal redundacy:每个属性只表述一次(除了foreign key)

Data Redundancy and Update Anomalies

Data Redundancy

数据库设计的主要目标是将属性分组到关系中,以最大限度地减少数据冗余 (bAddress和branchNo重复出现)

Update Anomalies

包含冗余信息的关系可能出现更新异常,更新异常包括以下几种

  • Insertion: 想存新branch信息却因为暂时没有staff而存不进去(因为primary key不能为空)。
  • Deletion: 删掉某个staff时把关联的branch也删除了
  • Modification: 想改一个branch需要改多个重复的branch

Functional Dependency

Functional dependency (FD) 是与归一化相关的重要概念,其被用于描述attribute之间的关系.FD的定义如下:

  • 若A和B都是ralation中的attributes
  • 根据唯一的 A 的值,就一定能确定 B 的值 (左侧的A被称为determinant,右侧的B被称为dependent)

特殊情况:Partial dependency:发生在使用复合主键(由多个属性共同组成)时,如果某个非键属性(如 branchNo)不需要依赖完整的主键(如 staffNo, sName),而只需要依赖主键中的某一个子集(如仅靠 staffNo)就能被唯一确定,这种情况就称为部分依赖。

一个真实高效的函数依赖必须具备:

  • 唯一性:给定左边,右边一定唯一
  • 永久性:由数据的性质得知,永久成立(如编号肯定对应单独的员工,而姓名可能重名)
  • 最小化:不存在partial dependency,要最小化attribute数量 Transitive Dependency:若 A→B and B→C,则有A→C

The process of normalization

UNF → 1NF

UNF(Unnormalized Form):一个包含多个重复组的table 1NF(First Normal Form):行与列的交集只包含一个值的table 过程:将重复组拆开,确保每一个单元格都是原子值

1NF → 2NF

2NF(Second Normal Form):消除了部分函数依赖的关系表 过程:将部分依赖的属性分离出去,创建新表

2NF → 3NF

3NF(Third Normal Form):消除了传递函数依赖的关系表
过程:将传递依赖的属性分离出去,创建新表

ppt中的tut8需要牢记


链接