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

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

写在前面

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

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

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

是什么

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

目的

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

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

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

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

相关文章:

  • 深入理解 Java 适配器模式:架构设计中的接口转换艺术
  • [项目总结] 抽奖系统项目技术应用总结
  • 基于SpringBoot的小区停车位管理系统
  • 按钮样式统一
  • 第二十一节:图像金字塔-高斯金字塔
  • 【即插即用涨点模块】RFAConv感受野注意力卷积:突破卷积参数共享瓶颈,感受野注意力重塑空间特征提取【附源码】
  • 从 TTS 到 TTRL:无标签数据强化学习探索与展望
  • SHAP分析!Transformer-BiLSTM组合模型SHAP分析,模型可解释不在发愁!
  • TypeScript 装饰器高级用法详解
  • P10225 [COCI 2023/2024 #3] Milano C.le|普及
  • 深入浅出之STL源码分析6_模版编译问题
  • Kubernetes .yaml 文件配置
  • Kubernetes 集群部署应用
  • C PRIMER PLUS——第9节:动态内存分配、存储类别、链接和内存管理
  • 17前端项目----支付弹框
  • Three.js + React 实战系列 - 页脚区域 Footer 组件 ✨
  • vector--OJ1
  • Windows系统更新一键禁用:WindowsUpdateBlocker轻量级工具推荐
  • Typescript 源码核心流程
  • LeetCode 热题 100 101. 对称二叉树
  • 教育部:启动实施县中头雁教师岗位计划,支撑县中全面振兴
  • 重庆大学通报本科生发14篇SCI论文处理结果
  • 韩国前国务总理韩德洙加入国民力量党
  • 中非民间对话在赞比亚举行
  • 欧洲理事会前主席米歇尔受聘中欧国际工商学院特聘教授,上海市市长龚正会见
  • 早期投资人蜂巧资本清仓泡泡玛特套现超22亿港元,称基金即将到期