数据库结构设计

范式

设计数据库的规范 第12345范式,凡是之间有依赖关系。

关系模型的发明者埃德加·科德最早提出这一概念,并于1970

年代初定义了第一范式、第二范式和第三范式的概念

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,不同的规范要求被称为不同范

式,各种范式呈递次规范,越高的范式数据库冗余越小

第一范式 1NF

  • 没有重复的列,每一列都是不可分割的基本数据项
  • 同一列里不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,确保每一列的原子性。

说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库

多个主键组合起来的,称为复合主键

复合主键违反了第二范式

第二范式

  • 属性完全依赖于主键,
  • 第二范式必须先满足第一范式,
  • 要求表中的每个行必须可以被唯一地区分,
  • 通常为表加上每行的唯一标识PK,
  • 非PK的字段需要与整个PK有直接相关性 重点在整个!

第三范式

  • 属性不依赖于其它非主属性,满足第三范式必须先满足第二范式。
  • 第三范式要求一个数据表中不包含已在其它表中已包含的非主关键字信息
  • 非PK的字段间不能有从属关系

范式得意义

  • 好处

    1.范式越多,数据库设计约严谨

    2.范式越多,空间越节约
  • 带来的问题

    1.复杂性越高

    2.效率越低

达到第三范式生产中就够用了,第四第五范式生产中很少用到

学习范式就是为了违反范式,追求高性能,故意违反范式


第四范式

巴斯-科德范式(BCNF)

Boyce-Codd Normal Form(巴斯-科德范式)

在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)

巴斯-科德范式(BCNF)是第三范式(3NF)的一个子集,即满足巴斯-科德范式(BCNF)必须满足第三范式(3NF)。通常情况下,巴斯-科德范式被认为没有新的设计规范加入,只是对第二范式与第三范式中设计规范要求更强,因而被认为是修正第三范式,也就是说,它事实上是对第三范式的修正,使数据库冗余度更小。这也是BCNF不被称为第四范式的原因。某些书上,根据范式要求的递增性将其称之为第四范式是不规范,也是更让人不容易理解的地方。而真正的第四范式,则是在设计规范中添加了对多值及依赖的要求。

第五范式

第五范式是指关系模式R依赖均由R候选码所隐含。 这都开始不说人话了

MySQL数据库基础-2范式的更多相关文章

  1. mysql数据库基础的简单操作指南

    最近在学习mysql,本文是做的关于mysql学习的笔记,跟大家分享一下,希望对大家学习mysql知识有所助益.mysql现在几乎已经成了网站建设的主流数据库,很多php网站系统都采用了mysql数据 ...

  2. MySQL数据库基础

    MySQL数据库基础 本文的所有操作是基于CMD环境,MySQL通过在命令行中输入SQL语句对数据库进行操作.配置问题可参考<打通MySQL的操作权限>中的内容,该文算是针对前期的环境配置 ...

  3. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  4. Mysql数据库基础操作

    Mysql数据库基础操作 在mysql数据库中开启使用tab键补全功能 1)修改主配置文件/etc/mysql/my.cnf(mysql和mariadb目录有些不同) vim /etc/mysql/m ...

  5. mysql数据库基础-2019-9-10(随堂笔记)

    mysql数据库基础 在cmd情况下启动mysql数据库:(配置path环境变量后可忽略) 运行mysql1. 进入mysql路径2. 执行:mysql -uroot -p,安装时的密码 1.数据库& ...

  6. php面试专题---15、MySQL数据库基础考察点

    php面试专题---15.MySQL数据库基础考察点 一.总结 一句话总结: 注意:只写精品 1.mysql定义int(3),那么我存1234就错了么? 不是:无影响:只会影响显示字符的个数:可以为整 ...

  7. PHP面试 MySQL数据库基础

    MySQL数据库基础 MySQL数据类型 整数类型:TINYINT   SMALLINT   MEDIUMINT   INT   BIGINT 属性:UNSIGNED 长度:可以为整数类型指定宽度,列 ...

  8. MySQL数据库--基础简述

    MySQL数据库--基础简述 1.15.1 MySQL简介 Mysql是最流行的RDBMS(Relational Database Management System:关系数据库管理系统),特别是在W ...

  9. MySQL数据库基础知识及优化

    MySQL数据库基础知识及优化必会的知识点,你掌握了多少? 推荐阅读: 这些必会的计算机网络知识点你都掌握了吗 关于数据库事务和锁的必会知识点,你掌握了多少? 关于数据库索引,必须掌握的知识点 目录 ...

随机推荐

  1. Java面试知识点1

    typora-root-url: ......\Software\Typora\Picture Bean的作用域 在Spring的元素的scope属性设置bean的作用域,用来决定bean是单实例还是 ...

  2. springboot之logback配置

    参考了https://blog.csdn.net/hxtxgfzs/article/details/79488163 Spring Boot默认情况下,当使用"Starters" ...

  3. pytest自学第二期

    2.1 通过python解释器调用 pytest 我不知道有什么用:-) 以后就这样,如果有自己学过但是不知道的东西,就挂在那里晒着鞭尸,一直不会就一直鞭尸,直到自己参透了其中的道理再回到这里补全 在 ...

  4. 理解 JAVABEAN EJB POJO

    <Spring实战>第一章:基本理念.各类名称熟语 POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混 ...

  5. linux目录的含义

    /bin (binary)存放linux系统必备执行的命令. /boot存放linux的启动文件和内核 /cdrom存放光驱文件系统的目录,刚安装系统时此文件夹是空的. /dev device存放li ...

  6. (转)Java中的值传递和引用传递

    Java中的值传递和引用传递 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?     答:是值传递.Java 编程语言只有值 ...

  7. mysql及联合查询

    SQL语句分类 DDL 数据库定义语言 定义数据库对象 create alter truncate drop TPL 事务处理语言 rollback commit DCL 数据控制语言 由 GRANT ...

  8. mac电脑,charles,安卓手机如何配置代理,以及配置代理之后无法上网。已解决

    设备: 电脑:mac book pro 手机:小米10 charles:4.5.6 方法一: 步骤: 首先确保电脑,手机在同一局域网, 1. charles设置代理:proxy -> proxy ...

  9. Filecoin: 挖矿流程扫盲

    前言 IPFS以及FileCoin的白皮书知识量比较大,需要花费一些时间成本来学习. 下面先针对挖矿相关的知识进行研究,总结一下Filecoin中挖矿的流程以及相关概念. What is Fileco ...

  10. React代码开发规范

    前言 一般在团队开发中每个人的代码习惯都不太一样,这样就会导致代码风格不一致,以致于维护和修改bug的时候看别人的代码成为一种痛苦...这种情况尤其在前端开发中尤为明显.因为关于前端的开发规范貌似也没 ...