首页 > 编程知识 正文

范式(1范式2范式3范式)

时间:2023-05-03 06:06:28 阅读:67731 作者:2831

第一范式

具有非主属性对代码部分依赖关系的r(a、b、c ) AB决定代码c是非主属性,B--C B决定C C部分依赖于b

第一范式

定义:如果关系r的所有属性的值域都是简单域,则关系模型r是第一范式

如果符合第一模式的特征

1 )有主关键词

2 )主键不能为空。

3 )主键不能重复。

4 )字段不能重新划分

例如:

study no sex contact

20040901 johnmaleemail : kkkk @ ee.net,phone:222456

20040901悲伤甜瓜,数据线famale email 3360 kkk @ fff.net phone 3360123455

上表不一致。 第一个范例:主键重复(实际上数据库不允许重复),Contact字段可以重新拆分

所以更改为正确的是

study no

20040901 johnmalekkkk @ ee.net 222456

20040902悲伤的甜瓜,数据线famale kkk@fff.net 123455

第二范式

具有非主属性对代码的传递性依赖性的r(a、b、c ) a是代码A --B、B--C

定义:如果关系模型r是第一范式,且关系的每个非主属性部分不依赖主键,则r称为第二范式。

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

在满足第一范式的基础上,消除部分函数依赖。

study no (电子邮件) class address

01 johnmalekkkk @ ee.net 222456200401 a大楼2

01悲伤的甜瓜,数据线famale kkk@fff.net 123455 200402 A大楼3

本表对第一范式完全满意,

主键由StudyNo和ClassNo组成,可以位于指定的行上

但是,class地址部分依赖于关键字(classno-) class地址,

所以变成了两个表

表1

sudy no.sex phone

01 johnmalekkkk @ ee.net 222456200401

01悲伤的甜瓜,数据线famale kkk@fff.net 123455 200402

表2

classno

200401 A大厦2

200402 A大厦3

第三范式

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

study no sex bouns level

20040901 john Male kkkk@ee.net优秀$1000

20040902悲伤甜瓜,数据线famale kkk@fff.net良$600

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

修改为:

study no sex bounsno

20040901 john Male kkkk@ee.net 1

20040902悲伤甜瓜,数据线famale kkk@fff.net 2

bouns no

1优秀$1000

2良600

在这里我喜欢用bounsNo作为主键

基于两个理由

1 )不以文字为主键。 “如果我的等级从一开始就用数值代替呢?

2 )但是等级名称变更时,不叫1、2、3或优、良,很容易变更,所以优先使用与业务无关的字段作为关键字。

一般来说,满足前三个范例可以避免数据冗馀。

英国广播公司

属性不再依赖于部分代码和传递函数。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。