数据库三大范式另一角度的理解

1.第一范式

  在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 
      数据库表中的字段都是单一属性的,不可再分。

2.第二范式

  在第一范式的基础上。

  第二范式(2NF):数据库表不存在非关键字段中对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有   非关键字段都完全依赖于任意一组候选关键字。

假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分),关键字为组合关键字(学号, 课程名称),因为存在如下决定关系: 
    (学号, 课程名称) → (姓名, 年龄, 成绩, 学分)

这个数据库表不满足第二范式,因为存在如下决定关系: 
    (课程名称) → (学分) 
    (学号) → (姓名, 年龄) 
    即存在组合关键字中的字段决定非关键字的情况。

  多对多的关系表内不要添加其中一张表的其他属性,如关联表user_org(uid,oid,uname,oname)内除了用户id,组织id外还添加了用户姓名,组织名称等属性。

3.第三范式

 在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。

假定学生关系表为Student(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话),关键字为单一关键字"学号",因为存在如下决定关系: 
    (学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话)

这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系: 
    (学号) → (所在学院) → (学院地点, 学院电话) 
    即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。

  一对多的数据库表设计时(一个组织有多人,一个人只属于一个组织)只保存组织的id,不保存组织的其他属性。如:user(id,name,age,oid),user内如果添加org_name,那么就不符合第三范式。

时间: 2024-12-29 23:44:04

数据库三大范式另一角度的理解的相关文章

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

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

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

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

数据库三大范式及事务

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

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

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

数据库三大范式通俗理解

数据库有三大范式. 范式的英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法.目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF.通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2NF),第三范式(3NF).数据往往种类繁多,而且每种数据之间又互相关联,因此,在设计

数据库 三大范式 通俗解释

一.三大范式通俗解释: (1)简单归纳: 第一范式(1NF):字段不可分: 第二范式(2NF):有主键,非主键字段依赖主键: 第三范式(3NF):非主键字段不能相互依赖. (2)解释: 1NF:原子性. 字段不可再分,否则就不是关系数据库;: 2NF:唯一性 .一个表只说明一个事物: 3NF:每列都与主键有直接关系,不存在传递依赖. 二.例子说明 (1)不符合第一字段的例子 表:字段1, 字段2(字段2.1,字段2.2), 字段3 字段2可以拆分成字段2.1和字段2.2,不符合第一范式. (2)

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

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

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

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

数据库三大范式整理

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