形象了解关系型数据库三大范式

接下来就对每一级范式进行一下解释,首先是第一范式(1NF)。
符合1NF的关系(你可以理解为数据表。“关系”和“关系模式”的区别,类似于面向对象程序设计中”类“与”对象“的区别。”关系“是”关系模式“的一个实例,你可以把”关系”理解为一张带数据的表,而“关系模式”是这张数据表的表结构。1NF的定义为:符合1NF的关系中的每个属性都不可再分。表1所示的情况,就不符合1NF的要求。

表1

实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBMS),例如SQL Server,Oracle,MySQL中创建数据表的时候,如果数据表的设计不符合这个最基本的要求,那么操作一定是不能成功的。也就是说,只要在RDBMS中已经存在的数据表,一定是符合1NF的。如果我们要在RDBMS中表现表中的数据,就得设计为表2的形式:

表2

但是仅仅符合1NF的设计,仍然会存在数据冗余过大,插入异常,删除异常,修改异常的问题,例如对于表3中的设计:

表3

注…………

  1. 每一名学生的学号、姓名、系名、系主任这些数据重复多次。每个系与对应的系主任的数据也重复多次——数据冗余过大
  2. 假如学校新建了一个系,但是暂时还没有招收任何学生(比如3月份就新建了,但要等到8月份才招生),那么是无法将系名与系主任的数据单独地添加到数据表中去的 (注1)——插入异常

    注1:根据三种关系完整性约束中实体完整性的要求,关系中的码(注2)所包含的任意一个属性都不能为空,所有属性的组合也不能重复。为了满足此要求,图中的表,只能将学号与课名的组合作为码,否则就无法唯一地区分每一条记录。

    注2:码:关系中的某个属性或者某几个属性的组合,用于区分每个元组(可以把“元组”理解为一张表中的每条记录,也就是每一行)

  3. 假如将某个系中所有学生相关的记录都删除,那么所有系与系主任的数据也就随之消失了(一个系所有学生都没有了,并不表示这个系就没有了)。——删除异常
  4. 假如李小明转系到法律系,那么为了保证数据库中数据的一致性,需要修改三条记录中系与系主任的数据。——修改异常

正因为仅符合1NF的数据库设计存在着这样那样的问题,我们需要提高设计标准,去掉导致上述四种问题的因素,使其符合更高一级的范式(2NF),这就是所谓的“规范化”。

时间: 2024-11-03 05:25:45

形象了解关系型数据库三大范式的相关文章

关系型数据库三大范式

基础概念:关键字.主关键字.候选关键字,非关键字 如果某个字段或多个字段的值可以唯一地标识一条记录,则该字段或字段组就称为关键字.如果一个关键字是用以标识每条记录的唯一性,并作为该表与其他表实现关联之用,则称其为主关键字(主键,primary key)或主码.除主关键字以外的其他关键字称为候选关键字. 除关键字意外的字称为非关键字 例如,有一个表字段为:id  firstname lastname address phone IDcard那么id或IDcard或firstname+lastnam

数据库三大范式及事务

数据库三大范式 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 在实际开发中最为常见的设计范式有三个: 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 第一范式的合理遵循需要根据系统的实际需求来定.比如某些数据库系统中需要用到"地址"这个属性,本来直

数据库三大范式最简单的解释

关系数据库中的关系必须满足一定的要求,即满足不同的范式.目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).第四范式(4NF).第五范式(5NF)和第六范式(6NF).满足最低要求的范式是第一范式(1NF).在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推.一般说来,数据库只需满足第三范式(3NF)就行了. 很多资料上的范式都讲的很难理解,这里总结一下三大范式,便于读者简易的理解. 1NF:字段是原子性的,不可分; 2NF:有主键,

数据库三大范式,我的理解

数据库三大范式,我之前是知道的,但是内容比较文绉绉,初学的时候不容易把握其根本. 首先是第一范式: 有主键,且数据库表的每一列都是不可分割的原子数据项.也可以理解为:无重复的列. 其实这句话的本质是控制字段的颗粒度(也许不该用这个词).这个地方的无重复和不可分割是什么意思呢?其实是这样的.首先如果有两个字段,一个叫籍贯,一个叫家乡,是不是就有点蠢?(这个地方不考虑其区别的话). 对重复的第一层理解是有两个字段其实是描述同样的东西,如果表格这么设计了,势必会导致数据的冗余. 第二层理解是,字段也许

数据库三大范式和反范式 · oldmee

后一个范式都是在满足前一个范式的基础上建立的. 1NF 无重复的列.表中的每一列都是不可分割的基本数据项.不满足1NF的数据库不是关系数据库.如联系人表(姓名,电话),一个联系人有家庭电话和公司电话,则不符合1NF,应拆分为(姓名,家庭电话,公司电话). 2NF 属性完全依赖于主键.不能存在仅依赖于关键一部分的属性.如选课关系(学号,课程名称,成绩,学分),组合关键字(学号,课程名称)作为主键.其不满足2NF,因为存在决定关系:课程名称->学分,即存在组合主键中的部分字段决定非主属性的情况.会导

数据库三大范式整理

数据库设计三大范式 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 在实际开发中最为常见的设计范式有三个: 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 第一范式的合理遵循需要根据系统的实际需求来定.比如某些数据库系统中需要用到"地址"这个属性,本

数据库三大范式及五大约束

数据库的三大范式以及五大约束                                                                     数  据   库      今天小编来讲一下数据库的相关知识点,数据库的三大特性可谓是:实体属性和关系.      实体:表: 属性:表中的数据(字段): 关系:表与表之间的关系:     第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性:                      

第五章 SqlServer之数据库三大范式

分析: 数据库设计应遵循三大范式分别为: 第一范式:确保表中每列的原子性(不可拆分): 第二范式:确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对联合主键),主键列与非主键列遵循完全函数依赖关系(完全依赖): 第三范式:非主键列之间没有传递函数依赖关系(消除传递依赖): 详述: 第一范式 需求描述:数据库系统中需要一个实体表,该表用来存储用户信息,其中"地址"这个属性,要求查询到省份.城市和详细地址. 例子:信息如下: 姓名:张红欣:性别:男:  年龄:26岁:年龄:26岁

关系型数据库设计范式

范式: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小. 首先要明白”范式(NF)”是什么意思.按照教材中的定义,范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”.很晦涩吧?实际上你可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的级别. 就像家里装修买建材,最环保的是E0级,其次是E1级,还有E2级等等.数据库范式也分为1NF,2NF,3NF,BCN