首页 > 其他分享 >三大范式 反例 并改正

三大范式 反例 并改正

时间:2024-07-15 16:25:55浏览次数:19  
标签:范式 反例 订单 部门 表中 ID 三大

第一范式(1NF):数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。不满足第一范式(1NF)的数据库就不是关系数据库。

反例:假设有一个学生课程表,其中一列课程,写着数学,英语,地理,这就违反了第一范式,因为课程列包含了多个值

改正:将学生课程表拆分成学生表(写学生基本信息)学生课程关联表(包含学生ID和课程名)
实例表:
在这里插入图片描述
2.第二范式(2NF):要求数据库表中的每个实例或行必须可以被唯一区分,实体属性完全 依赖于主关键字,不存在仅依赖主关键字一部分的属性。必须满足第一范式

反例:有一个订单详情表,主键是(订单ID,商品ID),,但存在一个非主属性客户姓名 ,只依赖于订单 ID,而不依赖于商品 ID,这就违反了第二范式。

改正:将订单详情表拆分为订单表(包含订单 ID 和客户姓名等依赖于订单 ID 的信息)和订单商品详情表(包含订单 ID、商品 ID 以及其他依赖于这两个键的信息)。
在这里插入图片描述
3.第三范式(3NF):要求数据库表中不包含已在其他表中已包含的非主关键字信息。必须满足第二范式

反例:有一个员工表,包含员工 ID、姓名、部门 ID 和部门名称。其中部门名称可以通过部门 ID在部门表中获取,这就违反了第三范式。

改正:去掉员工表中的部门名称列,当需要获取部门名称时,通过部门 ID关联部门表获取。
在这里插入图片描述

标签:范式,反例,订单,部门,表中,ID,三大
From: https://blog.csdn.net/dfghhhjj/article/details/140441816

相关文章

  • 亚马逊ERP常用的三大功能 设置最大订单数 定时上下架 无库存采集
    亚马逊全功能ERP最常用的三大功能:批量设置最大订单数量、批量定时上下架、不限店铺、不限子账号、无库存采集。今天我将为大家详细介绍亚马逊卖家最常使用的三大功能:批量设置最大订单数量、批量定时上下架以及无库存采集。·首先来探讨批量设置最大订单数量这一功能,这个功能......
  • 【带你全面了解 RAG,深入探讨其核心范式、关键技术及未来趋势】
    文末有福利!大型语言模型(LLMs)已经成为我们生活和工作的一部分,它们以惊人的多功能性和智能化改变了我们与信息的互动方式。然而,尽管它们的能力令人印象深刻,但它们并非无懈可击。这些模型可能会产生误导性的“幻觉”,依赖的信息可能过时,处理特定知识时效率不高,缺乏专业领域的......
  • 编程范式之并发编程
    目录前言1.并发编程的定义2.并发编程的特点2.1任务交替执行2.2状态共享与同步2.3并行执行3.并发编程的适用场景3.1高性能计算3.2I/O密集型应用3.3实时系统4.并发编程的优点4.1提高资源利用率4.2缩短响应时间4.3提高系统吞吐量5.并发编程的缺点5.1编程......
  • 编程范式之面向切面编程(AOP)
    目录前言1.什么是面向切面编程2.面向切面编程的特点2.1模块化2.2动态代理2.3透明性3.适用于哪些场景3.1日志记录3.2事务管理3.3安全检查3.4性能监控4.面向切面编程的优点4.1提高代码的可维护性4.2提高代码的可重用性4.3提高系统的灵活性5.面向切面编程......
  • Java基础,面向对象,类与对象,全局和局部变量,三大特征--封装,构造方法,JavaBean的编写---入
    一.面向对象面向过程和面向对象的区别     面向过程:强调步骤    面向对象:强调对象,对象洗衣机帮我们完成举例:洗衣服面向过程:面向对象:脱衣服->打开洗衣机->按钮->晾衣服面向对象的三大特征-----封装,继承,多态对象:万物皆可对象类:一组相关属性和行为的集......
  • 软件设计12丨编程范式:明明写的是Java,为什么被人说成了C代码?
    在上一个小模块,我给你讲了程序设计语言,帮助你重新审视一下自己最熟悉的日常工具。但是,使用程序设计语言是每个程序员都能做到的,可写出的程序却是千差万别的。这一讲,我们就来看看这些差异到底是怎样造成的。在开始之前,我先给你讲一个小故事。在一次代码评审中,小李兴致勃勃地......
  • 数据范式
    数据库三范式是关系型数据库设计的一种标准化过程,目的是消除冗余数据,提高数据存储的效率和数据查询的性能。它包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。第一范式(1NF):确保每一列具有原子性,即每一列的数据都是不可分割的。例如,一个订单表格中,每个订单只能有一个订单号,不能存在......
  • Redis三大缓存问题:缓存穿透、缓存击穿、缓存雪崩的场景以及解决方法
    文章目录都是缓存惹的祸缓存穿透场景描述解决方法缓存键同时失效1.过期时间随机化2.使用多级缓存3.缓存预热4.加互斥锁缓存中间件故障1.服务熔断-Java示例2.构建Redis集群注意事项缓存击穿场景描述解决方法1.加互斥锁(MutexLock)2.永久缓存热点数据注意事......
  • 数据库范式
    1范式的基本概念设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。函数依赖比如......
  • Android面试题自定义View之Window、ViewRootImpl和View的三大流程
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点View的三大流程指的是measure(测量)、layout(布局)、draw(绘制)。下面我们来分别看看这三大流程View的measure(测量)MeasureSpecMeasureSpec是View的一个内部静......