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

oltp系统中的数据库的设计严格遵守第三范式,具体怎么理解呢

1. 什么是第三范式(3NF)?
第三范式建立在第一范式(1NF)和第二范式(2NF)的基础上,要求满足:
        1.满足1NF(所有属性都是原子性的,不可再分)
        2.满足2NF(非主键属性完全依赖于整个主键,不存在部分依赖)
        3.不存在传递依赖:任何非主键属性不依赖于其他非主键属性

2. 3NF在OLTP系统中的具体表现
    1.消除冗余数据:每个数据项只存储在一个地方,通过外键关系引用而不是重复存储
    2.高度规范化:将数据分解为多个关联表,例如:订单系统中客户信息、产品信息、订单信息分别在三个表中存储
    3.确保数据一致性:通过外键约束维护关系完整性,避免更新异常(修改一处即可,不需要多处修改)

3. 实际设计示例

不符合3NF的设计(存在传递依赖):
    订单表(订单ID, 客户ID, 客户名称, 客户地址, 产品ID, 数量, 单价)
    问题:客户名称和地址依赖于客户ID,而不是直接依赖于订单ID

符合3NF的设计:
    订单表(订单ID, 客户ID, 产品ID, 数量, 单价)
    客户表(客户ID, 客户名称, 客户地址)
    产品表(产品ID, 产品名称, 产品描述)


4. 为什么OLTP系统需要严格遵守3NF
    高频率的写操作:减少更新时需要修改的地方
    数据一致性要求高:避免数据不一致
    查询模式:OLTP通常是简单、精确的查询(如通过主键查询)


5. 注意事项
    虽然3NF在OLTP中很重要,但有时会根据实际情况做适当调整(如适度冗余以提高性能),这需要在规范化和性能之间取得平衡

6. 下面是从网络上面下载的严格遵守第三范式的建模例子

上面有些维表如:Date表、Month表、Year表 这三张表过于严格遵守第三范式了,应该将这三张表去掉,将 OrderHeader表 中的 OrderDate字段 的内容直接改成 年-月-日 即可,不必要将 OrderDate字段 设计成外键和 Date表 中的 DateId字段 相关联,不然这样想得到具体的日期还得关联 Date表、Month表、Year表,这样效率太低了,应该适度冗余用以提高性能。同理 SalesRep表 和 Gender表 里面只有一个字段信息,这两个表也可以去掉,直接将 SalesRep表 中的 SalesRepName字段 写进 OrderHeader表 中、将 Gender表 中的 GenderName字段 写进 Customer表中。

7.下面的链接是 zuoanlove 大佬写的,很详细,可以重点看一下

OLTP数据库建模中的三个范式化解析

http://www.dtcms.com/a/266324.html

相关文章:

  • 建设工程长期停工,停工损失如何计算,谁来承担。
  • 【JAVA】类和对象(一)
  • 实战精准压缩打包,通过 Sharp4ArchiveZip过滤指定支持目录与文件类型
  • 蚁群算法的原理及实现示例
  • 【C++详解】STL-list使用(三大特性之一封装详解、cpu高速缓存命中率)
  • 时序数据库TDEngine安装和使用
  • Docker拉取bladex 、 sentinel-dashboard
  • 永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎
  • Echarts3D柱状图-圆柱体-文字在柱体上垂直显示的实现方法
  • Spring Boot + 本地部署大模型实现:优化与性能提升
  • js请求避免缓存的三种方式
  • LiteHub中间件之限流实现
  • AI+Web3:从Web2到Web3的范式革命与深度技术实践
  • 智能电动汽车 --- 车辆网关路由缓存
  • 【烧脑算法】最小字典序:巧用单调栈,从栈底到最优解
  • 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
  • Oracle如何使用序列 Oracle序列使用教程
  • 【牛客算法】小红的子序列逆序对
  • java类加载机制:Tomcat的类加载机制
  • 歌词引擎·FreeFlow
  • 【深度解析】Seedance 1.0:重新定义 AI 视频生成的工业级标准
  • 差分定位技术:原理、分类与应用场景
  • 接口测试之postman
  • UI评审时应该注意哪些方面才能有效保障交付质量
  • 深入理解JVM垃圾回收机制:引用计数法与可达性分析算法
  • 【Linux安装 OpenSSL 1.0.2 兼容包】
  • 【手动安装并启动后, 如何查看mysql数据库密码以及重置密码(centos8)】
  • 负载均衡--常见负载均衡算法
  • 【论文笔记】【强化微调】综述 - Think With Image
  • 二叉树题解——将有序数组转换为二叉搜索树【LeetCode】优化解法