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

对数据库三大范式的理解

        首先,要明确一个概念,范式的提出到逐步精进,从第一范式到第三范式,甚至于BCNF范式,逐步优化是为了解决插入异常、删除异常以及改善数据冗余的。

        第范式:符合第一范式的要求,即数据表的属性值均是不可再分的值。

        举例:

        学生表(学号,姓名,班级)

        学生表中的属性均是不可再分的属性,即该表符合第一范式。绝大对数情况下,第一范式很容易满足。

        第范式:消除了非主属性对候选键的部分函数依赖,即非主属性完全依赖于主键。(联合主键也不行)

        举例;

        学生表(学号,姓名,班级,课程号,课程名,成绩)

        学生表中,学号为主键,课程名和成绩依赖于学号和课程号,此时的学号和课程号组成了联合主键,该表不符合第二范式。

        修正为三张表:

        学生表(学号,姓名,班级)

        课程表(课程号,课程名)

        成绩表(学号课程号,成绩)

        范式:消除了非主属性对候选键的传递函数依赖。

        举例

        学号,姓名,班级,系号,系名称,系所在位置)

        这张表里存在非主属性对候选键的传递函数依赖,即学号-->系号-->(系名称,系所在位置)。

        修正为两张表:

        学生表(学号,姓名,班级,系号

        系信息表(系号,系名称,系所在位置)

        以上就是我对三大范式的初步理解,欢迎诸君共同探讨。

http://www.lryc.cn/news/166858.html

相关文章:

  • (matplotlib)如何不显示x轴或y轴刻度(ticks)
  • U8用友ERP本地部署异地远程访问:内网端口映射外网方案
  • 怎么提取一个python文件中所有得函数名称
  • 企业架构LNMP学习笔记37
  • vue3 自定义组件 v-model 原理解析
  • 【Linux从入门到精通】线程 | 线程介绍线程控制
  • 2023Web前端面试题及答案(一)
  • Rabbitmq参数优化
  • typescript环境搭建,及tsc命令优化
  • suning苏宁API接入说明(苏宁商品详情+关键词搜索商品列表)
  • 类和对象(3)
  • C++下基于粒子群算法解决TSP问题
  • vue3 ElementUI Switch before-change自动调用问题
  • 【chromium】windows 获取源码到本地
  • Nacos-Go-Sdk代码逻辑解析
  • 检测opencv是否安装成功
  • 如果你是独立开发者,你是先写前端还是先写后端?
  • Pytorch intermediate(四) Language Model (RNN-LM)
  • C++零碎记录(十)
  • 人类学习 vs. 机器学习
  • 【LeetCode-中等题】15. 三数之和
  • Apache Tomcat漏洞复现
  • C++模版基础
  • 解决 Elasticsearch 分页查询记录超过10000时异常
  • 百度千帆大模型文心一言api调用
  • 关于HTTP协议的概述
  • ATFX汇市:8月名义与核心CPI走势分化,美国通胀率算升高还是降低?
  • c++ 中的函数指针
  • 奶牛个体识别 奶牛身份识别
  • 【力扣每日一题】2023.9.13 检查骑士巡视方案