`
txf2004
  • 浏览: 6870511 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL的范式理论

 
阅读更多

还说七期的师哥师姐给我们讲课。当时说到了数据库的三范式理论,听得时候听明白了,课下自己总结了一下。

其实,数据库的范式理论无非是为了节省资源,就是在保证数据完整性的前提下最大程度上减小数据的冗余程度。而数据库三范式也是前人经过多次的经验总结出来的,觉得数据库在这样的设计规则下会在数据完整性和占用数据资源两者之间取得一个较好的平衡。

下面通过例子来认识一下数据库三范式理论:

第一范式:

第一范式是指数据库表的每一列都是不可分割的基本数据项,同一列的中不能哟多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。第一范式包括下面的指导性原则:

1、 数组的每个属性只能包含一个值

2、 关系中的每个数组必须包含相同数量的值

3、 关系中的每个数组一定不能相同

例如下面的这个关系就是不符合第一范式的

学生姓名

性别

入学时间

张三

2005年

李四

2005年

赵武

王六

2006年

江涛

2009年

大家看上边的图是不是觉得很别扭呢,对,第三行里面有两个学生姓名。不必担心,因为我们在sql server中建表的时候绝对不会出现这种情况的,所以你大可不必担心自己设计出来的表不符合第一范式。那么正确的表的关系应该是下面这样的:

学生姓名

性别

入学时间

张三

2005年

李四

2005年

赵武

2006年

王六

2006年

江涛

2009年

第二范式:

如果一个数据表已经满足第一范式,而且该数据表中的任何一个非主键字段的数值都依赖于该数据表的主键字段,那么该数据表满足第二范式。

例如下面的表:

项目编号

名称

负责人

负责人部门

1

项目1

张涛

项目部

2

项目2

王明

建材部

3

项目3

张红

业务部

我们一个一个的来看,项目编号显然是主键字段,根据项目编号可以推出项目名称,可以推出项目负责人,但是根据项目编号不能推出项目负责人部门,所以上面的表是不符合第二范式的。接下来我们把上面的表拆成两个符合第二范式的表

项目编号

名称

负责人

1

项目1

张涛

2

项目2

王明

3

项目3

张红

负责人

负责人部门

张涛

项目部

王明

建材部

张红

业务部

第三范式

如果一个数据表已经满足第三范式,而且该数据表中的任何两个非主关键字段的数据值之间不存在函数信赖关系,那么该数据表满足第三范式,即3NF。

大家可以看下面的表格

编号

姓名

性别

工资

奖金

1

王鹏

8000

800

2

张红

7700

770

假如公司有这样的规定:工资的百分之十作为奖金发放给员工,那么上面的表的设计就不符合第三范式了。

从第三范式的定义我们可以看出,根据工资可以推出奖金的多少,所以工资和奖金之间是存在函数信赖关系的。但是可能就有这样的疑问了,我要是根据姓名还能推出性别呢,这怎么办呢?试想一下,如果没有员工的基本信息表你能根据姓名推出性别吗?也就是说我们数据的根源信息都不知道,你怎么推出其他的信息,也可以理解为上面的表格就是我们刚刚说到的“根源信息”。

我是这么理解的,不知道大家对上面的理解有什么疑问,请多多指教!

分享到:
评论

相关推荐

    SQL数据库关系模式理论对范式的理解

    第一范式:在关系集合r中,所有属性都是不可分割的 第二范式:所有非主属性完全依赖于码(在属性集合中分为主属性和非主属性,其中,若是K->U,则K为R的候选码,若候选码多余一个,则选择其中一个为主码

    SQL 2008 完全学习手册 案例源文件

    第一篇 SQL Server基础知识篇 第1章SQL Server入门知识 1.1 数据库 ...1.3 范式理论 1.3.1 第一范式 1.3.2 第二范式 1.3.3 第三范式 1.4 E-R模型 1.4.1 实体模型 1.4.2 关系模型 1.5 SQL Server体系结构 ...

    Microsoft SQL Server 2008技术内幕:T-SQL查询(第二卷)

    主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...

    SQLServer2008技术内幕T-SQL查询包含源代码及附录A

    主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...

    SQL Server 2008数据库设计与实现

    通过将理论融入数据库实践,清晰地讲解了关系型数据库的设计原则,完整地展示了如何进行良好的关系型数据库设计,深入揭示了SQL Server 2008的技术细节。  本书浓缩了作者作为SQL Server数据库架构师多年来丰富的...

    Microsoft+SQL+Server+2008技术内幕:T-SQL查询_源代码及附录 中文版

    主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...

    SQL数据库系统原理(二)———乐观锁与悲观锁、MVCC、范式理论、SQL和NoSQL比较

    封锁的类型以及粒度,两段锁协议,隐式和显式锁定 封锁类型有两种:读写锁和意向锁 读写锁分类读锁(s锁)和写锁(x锁)。 对象加了写锁,可以更新与读取,不能加其他锁。 对象加了读锁,只能读取,可以加读锁 ...

    Sql Server 2008 数据库课设报告(图书管理系统)

    要求数据表设计要合理,要符合数据库设计的理论范式,对数据表设计作必要的说明并抓图。 数据表名必须与自己真实姓名有关,所有同学不能同名。 3.视图设计 要求根据系统需求作必要的视图设计,如在一次查询中涉及到...

    详解MySQL 数据库范式

    前言: 关于数据库范式,时常有听说过,一直没有详细去了解。一般数据库书籍或数据库课程会介绍范式相关内容,范式也经常出现在数据库考试题目中。不清楚你是否对范式有比较清晰的...范式是关系数据库理论的基础,也

    MySQL之范式的使用详解

    范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一...

    深度探索关系数据库_实践者的关系理论.zip

    关系数据库理论探讨与研究,关系模型与SQL理论研究,内含有中英文两册,格式均为pdf,五十个字依旧麻烦,不知道怎么说了

    数据库范式设计实验报告.doc

    中国海洋大学实验报告 年 月 日 姓名 系年级 2012级 专业 计算机学号 科目 数据库 题目 通过实验体会关系数据理论,函数依赖以及范式。 实验要求 1. 设计一个关系,使之满足2NF而不满足3NF; 设计一个关系,使之满足...

    数据库范式解析,看了秒懂

    本章主要讲了第六章关系数据库理论的基本概念以及大题解题方法,本章分值是除了SQL以外最高的,但相对好拿分。涉及的题型有闭包运算、求取候选码、范式的判断与分解、求最小函数依赖集、无损连接的判断、分解3NF;

    基于SqlServer2012+Flask+VUE3的电费收费管理系统说明书

    可以将所学的相关技术和框架应用到一个小型项目中,通过实践进一步巩固理论知识,并提高项目开发能力和水平。 本项目采用Vue框架在前端,Flask框架在后端,axios进行API交互,SqlServer作为数据库。前端使用Element UI...

    数据库原理测试题.docx

    范式理论: 考察测试对象是否了解数据库范式的概念,能够解释不同范式的优缺点,并在设计中应用。 事务处理和并发控制: 测试对象可能会面临有关事务处理和并发控制的问题,包括事务的特性、ACID 属性,以及并发...

    中北大学数据库概论实验报告五( 关系模式优化-设计型实验)

    (2)能够应用范式理论以及关系分解算法设计满足3NF的关系模型,为后续实验打好基础。3.实验内容依据关系模式分解算法设计满足3NF的关系模式,熟练掌握SQL数据查询和数据定义语句,编写相关SQL语句验证所设计的关系...

    数据库原理考试选择题95题及答案

    涵盖数据库基本概念,关系数据库理论,概念设计,逻辑设计,物理设计,范式理论,SQL语言等全部章节内容

    HCIA-GaussDB培训视频教程【共25集】.rar

    目录: 网盘文件永久连接 1.1.1 数据库介绍上 2.1.2 数据库介绍下 3.2.1 数据库基础知识 4.2.2 数据库运维 5.2.3 数据库基础知识 ...23.7.2 范式理论 24.7.3 数据库设计下 25.8.1 华为GaussDB数据库

    mysql面试题文档,主要讲述了一些数据库的基本理论

    SQL语句:熟练掌握SQL语言是MySQL面试的重要内容,包括查询语句、插入语句、更新语句、删除语句等常用操作。 索引和查询优化:理解索引的作用和原理,掌握查询优化的方法和技巧,能够根据查询需求选择合适的索引类型...

Global site tag (gtag.js) - Google Analytics