对于数据库的三大范式的疑惑

对应于第三范式的定义是翻译成程序猿更易理解的话:一个表中的所有的非主键字段都不传递依赖于主键字段。

举个栗子:

  学生表的设计:student(sno, sname, dno, dname, dlocation)(学号,学生姓名,系名,系地址),其中 sno->dno->dname->dlocation,所以就不符合第三范式。官方的说明是:但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。所以就拆成两个表,student(sno, sname, dno) department(dno, dname, dlocation)

  但是我觉得现在存储设备这么便宜的环境下,数据冗余应该不是考虑的。那要查询的时候就得连表了,这样是不是又会导致新的损耗呢?这是我不能理解的。为什么就不能将这两个表中的字段合合在一张表里面那么查询的时候就根据一个主键就将所有的信息全部查出来了。

  如果俩表合为一表。在插入更新时,就会导致冗余的字段插入,这也是对网络资源的一种损耗。也是不得不考虑的。但是如果把这种表就是专门作为查询用的,那不使用第一范式,而是使用第二范式,那是不是在实际的业务领域能够快速得到响应呢,这也是我的疑惑。

  ps:工作刚满一年,上班时无聊想到的,第一篇博文,希望没有贻笑大方,希望得到各位指点。谢谢

时间: 2024-10-06 09:04:57

对于数据库的三大范式的疑惑的相关文章

数据库的三大范式

今天给大家介绍一下数据库的三大范式!        如图:                                                                        什么是数据库范式呢? 简言之就是数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系.所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式.在关系型数据库中这些规范就可以称为范式.为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中

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

                         数  据   库      今天小编来讲一下数据库的相关知识点,数据库的三大特性可谓是:实体属性和关系. 实体:表: 属性:表中的数据(字段): 关系:表与表之间的关系: 数据库设计三大范式(重点): 第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性: 例如:userInfo:山东省烟台市  131777368781           userAds:山东0省烟台市  userTel:13177

[转]数据库设计三大范式

http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html 数据库设计三大范式 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 在实际开发中最为常见的设计范式有三个: 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数

mysql-(三)-数据库设计三大范式

一.数据库设计在业务流程的位置 需求分析时要将原始的需求抽象成业务模型 写成需求说明书 <需求说明书> 概要设计 抽取实体  :  业务模型  ->   实体模型 (java类) 数据库设计  : 业务模型/实体模型  ->  数据模型 详细设计 ... 二.数据库设计的三大范式 第一范式:要求表的每个字段必须是不可分割的独立单元 反例 如: student 名字有曾用名和现在的名字 student name 小王|小明 查询不便 ====违法第一范式 student name o

数据库的三大范式与三大完整性

因为数据库中实体之间的联系其实说穿了是数据,数值之间的联系,而这个关系如何定义就会严格影响到以后我们操作数据的效率和·准确性. 于是有了很多范式,其中三大范式最为重要. 在满足第三范式前必须满足第二范式,满足第二范式前必须先满足第一范式. 第一范式(INF)所有属性是不可分割的原子值 例如:成绩这一列的某一行:70,80,90 因为内容是可以分割的,所以不满足第一范式 第二范式(2NF)非主属性非部分依赖于主关键字 直白的说就是:所有数据必须都要依赖于主键. 第三范式(3NF)要求一个数据库表中

数据库的三大范式和五大约束(转)

一.三大范式: 1. 第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性: 2. 第二范式(2NF):满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情 3. 第三范式(3NF):必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键). 总结: 第一范式和第二范式在于有没有分出两张表,第二范式是说一张表中包含了所种不同的实体属性,那么

[转载]数据库的三大范式详解

数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息. 范式说明 1.1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性.如果出现重复的属性,就可能需要定义一

数据库设计三大范式应用实例剖析

引言 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息. 设计范式是不是很难懂呢?非也,大学教材上给我们一堆数学公式我们当然看不懂,也记不住.所以我们很多人就根本不按照范式来设计数据库. 实质上,设计范式用很形象.很简洁的话语就能说清楚,道明白.本文将对范式进行通俗地说明,并以

[数据库设计]数据库设计三大范式

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