数据库-范式【转】

第一范式

存在非主属性对码的部分依赖关系 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:[email protected],phone:222456

20040901      mary         famale    email:[email protected] phone:123455

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

所以变更为正确的是

StudyNo   |   Name   |   Sex   |      Email         |      Phone

20040901      john         Male       [email protected]       222456

20040902     mary          famale      [email protected]      123455

第二范式

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

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

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

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

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

01                  john        Male       [email protected]     222456      200401            A楼2

01                   mary       famale    [email protected]       123455      200402            A楼3

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

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

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

所以要变为两个表

表一

StudyNo   |   Name   |   Sex   |      Email         |      Phone |   ClassNo

01            john         Male       [email protected]  222456   200401

01           mary         famale    [email protected]    123455      200402

表二

ClassNo  | ClassAddress

200401      A楼2

200402      A楼3

第三范式

不存在非主属性对码的传递性依赖以及部分性依赖 ,
StudyNo   |   Name   |   Sex   |      Email         |      bounsLevel   |   bouns

20040901      john         Male       [email protected]   优秀                    $1000

20040902     mary         famale    [email protected]       良                         $600

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

更改为:

StudyNo   |   Name   |   Sex   |      Email         |      bouunsNo

20040901      john         Male       [email protected]   1

20040902     mary         famale    [email protected]       2

bounsNo   |   bounsLevel   |   bouns

1                   优秀                $1000

2                 良                   $600

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

基于两个原因

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

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

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

时间: 2024-12-09 11:16:26

数据库-范式【转】的相关文章

数据库范式的设计

数据库范式的设计     关系数据库就是通过二维表(行和列)来保存数据. 实体:现实世界中客观存在并可以被区别的事物.比如"一个学生"."一本书"."一门课"等等.值得强调的是这里所说的"事物"不仅仅是看得见摸得着的"东西",它也可以是虚拟的,不如说"老师与学校的关系". 属性:教科书上解释为:"实体所具有的某一特性",由此可见,属性一开始是个逻辑概念,比如说,&qu

数据库范式那些事

转载至:http://www.cnblogs.com/CareySon/archive/2010/02/16/1668803.html 简介 数据库范式在数据库设计中的地位一直很暧昧,教科书中对于数据库范式倒是都给出了学术性的定义,但实际应用中范式的应用却不甚乐观,这篇文章会用简单的语言和一个简单的数据库DEMO将一个不符合范式的数据库一步步从第一范式实现到第四范式. 范式的目标 应用数据库范式可以带来许多好处,但是最重要的好处归结为三点: 1.减少数据冗余(这是最主要的好处,其他好处都是由此而

一看就懂的数据库范式介绍(1NF,2NF,3NF,BC NF,4NF,5NF)

原文:http://josh-persistence.iteye.com/blog/2200644 一.基本介绍 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小. 目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).巴斯-科德范式(BCNF).第四范式(4NF)和第五范式(5NF,又称完美范式).满足最低要求的范式是第一范式(1NF).在第一范式的基础上进一步满足更

SQL语句类别、数据库范式、系统数据库组成

前言 终于等到这一天,我要开始重新系统学习数据库了,关于数据库这块,不出意外的话,每天会定时更新一篇且内容不会包含太多,简短的内容,深入的理解. SQL语句类别 SQL语句包括以下三个类别 (1)数据定义语言(Data Definnition Language)即DDL,我们数据最终从何而来,当然首先必须得建立表,所以它包括CREATE.ALTER.DROP表. (2)数据操作语言(Data Manipulation Language)即DML,我们对数据需要进行什么操作,当然无非就是增删改查,

MYSQL学习笔记——数据库范式及MYSQL优化整体思路

一.数据库范式                                                                               为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 1.1.第一范式(1NF:每一列不可包含多个值)      所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列

转载:数据库范式

数据库范式——通俗易懂[转] (2012-04-02 21:15:43) 数据库范式是数据库设计中必不可少的知识,没有对范式的理解,就无法设计出高效率.优雅的数据库.甚至设计出错误的数据库.而想要理解并掌握范式却并不是那 么容易.教科书中一般以关系代数的方法来解释数据库范式.这样做虽然能够十分准确的表达数据库范式,但比较抽象,不太直观,不便于理解,更难以记忆.       本文用较为直白的语言介绍范式,旨在便于理解和记忆,这样做可能会出现一些不精确的表述.但对于初学者应该是个不错的入门.我写下这

[转]数据库范式的设计

数据库范式的设计     关系数据库就是通过二维表(行和列)来保存数据. 实体:现实世界中客观存在并可以被区别的事物.比如“一个学生”.“一本书”.“一门课”等等.值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,不如说“老师与学校的关系”. 属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性.在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”. 元组:表中的一行就是一个元组. 分量:元组

数据库范式1NF 2NF 3NF BCNF(实例)通俗易懂的讲解

[转] 数据库范式1NF 2NF 3NF BCNF(实例)通俗易懂的讲解     本文对大多数初学数据库原理的同学绝对是个大福利,哈哈,完完整整的看完此篇博文一定能够清晰地理解数据库的四大范式.    不懂者留言相互讨论.     设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合.构造数据库必须遵循一定的规则.在关系数据库中,这种规则就是范式.关系数据库中的关系必须满足一定的要求,即满足不同的范式.目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF)

【转载】数据库范式那些事

数据库范式那些事 简介 数据库范式在数据库设计中的地位一直很暧昧,教科书中对于数据库范式倒是都给出了学术性的定义,但实际应用中范式的应用却不甚乐观,这篇文章会用简单的语言和一个简单的数据库DEMO将一个不符合范式的数据库一步步从第一范式实现到第四范式. 范式的目标 应用数据库范式可以带来许多好处,但是最重要的好处归结为三点: 1.减少数据冗余(这是最主要的好处,其他好处都是由此而附带的) 2.消除异常(插入异常,更新异常,删除异常) 3.让数据组织的更加和谐- 但剑是双刃的,应用数据库范式同样也

数据库范式 通俗演义

以某知名搜索引擎公司的研发工程师的一道笔试题开篇: 题目:如果关系模式R=(A,B,C,D,E)中的函数依赖集F={A→B,B→C,CE→D},这是第几范式? 答:F={A→B,B→C,CE→D},主键为(A,E),非主属性B,C,不完全依赖于码(A,E),只依赖于主键 A,因此不符合2NF.因此为1NF. 解析: 第一范式(1NF):属性不可分: 第二范式(2NF):符合1NF,有主键,非主属性完全依赖于主键,而不是依赖于部分主键属性(部分依赖): 第三范式(3NF):符合2NF,非主键不能相