我在很久之前的一篇文章中介绍了数据库模型设计中的基本三范式,今天,我来说一说更高级的BC范式和第四范式. 回顾 我用大白话来回顾一下什么是三范式: 第一范式:每个表应该有唯一标识每一行的主键. 第二范式:在复合主键的情况下,非主键部分不应该依赖于部分主键. 第三范式:非主键之间不应该有依赖关系. 这是我们设计数据库的基本规则,但是只有这三个规则并不能完全解决数据的增删改的异常情况,下面就来看看BC范式的例子. BC范式 BC范式(BCNF)是Boyce-Codd范式的缩写,其定义是:在关系模式中…
数据库的规范化(上一篇博客有写到)的程度不同,便有了这么多种范式.数据库范式是数据库设计必不可少的知识,没有对范式的理解,就无法设计出高效率.优雅的数据库,甚至设计出错误误的数据库.课本中的定义比较抽象,不太直观,也不易理解,记是肯定记不住的. 关系数据库 常用范式 关系数据库知道了,再来理解范式.范式是关系数据库关系模式规范化的标准,从规范化的宽松到严格,分为不同的范式,通常使用的有第一范式.第二范式.第三范式及BC范式.范式是建立在函数依赖基础上的. 函数依赖 如果一个表中某一个字段Y的值是…
数据库设计的定义:规划数据库中数据对象以及之间关系的过程. 为什么进行数据库设计? 空间 完整性 程序开发 数据库设计前提知识: 范式: 1NF:第一范式 第一范式的目标是确保每列的原子性 如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF) 2NF:第二范式 如果第一个关系满足1NF,并且除了主键以外的其他列,都依赖于该主键,则满足第二范式(2NF) 第二范式要求每个表只描述一件事情 3NF:第三范式 如果一个关系满足2NF,并且除了主键以外的其他列不传递依赖于…
数据库设计有1NF.2NF.3NF.BCNF.4NF.5NF.从左往右,越后面的数据库设计范式冗余度越低. 满足后一个设计范式也必定满足前一个设计范式. 1NF只要求每个属性是不可再分的,基本每个数据库都会满足. 2NF要求每个联系都满足完全依赖,不能存在部分决定(partial dependency). 例如,某关系R有6个属性:ABCDEG,满足的函数依赖(functional dependency)为: F = {A->B, B->C, AD->G, D->E} 可以看出,其…
一讲到数据库设计,大家很容易想到的就是三范式,但是第四.第五范式又是什么,不是很清楚,三范式到底怎么区分,也不清楚,作为数据库设计的基础概念,我再讲解下数据库范式.   Normal form Brief definition 1NF First normal form Table faithfully represents a relation, primarily meaning it has at least one candidate key 2NF Second normal form…
关系型数据库将数据库设计需要遵循的一些规则叫做“范式”,最基本的三个范式(1NF.2NF.3NF)简称三范式.第一范式是满足第二范式的基础,而第一.二范式又是满足第三范式的基础. 第一范式 表中的字段都是不可分解的原子性: 数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项.如果实体中的某个属性有多个值时,必须拆分为不同的属性 第二范式 首先要满足第一范式,然后确定非主键的属性要完全依赖于主键: 当表中的一个非主键的属性可能是一个独立的对象时,就不满足第二范式:如产…
[数据库设计的三大范式] 1.第一范式(1NF First Normal Fromate):数据表中的每一列(字段),必须是不可拆分的最小单元.也就是确保每一列的原子性. 例如: userInfo: '山东省烟台市 13181621008' => userAds:'山东省烟台市' tel:'13181621008' 2.第二范式(2NF):满足1NF后,要求:表中所有的列,都必须功能依赖于主键,而不能有任何一列与主键没有关系.(一张表值描述一件事情) 3.第三范式(3NF):满足2NF后,要求:…
一.什么是范式 1.1.范式:Normal Format,是离散数学的知识,是为了解决数据的存储与优化而提出来的.要求存储数据后,凡是能够通过关系寻找出来的数据,坚决不再重复存储,终极目标是为了减少数据的冗余. 1.2.范式是一种分层的规范,分为6层,每一层都比上一层更加严格,若要满足下一层范式,前提是满足上一层范式.6层范式:1NF,2NF...6NF:1NF是最底层,要求最低,6NF最高层,要求最严格. 1.3.mysql属于关系型数据库,有空间浪费,表设计时也要致力于节省存储空间.这与范式…
zsql user/pasword@ip:port -c "show databases" # 展示一条sql语句 spool file_path 指定输出文件 可以为相对路径 spool off 保存执行结果 并关闭输出流 gsql 配置数据库服务器 gs_guc reload -Z coordinator -N NodeName -I all -C "listen_address = 'localhost,192.126.0.100,10.11.12.13'"g…
数据库设计范式是一个很重要的概念,但是这个重要程度只适合于参考.使用数据库设计范式,可以让数据表更好的进行数据的保存,因为再合理的设计,如果数据量一大也肯定会存在性能上的问题.所以在开发之中,唯一可以称为设计的宝典 —— 设计的时候尽量避免日后的程序出现多表关联查询. 一.第一范式 所谓的第一范式指的就是数据表中的数据列不可再分. 例如,现在有如下一张数据表: CREATE TABLE member ( mid NUMBER PRIMARY KEY, name VARCHAR2(200) NOT…