什么是资料库正规化?为什么需要正规化?

2023年2月4日

💎 加入 E+ 成長計畫 與超過 350+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

何谓资料库正规化?

Database Normalization
Database Normalization

正规化是为了让资料库中重复的栏位资料减到最少,并且能快速的找到资料,提高关联性资料库的效能,因此其两大目标为:

  1. 降低资料的重复性
  2. 避免资料更新异常

而正规化中有不同的规则,而实务上,BCNF 被视为最高阶正规形式,如下图所示:

Normalization
Normalization

1NF 规则

  • 每一个栏位只能有一个基元值(Atomic Value)即单一值

  • 没有任何两笔以上的资料是完全重复

  • 资料表中有 Primary Key,而其他所有的栏位都相依于 Primary Key

    Database normalization 1NF
    Database normalization 1NF

2NF 规则与 3NF 规则

2NF

- 符合 1NF - 非键值属性皆完全功能相依于主键

3NF

  • 符合 2NF

  • 不存在非键值属性递移相依于主键

两者解法类似,通常都是将关联性拆解,拆成多张表,并且决定 Foreign Key,如下图所示:

Database Normalization 2NF 3NF
Database Normalization 2NF 3NF

BCNF (Boyce-Codd Normal Form) 规则

  • 比 3NF 再更严格

  • 如果 Primary Key 为单一栏位组成,则符合 3NF 亦符合 BCNF

  • 如果 Primary Key 为多个栏位组成,则须满足:

    • 满足 3NF
    • Primary Key 中的各栏位不可以相依于其他非主键的栏位
Database Normalization BCNF
Database Normalization BCNF

上图所示,每一个属性皆无法独自成为 Primary Key,而其无法满足 BCNF 是因为 Consultant 此栏位不为候选键,而遇到此问题也通常可以透过拆表来解决。

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們