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

什么是关系数据库理论?(函数依赖,范式)

数据库关系理论

关系数据理论,也被称为关系数据库理论。是数据库领域的重要基础理论,主要用于设计优化关系型数据库,确保数据库中数据的完整性一致性减少数据冗余

1、函数依赖
  • 定义:设 是一个属性集 上的关系模式, 和 是 的子集。若对于 的任意一个可能的关系 , 中不可能存在两个元组在 上的属性值相等, 而在 上的属性值不等, 则称 “ 函数确定 ” 或 “ 函数依赖于 ”,记作 。
  • 示例:在学生信息表(学号,姓名,班级)中,学号可以唯一确定姓名和班级,即存在函数依赖:学号 → 姓名,学号 → 班级。
2、范式

范式是符合某一种级别的关系模式的集合,是衡量关系模式好坏的标准。满足不同程度要求的为不同范式,从低到高主要有第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯 - 科德范式(BCNF)等。

  • 第一范式(1NF)
    • 定义:如果一个关系模式 的所有属性都是不可分的基本数据项,则 。
    • 示例:若一个学生选课表中,“课程” 属性包含多门课程,且未分开存储,就不满足 1NF;将 “课程” 拆分为多个单独的课程记录,使每个属性都是不可再分的,就满足了 1NF。
  • 第二范式(2NF)
    • 定义:若关系模式 ,并且每一个非主属性都完全函数依赖于任何一个候选码,则 。
    • 示例:在订单表(订单号,产品编号,产品名称,数量)中,候选码是(订单号,产品编号),若产品名称只依赖于产品编号,而不依赖于整个候选码,那么该表不满足 2NF;将订单表拆分为订单表(订单号,产品编号,数量)和产品表(产品编号,产品名称),就满足了 2NF。
  • 第三范式(3NF)
    • 定义:设关系模式 ,若 中不存在这样的码 、属性组 及非主属性 (), 使得 , 成立,,则称 。即每一个非主属性既不部分依赖于码也不传递依赖于码。
    • 示例:在员工信息表(员工编号,部门编号,部门名称)中,员工编号 → 部门编号,部门编号 → 部门名称,存在传递依赖,不满足 3NF;将其拆分为员工表(员工编号,部门编号)和部门表(部门编号,部门名称),就满足了 3NF。
  • 巴斯 - 科德范式(BCNF)
    • 定义:设关系模式 ,若 且 时 必含有码,则 。也就是说,每一个决定因素都包含码。
    • 示例:在关系模式(仓库名,管理员,物品名,数量)中,若存在函数依赖(仓库名,物品名)→ 数量,(仓库名,管理员)→ 物品名,管理员 → 仓库名,该关系模式不满足 BCNF;进行适当的分解后可满足 BCNF。

相关文章:

  • 轻量级5G核心网:适应未来网络需求的关键方案
  • 【第11章:生成式AI与创意应用—11.2 音频与音乐生成的探索与实践】
  • C程序设计(第5版)——谭浩强(1)
  • lazarus 从资源文件中加载PNG图片
  • 【SpringBoot】深度解析 Spring Boot 拦截器:实现统一功能处理的关键路径
  • 跟着李沐老师学习深度学习(十)
  • LabVIEW开发CANopen的TPDO数据读取
  • IDEA集成DeepSeek
  • [特殊字符] 用Rust重塑Web开发速度极限:Hyperlane框架——开启高性能服务的「光年时代」[特殊字符]
  • 模型GPU->NPU(Ascend)迁移训练简述
  • 为AI聊天工具添加一个知识系统 之106 详细设计之47 Lattice
  • 【第13章:自监督学习与少样本学习—13.2 少样本学习(FSL)与元学习(Meta-Learning)的基础理论与应用案例】
  • 善筹网设计与实现(代码+数据库+LW)
  • CI/CD(二)docker-compose安装Jenkins
  • 栈的深度解析:从基础实现到高级算法应用——C++实现与实战指南
  • Java里int和Integer的区别?
  • 【第10章:自然语言处理高级应用—10.4 NLP领域的前沿技术与未来趋势】
  • 基于SpringBoot的医院药房管理系统【源码+答辩PPT++项目部署】高质量论文1-1.5W字
  • 掌握SQLite_轻量级数据库的全面指南
  • python的类装饰器
  • 九家企业与上海静安集中签约,投资额超10亿元
  • 夜读丨母亲的手擀面
  • 从“重规模”向“重回报”转变,公募基金迎系统性改革
  • 金融监管总局将出八大增量政策,李云泽详解稳楼市稳股市“组合拳”
  • 李云泽:大型保险集团资本补充已经提上日程
  • 特朗普称不会为了和中国谈判而取消对华关税,外交部回应