喜迎
春节

数据库三范式


数据库三范式

  1. 第一范式(1NF):规定表中的每个列都应该是不可分割的最小单元。
  2. 第二范式(2NF):是在满足第一范式的基础上,规定表中的非主键列不存在对主键的部分依赖。
    即要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。
  3. 第三范式(3NF):是在满足第一范式和第二范式的基础上,规定表中的列不存在对非主键列的传递依赖。
    所以第三范式具有如下特征:
    1. 每一列只有一个值
    2. 每一行都能区分。
    3. 每一个表都不包含其他表已经包含的非主关键字信息。
    
    例如,帖子表中只能出现发帖人的id,而不能出现发帖人的id,还同时出现发帖人姓名,否则,只要出现同一发帖人id的所有记录,它们中的姓名部分都必须严格保持一致,这就是数据冗余。
    但在实际中,我们经常会进行反范式设计,适当增加表的冗余字段来提高查询效率。
  • 优势:使表的结构更简单、优雅,表的逻辑和条理性更强,并且使用三范式可以很大程度的减少表中的冗余数据,很好的节省了数据库的存储资源。

文章作者: Crazy Boy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Crazy Boy !
评 论
 上一篇
PHP常用的魔术方法
PHP常用的魔术方法
__construct() __clone() __get() __set() __call()
2020-08-22
下一篇 
MySQL脚本执行中,预防误处理数据的方法
MySQL脚本执行中,预防误处理数据的方法
在工作中,有时需要通过数据库脚本来变更生产数据,但稍有疏忽,就会误删数据、或者变更过多数据;为防预防这类情况的发生,根据我个人的工作经验,总结了以下几点方法: 1、先测试 脚本写好之后,先在测试环境执行一遍,一方面可以看看脚本是否有语
2020-08-05
  目录
hexo