数据库三大范式

第一范式 1NF

属性/字段有原子性,不可再分。

例如表:字段1--学号 | 字段2 --姓名(字段2.1--姓,字段2.2--名,字段2.3--曾用名) | 字段3--性别

这样就不符合第一范式

第二范式 2NF

在满足1NF的基础上。要求所有属性都必须完全依赖于主键。

例如表:学号 | 姓名 | 课程号 | 学分

这里课程号和学分与学号没有依赖关系,主键和属性不相关,所以不符合2NF。

可能产生的问题:

  • 数据冗余:例如一个学生选了多门课,本只需要记录学生id,课程id即可,但是此时要多次姓名和课程学分。
  • 删除异常:例如删除学生的选课记录,则学生信息和课程信息都删了
  • 插入异常:一个没选课的学生无法被记录在表中
  • 更新异常:调整课程的学分,则所有选了这门课的记录都要修改

2NF还要求属性完全依赖于主键,而不是部分依赖。这是对于联合主键而言的。 例如订单表:订单id | 商品id | 商品信息 因为一个订单可能有多个商品,因此把(订单id,商品id)作为联合主键。而此时商品信息和主键并不是完全依赖关系,只是部分依赖关系。因此不符合2NF。

第三范式 3NF

在2NF基础上,要求所有属性必须直接依赖与主键,非主键属性之间不能存在传递依赖。

例如表:学生id | 学院id | 学院院长

上表记录了学生所在学院的关系,学生id是主键。这是符合2NF的,因为学生id可以完全决定学院id和学院院长。但是学院院长也依赖于学院id。所以这不属于3NF。

可能产生的问题:

  • 数据冗余:记录相同学院的学生都必须重复记录他们的学院院长
  • 更新异常:更新某学院院长时需要所有属于该院的学生的相关记录都更新。
全部评论

相关推荐

双飞二本嵌入式求拷打我是在 BOSS 上投递的简历,好多都没人回复,这是开场白和简历求大神帮忙看看。您好!我是2025届应届生,最快可在一周内上岗,能够实习六个月以上,并接受加班。以下是我的核心优势和相关经验:1. 嵌入式开发能力:   熟练掌握STM32系列单片机及其外设(如GPIO、定时器、ADC、DAC、I2C、SPI、UART等),能够独立完成硬件驱动开发和调试。  熟悉FreeRTOS实时操作系统,具备多任务调度和资源管理经验。  熟悉LVGL图形库开发,能够实现嵌入式设备的图形界面设计。2. 硬件设计能力:   具备PCB设计经验,曾为2023年工创赛物流搬运赛道设计小车主板,带领团队获得国家级银奖。   熟悉硬件原理图分析,能够快速理解并调试硬件电路。3. 机器人开发与竞赛经验:   在全国大学生智能车竞赛、ROS机器人竞赛中多次获得国家级奖项,具备丰富的机器人开发经验。   熟悉Linux环境,对ROS和ROS 2有一定了解,能够进行机器人系统的开发与调试。4. 编程能力:   熟悉C/C++,熟悉Python,能够高效完成嵌入式开发和算法实现。   具备良好的代码规范和文档编写能力。5. 团队协作与领导能力:   在多个项目中担任核心开发或团队负责人,具备良好的沟通能力和团队协作精神。   在工创赛中带领团队完成项目规划、任务分配和技术攻关,展现了较强的领导力。我对嵌入式开发、机器人技术和智能硬件充满热情,期待加入贵公司,与团队共同成长,为公司创造价值!如果有合适的岗位,欢迎随时联系我,期待进一步沟通!
沉淀一会:嵌入式就是狗屎
点赞 评论 收藏
分享
02-05 08:18
四川大学 Java
在思考的熊熊很讨厌吃香菜:不是,我门头沟学院呢?这都没排上?
点赞 评论 收藏
分享
评论
3
2
分享

创作者周榜

更多
牛客网
牛客企业服务