Oracle三范式简单介绍(oracle三范式简介)

Oracle三范式:简单介绍

作为关系型数据库管理系统的代表,Oracle数据库一直是企业级应用的首选,其规模和性能可扩展性受到业内广泛认可。在数据库设计的过程中,遵循数据库三范式是Oracle DBA必须掌握的知识之一。

一、什么是数据库三范式?

数据库三范式(Database Normalization)是指对关系型数据库中的表进行规范化设计,避免数据冗余,解决数据一致性问题,提高数据存取的效率。三范式理论上有三条规则:第一范式(1NF),第二范式(2NF),第三范式(3NF)。

二、第一范式(1NF)

第一范式要求每个字段都是不可分割的基本数据单元,即“原子性”。每个字段只能有一个值或者一个取值范围,且所有的数据项都在某个字段中出现。在设计一个表时,应把它的各个属性分解成不可再分的基本属性,以避免数据冗余和数据更新的异常情况。

如下表就违反了第一范式:

| 编号 | 姓名 | 联系方式 |

| —- | —— | ———————- |

| 1 | 张三 | 13811111111、13911111111 |

| 2 | 李四 | 13511111111,13611111111 |

| 3 | 王五 | 15011111111 |

解决方法:把“联系方式”字段拆分成“手机号码”和“座机号码”两个字段:

| 编号 | 姓名 | 手机号码 | 座机号码 |

| —- | —— | ————- | ———- |

| 1 | 张三 | 13811111111 | 1391111111 |

| 2 | 李四 | 13511111111 | 13611111111|

| 3 | 王五 | 15011111111 | |

三、第二范式(2NF)

第二范式要求每个表必须有唯一标识符(Primary Key),即每个记录都能被唯一地识别。它还要求对于存在非主关键字依赖的表,必须把表进行分解。

下表存在非主关键字依赖(即“课程名称”和“学分”只依赖于“课程编号”,而不依赖于“学号”):

| 学号 | 姓名 | 课程编号 | 课程名称 | 学分 |

| —- | —- | ——– | ——– | —- |

| 001 | 张三 | 101 | 数学 | 3 |

| 001 | 张三 | 102 | 英语 | 2 |

| 002 | 李四 | 101 | 数学 | 3 |

解决方法:把“课程名称”和“学分”拆分成一个新表“课程信息”:

| 课程编号| 课程名称 | 学分 |

| —— | ——– | —- |

| 101 | 数学 | 3 |

| 102 | 英语 | 2 |

| 学号 | 姓名 | 课程编号 |

| —- | —- | ——– |

| 001 | 张三 | 101 |

| 001 | 张三 | 102 |

| 002 | 李四 | 101 |

四、第三范式(3NF)

第三范式要求在满足第二范式的基础上,对于存在传递依赖的表,必须把表进行分解。即如果存在A-B-C三个字段,但B-C之间有依赖,那么就应该把B-C从A中分离出来,以避免数据冗余和数据更新异常情况。

以下表存在传递依赖(即“教师名称”依赖“教师编号”而“课程名称”并不依赖于“教师编号”):

| 教师编号 | 教师名称 | 课程编号 | 课程名称 | 学分 |

| ——– | ——– | ——– | ——– | —- |

| 001 | 张三 | 101 | 数学 | 3 |

| 002 | 李四 | 102 | 英语 | 2 |

| 001 | 张三 | 103 | 物理 | 3 |

| 002 | 李四 | 104 | 生物 | 2 |

解决方法:把“教师名称”从表中拆分出来形成一个新表“教师信息”:

| 教师编号 | 教师名称 |

| ——– | ——– |

| 001 | 张三 |

| 002 | 李四 |

| 课程编号 | 学分 |

| ——– | —- |

| 101 | 3 |

| 102 | 2 |

| 103 | 3 |

| 104 | 2 |

| 教师编号 | 课程编号 |

| ——– | ——– |

| 001 | 101 |

| 002 | 102 |

| 001 | 103 |

| 002 | 104 |

总结:

– 第一范式确保数据库表中的每个数据都是原子性的,不可再分

– 第二范式确保数据库表中的每个记录都可以被唯一地标识

– 第三范式确保数据库表中的每个字段都不会冗余,避免数据更新异常情况和数据冗余的扩散

在设计Oracle数据库的时候,遵循三范式能够提高数据存储效率,减少数据冗余,同时也更易于查询和维护,因此掌握三范式是Oracle DBA必备的技能之一。


数据运维技术 » Oracle三范式简单介绍(oracle三范式简介)