初入Sql Server 之三范式
一、简介
所谓的范式指的是设计数据库时的一种规范
- 第一范式:确保每个字段的原子性,即不可再进行差分
- 第二范式:在第一范式的基础上,确保每个字段必须直接依赖于主键,不能只依赖主键的一部分
- 第三范式:在第二范式的基础上,确保每个字段都与主键有直接关联,其他字段之间不能相互依赖
二、举例
第一范式:
假设一个员工信息表中包含 "家庭住址" 这一字段,存入信息为 ”中国江苏省南京市江北新区“, 但是每次数据请求都只希望看到员工所属的省份或者城市,那么这个字段查询到的数据就会不太满足需求
修正:可以将其拆分为国家、省份、市、区/县 三个部分,这样便符合第一范式
第二范式:
假设一个表中有 p_id、 c_id、 p_sorce、p_name、c_name ,分别是学生id、课程id、分数、学生姓名和课程名,主键为(p_id、 c_id)只有分数却完全依赖于主键,而姓名和课程名都仅仅依赖于主键的一部分
修正:可以将拆分为三个表 分别(p_id p_name) (c_id c_name) (p_id c_id p_sorce)
第三范式:
假设一个员工表中,包含员工编号、员工姓名、部门名称、部门经理 员工编号为主键,部门、经理和员工之间存在相互依赖的关系
修正:员工表:员工编号 员工姓名 员工部门 部门表 : 部门编号 部门名称 部门经理