首页 > 数据库 >数据库三大范式

数据库三大范式

时间:2023-05-13 16:13:56浏览次数:37  
标签:班级 依赖 范式 数据库 学院 主键 三大 属性

范式是为了设计出合理的关系型数据库,越高的范式数据库冗余越小。

1. 第一范式(1NF)

列不可再分


2. 第二范式(2NF)

满足1NF,表中的字段必须完全依赖于全部主键而非部分主键

字段x和字段y确定一行数据,那么字段z必须依赖x+y,不能只依赖x,或者只依赖y,即不能是部分依赖。
设 K 为某表中的一个属性或属性组,若除 K 之外的所有属性都完全函数依赖于 K(这个“完全”不要漏了),那么我们称 K 为候选码,简称为码。在实际中我们通常可以理解为:假如当 K 确定的情况下,该表除 K 之外的所有属性的值也就随之确定,那么 K 就是码。一张表中可以有超过一个码。
包含在任何一个码中的属性成为主属性,除去所有的主属性,剩下的就都是非主属性了。


3. 第三范式(3NF)

满足2NF,非主键外的所有字段必须互不依赖

在现实中,各“班级”都是归属于“学院”的,即:只要班级是“JSDO01”,学院就一定是“软件工程学院”,所以,“学院”依赖于“班级”,形成“非主属性”依赖于另一个“非主属性”的情况,不符合第三范式的要求。
基于“消除传递依赖”的思想,应该将以上表中的“学院”删除,另创建其它表记录“班级”和“学院”的关系。

4. 引申

遵循范式,可以减少冗余,但是需要关联查询,降低查询性能,所以推荐适当冗余。

标签:班级,依赖,范式,数据库,学院,主键,三大,属性
From: https://www.cnblogs.com/yddwinter/p/17386634.html

相关文章

  • 数据库设计
    数据库概念三层模式系统结构:三级模式,内模式、概念模式、外模式。内模式:管理如何存储物理数据。概念模式:根据需求划分为一张张的表。外模式:对应视图级别,将表进行了一次封装处理。内模式:存储模式,数据库在物理方面的描述,定义记录类型、索引、文件组织方式(概念模式下的一张表,在内模......
  • DTS106TC数据库
    XJTLUEntrepreneurCollege(Taicang)CoverSheetModulecodeandTitle DTS106TC:IntroductiontoDatabaseSchoolTitle SchoolofAIandAdvancedComputingAssignmentTitle AssessmentTask001(CW):IndividualCourseworkSubmissionDeadline 17May2023at5:......
  • MySql学习日志二,数据库的笔记
    数据库的列类型【了解】数值tinyint十分小的数据1个字节smallint较小的数据2个字节mediumint中等大小的数据三个字节int标准的整数4个字节常用intbigint较大的数据8个字节float浮点数4个字节double浮点数8个字节decimal字符......
  • java基于springboot+vue的农机电招平台、农机租赁管理系统,附源码+数据库+文档+PPT,适合
    1、项目介绍该系统包括前台操作和后台管理两个部分,一方面,为用户提供首页,农机,系统公告,个人中心,后台管理等功能;另一方面,为管理员提供首页,个人中心,农机机主管理,使用者管理,农机类型管理,农机管理,农机预约管理,系统管理等功能。项目获取,看这里2、技术框架编程语言:java系统架构:B/S......
  • 数据库 共享性、自治性、可用性、分布性
    共享性:指数据存储在不同的节点数据共享自治性:指每个节点对本地数据都能独立管理。可用性: 指当某一个场地故障时,系统可以使用其他场地上的副本而不至于使整个系统瘫痪。分布性:指数据在不同场地上的存储。......
  • 数据库分库分表 (水平拆分,垂直拆分)分库分表的方式在生产中通常包括:垂直分库、垂直分表
    1.分库分表产生的背景采用单数据库存储存在以下的性能瓶颈:①IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。请求数据太多,带宽不够,网络IO瓶颈。②CPU瓶颈:排序,分组,连接查询,聚合统计等SQL会消耗大量的CPU资源,请求数太多,CPU出现瓶颈。分库分表将数据分散存储,使得单一......
  • DedeCMS 提示信息!把数据保存到数据库附加表 `dede_addonarticle` 时出错,请把相关信息
    DedeCMS提示信息!把数据保存到数据库附加表`dede_addonarticle`时出错,请把相关信息提交给DedeCms官方。Duplicateentry'7'forkey'PRIMARY'错误原因是Duplicateentry'7'forkey'PRIMARY'解决方案:进入后台,“系统”-“系统设置”-“SQL命令行工具”运行SQL命令行:alter......
  • Django如何把SQLite数据库转换为Mysql数据库
    大部分新手刚学Django开发的时候默认用的都是SQLite数据库,上线部署的时候,大多用的却是Mysql。那么我们应该如何把数据库从SQLite迁移转换成Mysql呢?之前我们默认使用的是SQLite数据库,我们开发完成之后,里面有许多数据。如果我们想转换成Mysql数据库,那我们先得把旧数据从SQLite导出......
  • CQRS读写分离MySQL数据库如何部署至Linux
    FearlessGuo首先有一台可以使用的Linux服务器,可以自行购买,当然也可以白嫖。有一款可以连接Linux的软件,我用的是putty在Linux上下载docker镜像,类似应用商店。安装过程参阅下方链接Linux安装Docker完整教程_docker安装_风随心飞飞的博客-CSDN博客下载mysql镜像,查看版本本次......
  • 第三章.数据库系统(重点)
    该章内容在上午题和下午题中都有出现重点:规范化理论(必考)、关系代数(必考)第一节.数据库概述1.数据库模式2.ER模型3.关系代数与元组演算4.规范化理论5.并发控制6.数据库完整性约束7.分布式数据库8.数据库与数据挖掘第二节.数据库系统——三级模式-两级映射......