范式(normal form)
发布日期:2021-06-29 06:55:42 浏览次数:2 分类:技术文章

本文共 1455 字,大约阅读时间需要 4 分钟。

范式简介

范式是设计数据库结构中所要遵循的规则和指导方式。表示的是关系模式的规范化程度,满足最低要求的范式是第一范式,在第一范式的基础上进一步满足更多的要求称第二范式。

目前8种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)【最常用的三种】、BC范式(BNF)、第四范式(4NF)、第五范式(5NF)、DK范式(DKNF)、第六范式(6NF)。

在讲解范式之前,首先要了解数据依赖,数据依赖分为函数依赖和多值依赖。属性间的数据依赖不是抽象的规则集决定,而是由假设、用户意识中的模型和数据库开发人员的事物规则决定的,是数据库的基本语义决定的。

范式的优点:范式的主要目标是减少冗余(解决重复的数据和增加程序操作的复杂性)。

范式的缺点:

1、性能问题:利用范式的时候,数据被拆分在不同的表中,如果需要查找一条数据的时候,需要对几个表进行处理。这会降低速度。

2、计算机负担问题:由于数据是非冗余存放,数据汇总操作的结果一般不会放置在数据库中,而是需要的时候在计算。这会增加了系统的计算负担。

3、历史数据问题。数据会被更新的情况。

反规范:

反规范的唯一原因是提高数据系统的性能,但是要考虑到数据冗余,保证冗余更新时的一致性和正确性。

函数依赖与数值依赖

1、函数依赖:给定一个属性的值,另一个属性的值就确定。

比如:职工关系(职工号,姓名,性别,年龄,职务)

           职工号---姓名,性别,年龄,职务

2、平凡的函数依赖与非平凡的函数依赖

平凡的函数依赖(X函数不包含Y函数):(职工号,性别)--职工号 ,(职工号,性别)--性别

非平凡的函数依赖(X函数包含或等于Y函数):(职工号,姓名)--性别

3、完全函数依赖和部分函数依赖

对于X-Y,并且对于X的如何真子集都推不出Y,则称Y完全函数依赖于X,否则Y部分依赖于X。

比如(学号,课程号)--分数,(学号,课程号)--所在系

4、传递函数依赖

X函数可以推出Y函数,Y函数可以推出Z,且X不包含Y,Y也不能决定X,则称Z传递函数依赖X。

多值依赖

对于一个属性值,另一个属性有多个值与其对应。(一个课程号有多个任课老师和它对应)。

范式

第一范式:

要求数据表中任两个属性都不能表达同质事物,每个记录的每个属性都是不可分割的基本数据项,即都只能存放单一标量值而不是向量值,而且每笔记录都能利用一个唯一的主键来加以识别以保证每条记录都互不相同。

第一范式常犯的错误:缺乏唯一识别码(主键)

                                  单一属性(字段)中存放多个有意义的值(是向量值,不是单一标量值)

                                 用多个属性(字段)来表达同一个事实(同事物属性问题)

   第二范式:

第二范式是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式。若关系模式R属于第一范式,且关系模式R的每个非主属性完全函数依赖于码,则R也属于第二范式。

第二范式的优点:避免数据冗余、更新异常、插入异常、删除异常等特点。

整理成第二范式的方法:把第一范式的每个非主属性部分函数依赖于码分开成两个或者两个以上的表,使得其符合第二范式。

第三范式:

在满足第二范式的基础上,若关系模式中所有非主属性完成函数依赖于码且不传递依赖码,则称R属于第三范式。

  常见的不满足第三范式的情况:学生(学号,课程号,系号,系名,系地址),在这个关系模式中,学号可以推出系号,系号推不出学号,系号可以推出系地址,所有学号可以推出系地址。所以不直接决定非主属性系地址。

整理成第二范式的方法:分解成两个关系模式,使其满足第三范式。

转载地址:https://blog.csdn.net/zhydream77/article/details/80387578 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:数据库设计
下一篇:关系数据库

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月22日 06时53分29秒