数据库范式(知乎)

http://www.zhihu.com/question/24696366

数据库泛型就是数据库应该遵循的规则,也称为范式

1NF:所有的域都是原子性的,即表的每一列都是不可分割的原子数据项,不能是集合、数组、记录等非原子数据项。即实体中的某个属性有多个子属性时,必须拆分为不同的属性。第一范式是对关系型数据库的最低要求

  

2NF:在1NF的基础上,非码属性必须完全依赖于码(码:关系中的某个属性或某几个属性的组合,用于区分每个元组,元组可以理解为表中每条记录)

  1NF存在的问题:

  1)数据冗余:表中学号、姓名、系名、系主任数据冗余严重

  2)插入异常:无法插入一个没有学生的新系(主属性不能为空,码包含的属性为主属性)

  3)删除异常:删除一个系的所有学生,将导致系和系名被删除

  4)修改异常:假设李小明转系到法律系,需要修改李小明的所有三条记录

  2NF在1NF的基础上,要求非码属性必须完全依赖于码,即非码属性不能部分依赖于码

  为了消除部分函数依赖,必须将大数据表拆分成两个或更多的小数据表:

  

  形成两张表:

  

3NF:在2NF的基础上,消除了非主属性对于码的传递函数依赖

  2NF存在的问题:

  1)插入异常:无法插入一个没有学生的新系

  2)删除异常:删除所有学生将导致系消失

  在2NF中,可能存在非码属性传递函数依赖于码,如学号--系名--系主任

  为了消除传递函数依赖,需要继续拆分表:

  

  形成三张表:

  

  符合3NF要求的数据库设计,基本上解决了数据冗余过大、插入异常、删除异常、修改异常等问题

BCNF范式:

  假设:

  1. 某公司有若干个仓库

  2. 每个仓库只能有一名管理员,一名管理员只能在一个仓库中工作

  3. 一个仓库中可以存放多种物品,一种物品也可以存放在不同的仓库中。每种物品在每个仓库中都有对应的数量

  则关系模式 仓库(仓库名,管理员,物品名,数量) 属于3NF范式:

  码:(管理员,物品名),(仓库名,物品名)

  主属性:仓库名、管理员、物品名

  非主属性:数量

  非主属性完全依赖于码、同时不存在非主属性对于码的传递函数依赖,所以属于3NF范式

  

  这张表存在的问题:

  1)无法新增未指派管理员、未存放物品的仓库

  2)清空仓库会删除仓库和管理员信息

  3)仓库更换管理员,将修改该仓库的每一条记录

  造成3NF范式存在这些问题的主要原因是:存在主属性对于码的部分函数依赖或传递函数依赖:主属性仓库名 对于 码(管理员、物品)存在部分函数依赖

  BCNF在3NF的基础上消除主属性对于码的部分和传递函数依赖

  因此需要将上表拆分成两个表:

  仓库(仓库名,管理员)

  库存(仓库名,物品名,数量)

时间: 2024-08-10 02:09:49

数据库范式(知乎)的相关文章

SQL语句类别、数据库范式、系统数据库组成

前言 终于等到这一天,我要开始重新系统学习数据库了,关于数据库这块,不出意外的话,每天会定时更新一篇且内容不会包含太多,简短的内容,深入的理解. SQL语句类别 SQL语句包括以下三个类别 (1)数据定义语言(Data Definnition Language)即DDL,我们数据最终从何而来,当然首先必须得建立表,所以它包括CREATE.ALTER.DROP表. (2)数据操作语言(Data Manipulation Language)即DML,我们对数据需要进行什么操作,当然无非就是增删改查,

数据库范式 通俗演义

以某知名搜索引擎公司的研发工程师的一道笔试题开篇: 题目:如果关系模式R=(A,B,C,D,E)中的函数依赖集F={A→B,B→C,CE→D},这是第几范式? 答:F={A→B,B→C,CE→D},主键为(A,E),非主属性B,C,不完全依赖于码(A,E),只依赖于主键 A,因此不符合2NF.因此为1NF. 解析: 第一范式(1NF):属性不可分: 第二范式(2NF):符合1NF,有主键,非主属性完全依赖于主键,而不是依赖于部分主键属性(部分依赖): 第三范式(3NF):符合2NF,非主键不能相

SQL Server-语句类别、数据库范式、系统数据库组成

前言 终于等到这一天,我要开始重新系统学习数据库了,关于数据库这块,不出意外的话,每天会定时更新一篇且内容不会包含太多,简短的内容,深入的理解,Always to review the basics. SQL语句类别 SQL语句包括以下三个类别 (1)数据定义语言(Data Definnition Language)即DDL,我们数据最终从何而来,当然首先必须得建立表,所以它包括CREATE.ALTER.DROP表. (2)数据操作语言(Data Manipulation Language)即D

数据库范式-通俗讲义

国内绝大多数院校用的王珊的<数据库系统概论>这本教材,某些方面并没有给出很详细很明确的解释,与实际应用联系不那么紧密,所以学习范式的时候经常会有很多疑问.也有不少人提出各式各样的问题,现在在这里就试着解释一下吧,力图让大家轻松看明白. 首先要明白"范式(NF)"是什么意思.按照教材中的定义,范式是"符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度".很晦涩吧?实际上你可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的

数据库范式?编辑 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

数据库范式 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小. 目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).巴斯-科德范式(BCNF).第四范式(4NF)和第五范式(5NF,还又称完美范式). 第一范式(1NF) 所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,

数据库范式以及ER图

数据库范式包括第一.第二.第三以及BCNF范式,关于范式的探讨,博主在知乎上看见了一篇很不错的文章,分享文中,这边就不再做阐述.地址:https://www.zhihu.com/question/24696366 在这边列出一些数据库的定义: 1.关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型.关系模型是由若干个关系模式组成的集合.2.关系模式:关系模式实际上就是记录类型.它包括:模式名,属性名,值域名以及模式的主键.关系模式仅是对数据特性的描述.3.关系实例:就是

数据库范式的设计

数据库范式的设计     关系数据库就是通过二维表(行和列)来保存数据. 实体:现实世界中客观存在并可以被区别的事物.比如"一个学生"."一本书"."一门课"等等.值得强调的是这里所说的"事物"不仅仅是看得见摸得着的"东西",它也可以是虚拟的,不如说"老师与学校的关系". 属性:教科书上解释为:"实体所具有的某一特性",由此可见,属性一开始是个逻辑概念,比如说,&qu

数据库范式那些事

转载至:http://www.cnblogs.com/CareySon/archive/2010/02/16/1668803.html 简介 数据库范式在数据库设计中的地位一直很暧昧,教科书中对于数据库范式倒是都给出了学术性的定义,但实际应用中范式的应用却不甚乐观,这篇文章会用简单的语言和一个简单的数据库DEMO将一个不符合范式的数据库一步步从第一范式实现到第四范式. 范式的目标 应用数据库范式可以带来许多好处,但是最重要的好处归结为三点: 1.减少数据冗余(这是最主要的好处,其他好处都是由此而

一看就懂的数据库范式介绍(1NF,2NF,3NF,BC NF,4NF,5NF)

原文:http://josh-persistence.iteye.com/blog/2200644 一.基本介绍 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小. 目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).巴斯-科德范式(BCNF).第四范式(4NF)和第五范式(5NF,又称完美范式).满足最低要求的范式是第一范式(1NF).在第一范式的基础上进一步满足更

MYSQL学习笔记——数据库范式及MYSQL优化整体思路

一.数据库范式                                                                               为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 1.1.第一范式(1NF:每一列不可包含多个值)      所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列