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

MySQL数据库常见面试题之三大范式

写在前面

此文章大部分不会引用最原始的概念,采用`说人话`的方式。

面试题:三大范式是什么?目的是什么?必须遵循吗?

假设有一张表(学号,姓名,课程,老师)

是什么

  • 第一范式
    • 字段原子性
  • 第二范式
    • 解决部份依赖。应该非主键列完全依赖主键。比如(学号,姓名)不可以做主键,冗余了
    • 又比如在 “学生课程表” 中,有 “学生 ID”“课程 ID”“学生姓名”“课程名称” 等字段,复合主键是 “(学生 ID,课程 ID)”。其中,“学生姓名” 只依赖于 “学生 ID”,“课程名称” 只依赖于 “课程 ID”,它们都依赖于复合主键的一部分,而不是整个复合主键,这就是部分依赖。
  • 第三范式
    • 解决传递依赖。比如A->B->C,应该是A,B一起,C能推导了不要放进去

目的

  • 三大范式目的
    • 让设计模式的职责更加的单一,方便后续扩展
    • 肯定优先考虑,像模型和领域的划分都是通过表来进行的

必须遵循吗?反范式?目的?

  • 反范式
    • 遵循范式的基础上,增加冗余字段,空间换时间 先遵守规则,在进行调整
    • 目的
      • 优化性能
      • 1.分库分表,优化联合查询join,分页查询(分库分表之后分页不了,冗余字段来优化)
      • 2.快照字段解决问题---分页查询

当然,不是一上来就反范式、冗余字段。任何系统的设计起点都是三大范式为基础,否则说明是一家外包公司(表已经给好了)。

http://www.xdnf.cn/news/5456.html

相关文章:

  • Python打卡训练营Day22
  • 并发笔记-锁(一)
  • AI 小智代码架构分析
  • 【DNDC模型】双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的应用
  • Java 中 AQS 的实现原理
  • Problem B: 面向对象综合题2
  • [思维模式-27]:《本质思考力》-7- 逆向思考的原理与应用
  • MySQL的锁
  • 软考第五章知识点总结
  • LeetCode 热题 100 98. 验证二叉搜索树
  • NOR Flash与NAND Flash详解
  • 添加文字标签
  • 第六天:Java数组
  • 最长字符串 / STL+BFS
  • JDS-算法开发工程师-第9批
  • 如何通过管理Windows服务加速电脑启动?
  • TikTok 推广干货:AI 加持推广效能
  • java.util.Timer
  • pycharm更改终端为wsl.exe
  • stm32测频率占空比最好的方案
  • 多智体具身人工智能:进展与未来方向(下)
  • 【计算机视觉】基于Python的相机标定项目Camera-Calibration深度解析
  • 【TI MSPM0】CCS工程管理
  • 雷达工程师面试题目
  • 机械物理:水力发电站工作原理是什么?
  • 最大化效率和性能:AKS 中节点池的强大功能
  • 设计模式简述(十八)享元模式
  • 找银子 题解(c++)
  • EdgeOne Pages MCP 入门教程
  • 午前下单晚饭前到?亚马逊在珀斯实现!