MySQL 范式

在做笔试题的时候遇到一些判断范式的题,就去找了些博客与书来看,觉得这个是比较好理解的:



第一范式:确保每列的原子性.

如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式.

例如:顾客表(姓名、编号、地址、……)其中"地址"列还可以细分为国家、省、市、区等。

第二范式:在第一范式的基础上更进一层,目标是确保表中的每列都和主键相关.

如果一个关系满足第一范式,并且除了主键以外的其它列,都依赖于该主键,则满足第二范式.

例如:订单表(订单编号、产品编号、定购日期、价格、……),"订单编号"为主键,"产品编号"和主键列没有直接的关系,即"产品编号"列不依赖于主键列,应删除该列。

第三范式:在第二范式的基础上更进一层,目标是确保每列都和主键列直接相关,而不是间接相关.

如果一个关系满足第二范式,并且除了主键以外的其它列都不依赖于主键列,则满足第三范式.

为了理解第三范式,需要根据Armstrong公里之一定义传递依赖。假设A、B和C是关系R的三个属性,如果A-〉B且B-〉C,则从这些函数依赖中,可以得出A-〉C,如上所述,依赖A-〉C是传递依赖。

例如:订单表(订单编号,定购日期,顾客编号,顾客姓名,……),初看该表没有问题,满足第二范式,每列都和主键列"订单编号"相关,再细看你会发现" 顾客姓名"和"顾客编号"相关,"顾客编号"和"订单编号"又相关,最后经过传递依赖,"顾客姓名"也和"订单编号"相关。为了满足第三范式,应去掉"顾 客姓名"列,放入客户表中。

copy from:http://blog.csdn.net/jiestyle21/article/details/6201832



我理解来说,范式体现格列数据相关性的强弱,表越符合范式要求表明表的信息冗余度越小,信息越易于组织与查找。

然而,一个好的范式基本上都表示拆了很多表,在查找的时候就经常需要链表查询。太规范的范式会减小数据组织的灵活性

时间: 2024-10-20 14:30:44

MySQL 范式的相关文章

Mysql范式

什么是范式? "范式(NF)"是"符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度".很晦涩吧?实际上你可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的级别.就像家里装修买建材,最环保的是E0级,其次是E1级,还有E2级等等.数据库范式也分为1NF,2NF,3NF,BCNF,4NF,5NF.一般在我们设计关系型数据库的时候,最多考虑到BCNF就够.符合高一级范式的设计,必定符合低一级范式,例如符合2NF的关系模式,必定符合1N

mysql范式简单总结

1.第一范式 最基本的范式,数据表中每一列的属性都是单一的,不可再分!例如:顾客表(姓名.编号.地址.--)其中"地址"列还可以细分为国家.省.市.区等. 2.第二范式 确保表中每列都和主键相关 ,一个关系满足第一范式,除了主键以外其它列,都依赖该主键例如:订单表(订单编号.产品编号.定购日期.价格.--),"订单编号"为主键,"产品编号"和主键列没有直接的关系,即"产品编号"列不依赖于主键列,应删除该列. 3.第三范式 满足

MySql 详解

MySql数据库基础 MySQL各大存储引擎 MySql常用字符集 MySql支持的数据类型 MySql 枚举和集合 详解 MySql 约束条件 MySql 表操作 MySql 多表关系 MySql 范式 MySql 单表查询 MySql 多表查询 MySQL权限详解 Mysql 三大特性详解 原文地址:https://www.cnblogs.com/TMesh-python/p/11731303.html

数据库01-范式总结

数据库:文档型sqlite,服务型mysql范式:关系模式-一张表的结构 关系-一张实例化了的数据表    1NF的定义为:每个属性都不可再分    2NF:消除了非主属性对于码的部分函数依赖(非主属性不能由部分码确定,必须由全部码才能          唯一确定非主属性)    解决方法:把部分依赖的关系,形成新的表分离    进步:数据冗余过大    修改异常    3NF:消除了非主属性对于码的传递函数依赖(非主属性之间存在着主键的关系)    解决方法:直接把非主传递的属性分成新的表,在

MySql三大范式与数据库设计和表创建常用语句

[数据库设计的三大范式] 1.第一范式(1NF First Normal Fromate):数据表中的每一列(字段),必须是不可拆分的最小单元.也就是确保每一列的原子性. 例如: userInfo: '山东省烟台市 13181621008' => userAds:'山东省烟台市' tel:'13181621008' 2.第二范式(2NF):满足1NF后,要求:表中所有的列,都必须功能依赖于主键,而不能有任何一列与主键没有关系.(一张表值描述一件事情) 3.第三范式(3NF):满足2NF后,要求:

MySQL性能优化(一)-- 存储引擎和三范式

一.MySQL存储引擎 二.存储引擎如何选择 是否支持事务 检索和添加速度 锁机制 缓存 是否支持全文索引 是否支持外键 三.MyISAM和InnoDB对比 四.什么时候使用MyISAM和InnoDB MyISAM:读事务要求不高,以查询和插入为主,例如各种统计表. InnoDB:对事务要求高,保存的是重要的数据,例如交易数据,支付数据等,对用户重要的数据,建议使用InnoDB. 五.配置和数据文件 1.配置文件默认位置 Linux: /etc/my.cnf Windows: my.ini 2.

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

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

MySQL中数据中设计中的范式与反范式

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小.但是有些时候一昧的追求范式减少冗余,反而会降低数据读写的效率,这个时候就要反范式,利用空间来换时间. 目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).巴斯-科德范式(BCNF).第四范式(4NF)和第五范式(5NF,又称完美范式).满足最低要求的范式是第一范式(1NF).在第一范式的基础上进一步满足更多规范要求的称

mysql表的操作之三范式

1.mysql表的基本概念 库是存放表的容器,表是存放数据的一种容器 表是由行和列组成,在数据库中,我们定义"列"的属性.随着数据一条条的增加,"行"不断地增加 列是结构,行是信息 2.那么我们为什么要用表来存储数据呢? 表是关系型数据库的重要基础 数据越大存储管理越麻烦,非常容易导致数据出现问题:不完整.不准确.太多冗余 关系型数据库中通过表与表之间的关系解决此问题 在表的设计上满足三范式 3.第一范式 数据库表中的字段都是单一属性的,不可再分 这个单一属性由基本