数据库范式是指在数据库设计中,通过一系列的规范或要求,对数据表设计的合理性、正确性和高效性进行保证。其中,第一二三范式是最基本的三种范式,也是最常用的三种范式。
一、第一范式
第一范式强调的是每个属性不可再分。也就是说,数据库表中的每个属性都是最基本的数据单位,不可以被继续拆分。只要表中的每个属性都满足这个条件,就可以认为该表是符合第一范式的。下面以一个教学班级信息表为例,来说明第一范式的概念:
班级信息表
| 班级号 | 姓名 | 学号 | 性别 |
|--------|--------|-------|----|
| 101001 | 张三 | 100101 | 男 |
| 101001 | 李四 | 100102 | 男 |
| 101001 | 王五 | 100103 | 女 |
| 101002 | 赵六 | 100104 | 男 |
| 101002 | 钱七 | 100105 | 女 |
| 101002 | 孙八 | 100106 | 男 |
可以看出,表中的每个属性都不能再继续拆分,每一列都是最基本的数据单位,所以符合第一范式。
二、第二范式
第二范式强调的是非主属性对于主键要完全依赖。也就是说,在一个表中,任何非主属性都必须完全依赖于主键。因此,如果一个表中存在多个主键,则需要将其拆分成符合第二范式的多个表。下面以一个订单信息表为例,来说明第二范式的概念:
订单信息表
| 订单编号 | 商品编号 | 商品名称 | 商品单价 | 商品数量 | 顾客编号 | 顾客姓名 | 顾客联系方式 |
|-------|-------|--------|-------|-------|-------|-------|-----------|
| 001 | 001 | 洗面奶 | 19.9 | 2 | 001 | 张三 | 13512345678 |
| 001 | 002 | 牙刷 | 6.5 | 3 | 002 | 李四 | 13812348765 |
| 002 | 003 | 浴巾 | 39.9 | 1 | 003 | 王五 | 13576543210 |
可以看出,在这个表中,非主属性包括商品名称、商品单价、商品数量、顾客姓名和顾客联系方式都是对于主键订单编号的完全依赖,因此符合第二范式。
三、第三范式
第三范式强调的是任何非主属性都不能相互依赖。也就是说,如果一个表中存在非主属性之间的依赖关系,那么在设计表结构时,需要将其拆分成符合第三范式的多个表。下面以一个学生信息表为例,来说明第三范式的概念:
学生信息表
| 学号 | 姓名 | 学院 | 院长 | 学院地址 |
|-------|--------|------------|-----|-----------|
| 100101 | 张三 | 计算机学院 | 王五 | 华南路3号 |
| 100102 | 李四 | 电子信息工程学院 | 赵六 | 中山路8号 |
| 100103 | 王五 | 机械工程学院 | 孙八 | 金湖路12号 |
可以看出,在这个表中,学院和院长之间存在依赖关系,因为任何一个学院的院长都是唯一的,而且一个院长只能管理一个学院。因此,表结构需要拆成两个表才符合第三范式,即学生基本信息表和学院基本信息表,其中学生基本信息表中包含学号、姓名和所在学院的外键,学院基本信息表中包含学院名称、院长和学院地址。
扫码咨询 领取资料