博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一范式,第二范式,第三范式
阅读量:4053 次
发布时间:2019-05-25

本文共 1412 字,大约阅读时间需要 4 分钟。

第一范式

存在非主属性对码的部分依赖关系 R(A,B,C) AB是码 C是非主属性 B-->C B决定C C部分依赖于B

第一范式

定义:如果关系R 中所有属性的值域都是单纯域,那么关系模式R是第一范式的

那么符合第一模式的特点就有

1)有主关键字

2)主键不能为空,

3)主键不能重复,

4)字段不可以再分

例如:

 StudyNo   |   Name   |   Sex   |   Contact

20040901      john         Male      Email:kkkk@ee.net,phone:222456

20040901      mary         famale    email:kkk@fff.net phone:123455

以上的表就不符合,第一范式:主键重复(实际中数据库不允许重复的),而且Contact字段可以再分

所以变更为正确的是

 StudyNo   |   Name   |   Sex   |      Email         |      Phone

20040901      john         Male              222456

20040902     mary          famale            123455

 

第二范式

存在非主属性对码的传递性依赖 R(A,B,C) A是码 A -->B ,B-->C

定义:如果关系模式R是第一范式的,而且关系中每一个非主属性不部分依赖于主键,称R是第二范式的。

所以第二范式的主要任务就是

满足第一范式的前提下,消除部分函数依赖。

StudyNo   |   Name   |   Sex   |         Email         |      Phone    |   ClassNo  | ClassAddress

01                  john        Male            222456      200401            A楼2

01                   mary       famale           123455      200402            A楼3

这个表完全满足于第一范式,

主键由StudyNo和ClassNo组成,这样才能定位到指定行

但是,ClassAddress部分依赖于关键字(ClassNo-〉ClassAddress),

所以要变为两个表

表一

StudyNo   |   Name   |   Sex   |      Email         |      Phone |   ClassNo

      01            john         Male         222456   200401     

      01           mary         famale        123455      200402    

表二

 ClassNo  | ClassAddress

 200401      A楼2

 200402      A楼3

第三范式

不存在非主属性对码的传递性依赖以及部分性依赖 ,

StudyNo   |   Name   |   Sex   |      Email         |      bounsLevel   |   bouns

20040901      john         Male          优秀                    $1000

20040902     mary         famale           良                         $600

这个完全满足了第二范式,但是bounsLevel和bouns存在传递依赖

更改为:

StudyNo   |   Name   |   Sex   |      Email         |      bouunsNo

20040901      john         Male          1

20040902     mary         famale           2

bounsNo   |   bounsLevel   |   bouns

1                   优秀                $1000

 2                 良                   $600

这里我比较喜欢用bounsNo作为主键,

基于两个原因

1)不要用字符作为主键。可能有人说:如果我的等级一开始就用数值就代替呢?

2)但是如果等级名称更改了,不叫 1,2 ,3或优、良,这样就可以方便更改,所以我一般优先使用与业务无关的字段作为关键字。

 

一般满足前三个范式就可以避免数据冗余。

转载地址:http://yitci.baihongyu.com/

你可能感兴趣的文章
HDU 4333 Revolving Digits(拓展KMP)
查看>>
zoj 3587 Marlon's String(拓展KMP+dp)
查看>>
HDU 2896 病毒侵袭(AC自动机)
查看>>
poj 3468 A Simple Problem with Integers(线段树|成段更新,区间查询)
查看>>
zoj 1610 Count the Colors(线段树,成段更新染色)
查看>>
poj 2528 Mayor's posters(线段树,离散化,成段更新染色)
查看>>
CF 6E Exposition(RMQ | 线段树,二分)
查看>>
uva 11549 - Calculator Conundrum (Floyd判圈法)
查看>>
uva 1330 - City Game
查看>>
uva 1382 - Distant Galaxy
查看>>
uva 10755 - Garbage Heap(三维最大子矩阵)
查看>>
uva 1326 Jurassic Remains(中途相遇法)
查看>>
uva 1398 - Meteor
查看>>
uva 1312 - Cricket Field
查看>>
hdu 4531 吉哥系列故事——乾坤大挪移
查看>>
uva 10535 - Shooter
查看>>
uva 10730 - Antiarithmetic?
查看>>
hdu 4527 小明系列故事——玩转十滴水
查看>>
UVa 11572 - Unique Snowflakes (好题)
查看>>
UVa 11536 - Smallest Sub-Array
查看>>