当前位置: 首页 > news >正文

数据库设计三大范式

 数据库设计遵循三大范式的理由:在面对复杂是数据库设计的时候,设计数据库要遵循一定的规则,有了一定的规范,这样就可以是自己看起来舒服。

1.第一范式(确保每列保持原子性)

第一范式主要是保证数据表中的每一个字段的值必须具有原子性,也就是数据表中的每个字段的值是不可再拆分的最小数据单元

2.第二范式(确保表中的每列都和主键相关)

数据表里的每一条数据记录,都是可唯一标识的,而且所有的非主键字段,都必须完全依赖主键,不能只依赖主键的一部分。

第二范式要求实体的属性完全依赖主关键字,如果存在不完全依赖,那么这个属性和主关键字的这一部分就应该分离处理形成一个新的实体,新实体和原来实体之间是一对多的关系

自己理解:主键可以是一个也可以是多个,但是必须要所有的主键才能确定一个非主键的属性,这样才满足第二范式

在这里插入图片描述

3.第三范式(确保每列都和主键列直接相关,而不是间接相关)

数据表中的每一个非主键字段都和主键字段直接相关

也就是说数据表中的所有非主键字段不能依赖于其他非主键字段

这个规则的意思是所有非主属性之间不能有依赖关系,它们是互相独立的

自己的理解:所有的非主键字段都可以由主键直接决定,并需要依赖传递。

范式的优缺点

优点:

数据的标准化有助于消除数据库中的数据冗余
第三范式通常被认为在性能,扩展性和数据完整性方面达到了最好的平衡

缺点:

降低了查询效率,因为范式等级越高,设计出来的表就越多,进行数据查询的时候就可能需要关联多张表,不仅代价昂贵,而且可能会使得一些索引失效

范式只是提出设计的标标准,实际设计的时候,我们可能为了性能和读取效率违反范式的原则,通过增加少量的冗余或重复的数据来提高数据库的读取性能,减少关联查询,实现空间换时间的目的

参考博客:数据库的三大范式_数据库三大范式_不断前进的皮卡丘的博客-CSDN博客

http://www.lryc.cn/news/24686.html

相关文章:

  • cesium学习记录02-vue项目中cesium的配置与使用
  • 【微服务】-认识微服务
  • 容器的线程安全性
  • 如何用Postman测试整套接口?测试流程是什么?
  • 【批处理脚本】-2.1-测试IP连接命令ping
  • 百度“文心一言”携手酷开科技,实现AI智能领域新突破!
  • Elasticsearch索引全生命周期管理一网打尽
  • MySQL的SELECT
  • conda 搭建tensorflow-GPU和pycharm以及VS2022 软件环境配置
  • HACKTHEBOX——Teacher
  • 干货| Vue小程序开发技术原理
  • unity-web端h5记录
  • 基于部标JT808的车载视频监控需求与EasyCVR视频融合平台解决方案设计
  • Grafana邮件及告警配置
  • Springboot Java多线程操作本地文件,加读写锁,阻塞的线程等待运行中的线程执行完再查询并写入
  • WebRTC拥塞控制算法——GCC介绍
  • 大数据技术之Maxwell基础知识
  • 元数据管理实践数据血缘
  • SQL的优化【面试工作】
  • Kotlin 40. Dependency Injection 依赖注入以及Hilt在Kotlin中的使用,系列3:Hilt 注释介绍及使用案例
  • 1000亿数据、30W级qps如何架构?来一个天花板案例
  • 人工智能及其应用(蔡自兴)期末复习
  • openpnp - configure - 矫正里程碑
  • JavaScript高级程序设计读书分享之8章——8.2创建对象
  • 关于Could not build wheels for opencv-python-headless, which is...报错的解决方案
  • 【K3s】第1篇 K3s入门级介绍及架构详解
  • Java学习--反射
  • 应用和迭代(名词解释)
  • HTMLCollection 和 NodeList 区别
  • fork()出来一个进程,这个进程的父进程是从哪来的?