sql server 2008 第一、第二、第三范式

转载 2018年04月17日 14:43:46

我们在数据库表设计时,经常说,某某表要遵循第三范式。下面通过实例介绍第一,第二,第三范式


第一范式

所谓第一范式,就是数据表的列不可再分。

看下面数据表,对于选课列明显是可以再分的,所以它是违反第一范式的。

学号姓名选课
10001张三数学,语文,英语
10002李四语文,英语
10003王五语文,英语,历史


第二范式

第二范式是指,首先满足第一范式,并且表中非主键列不存在对主键的部分依赖。

看下面的学生选课表:

学号课程成绩课程学分
10001数学1006
10001语文902
10001英语853
10002数学906
10003数学996
10004语文892



表中主键为 (学号,课程),我们可以表示为 (学号,课程) -> (成绩,课程学分), 表示所有非主键列 (成绩,课程学分)都依赖于主键 (学号,课程)。 但是,表中还存在另外一个依赖:(课程)->(课程学分)。这样非主键列 ‘课程学分‘ 依赖于部分主键列 ’课程‘, 所以上表是不满足第二范式的。

我们把它拆成如下2张表:


学生选课表:

学号课程成绩
10001数学100
10001语文90
10001英语85
10002数学90
10003数学99
10004语文89

 课程信息表:

课程课程学分
数学6
语文3
英语2


 那么上面2个表,学生选课表主键为(学号,课程),课程信息表主键为(课程),表中所有非主键列都完全依赖主键。不仅符合第二范式,还符合第三范式。 


再看这样一个学生信息表:

学号姓名性别班级班主任
10001张三一班小王
10002李四一班小王
10003王五二班小李
10004张小三二班小李


上表中,主键为:(学号),所有字段 (姓名,性别,班级,班主任)都依赖与主键(学号),不存在对主键的部分依赖。所以是满足第二范式。


第三范式

第三范式定义是,满足第二范式,并且表中的列不存在对非主键列的传递依赖。

对于上面的学生信息表,虽然满足第二范式,所有字段都依赖主键(学号),但是,表中存在一个传力依赖,(学号)->(班级)->(班主任)。也就是说,(班主任)这个非主键列依赖与另外一个非主键列 (班级)。所以不符号第三范式。


把这个表拆分成如下2个表,

学生信息表:

学号姓名性别班级
10001张三一班
10002李四一班
10003王五二班
10004张小三二班

班级信息表:

班级班主任
一班小王
二班小李

这样,对主键的传递依赖就消失了。上面的2个表都符合第3范式。


更高级别的范式

对应上面的班级信息表,完全可以设计成这样:

班级班主任班级人数
一班小王40
二班小李45


这显然是符合第三范式的,所有列都依赖主键(班级),也不存在传递依赖。但是列(班级人数) 显然可以通过统计方法获得,出现在这张表,会造成维护困难或者不一致的情况。这就需要更高级别范式的约束。

什么是第一,第二,第三范式

我们在数据库表设计时,经常说,某某表要遵循第三范式。下面通过实例介绍第一,第二,第三范式 第一范式 所谓第一范式,就是数据表的列不可再分。 看下面数据表,对于选课列明显是可以再分的,所以它是违反第...
  • xidianliuy
  • xidianliuy
  • 2016-06-02 13:45:49
  • 8081

数据库设计 第一范式、第二范式、第三范式 三大范式介绍

数据库设计三大范式为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一...
  • u013190088
  • u013190088
  • 2017-09-18 11:38:33
  • 650

数据库设计的第一范式第二范式第三范式描述和实例

  • 2008年12月19日 20:39
  • 40KB
  • 下载

详解数据库设计准则: 第一范式,第二范式,第三范式

为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。 ...
  • elfprincexu
  • elfprincexu
  • 2016-05-10 10:19:10
  • 1252

【数据库设计】第一范式,第二范式,第三范式

第一范式 存在非主属性对码的部分依赖关系 R(A,B,C) AB是码 C是非主属性 B-->C B决定C C部分依赖于B 第一范式 定义:如果关系R 中所有属性的值域都是单纯域,那么...
  • zhangzeyuaaa
  • zhangzeyuaaa
  • 2017-04-15 18:09:15
  • 1019

第一范式、第二范式及第三范式的定义与举例 and SQL常用函数集锦

第一范式 存在非主属性对码的部分依赖关系 R(A,B,C) AB是码 C是非主属性 B-->C B决定C C部分依赖于B 第一范式 定义:如果关系R 中所有属性的值域都是单纯域,那么关系模式R是...
  • liaoqianwen123
  • liaoqianwen123
  • 2014-05-05 00:11:20
  • 5386

数据库中什么是范式?它的作用是什么?第一、二、三范式的内容是什么?

构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF...
  • liujinwei2005
  • liujinwei2005
  • 2011-04-02 12:29:00
  • 2074

关系型数据库的范式理解

设计关系型数据库时,遵从不同的规范要求,设计出合理的关系型数据库。这些规范被称作范式。越高的范式数据库的冗余度就越低。 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3N...
  • tianjf0514
  • tianjf0514
  • 2012-12-22 23:25:11
  • 2506

SQL Server 2008完全学习手册.part1.rar

  • 2013年10月09日 16:37
  • 49.99MB
  • 下载

SQL Server中获取第一天和最后一天

1.一个月第一天的 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)   2.本周的星期一 SELECT DATEADD(wk, DATEDIFF(wk,...
  • ExceptionalBoy
  • ExceptionalBoy
  • 2017-02-04 14:19:40
  • 268
收藏助手
不良信息举报
您举报文章:sql server 2008 第一、第二、第三范式
举报原因:
原因补充:

(最多只允许输入30个字)