MYSQL-设计表

一.范式

数据库的范式是⼀组规则。在设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数 据库,这些不同的规范要求被称为不同的范式。 关系数据库有六种范式:第⼀范式(1NF)、第⼆范式(2NF)、第三范式(3NF)、巴斯-科德 范式(BCNF)、第四范式(4NF)和第五范式(5NF,⼜称完美范式),越⾼的范式数据库冗余越 ⼩。然⽽,普遍认为范式越⾼虽然对数据关系有更好的约束性,但也可能导致数据库IO更繁忙,因此 在实际应⽤中,数据库设计通常只需满⾜第三范式即可。

数据库IO繁忙:表建的越多越繁忙

1.第一范式

定义:数据库表的每⼀列都是不可分割的原⼦数据项,⽽不能是集合,数组,对象等⾮原⼦数据。

就是说,表里的每一个数据都不能继续拆分

反例:比如说制作一张学校信息的表,里面包含学生名,性别,电话号码,班级名称,学院;但是学院能分出来学院地址,电话,名字等,所以此表不为第一范式

所以当我们将学校具体信息填在表内,是否满足第一范式? 答案是肯定的,不过会产生数据冗余

所以我们可得在 关系型数据库中,每⼀列都可以⽤基本数据类型表⽰,就天然满⾜第⼀范式

2.第二范式

 定义:在满⾜第⼀范式的基础上,不存在⾮关键字段任意候选键部分函数依赖。存在于表中定义了复合主键的情况下

⾮关键字段:相当于非主键

任意候选键:相当于主键

复合主键:一个表只能有一个主键,但是一个主键能定义多个列,定义多个列的就是复合主键

部分函数依赖:只依赖于表中的部分字段生成,和其他字段没有关系

反例:

主键为学号和课程名 

如图所示:学分只与课程相关

成绩只与学号和课程相关,

学生信息只与学号相关

也就是说学分不依赖于学号,只依赖课程名

而学生信息不依赖于课程名,只依赖于学号

这即为部分函数依赖

正例:

将有依赖关系的列单独放表,通过id来传递

 由于学生信息只与学号相关,所以定义在学生表

 

 学分只与课程名相关,所以定义课程表

 

成绩与学号和课程id相关,所以用复合主键定义出成绩表 

 解决部分函数依赖,可以通过为每个复合主键定义单独表,

再对需要多个复合主键的进行建表

不满⾜第⼆范式时可能出现的问题

1.数据冗余

在提取想要得到的信息时,有其余重复信息,其余重复信息称为冗余信息

2.更新异常

更新可能会更新错误,因为要更新很多条数据,比如要将mysql的学分改为50,可能漏掉王五的学分,导致数据不一致,引发数据不安全等问题

3.插入异常

如果需要重新插入一门新的课程,则课程必须要有成绩才能填入,不能提前填入

4.删除数据

如果只想删除毕业学生成绩,会连带吧课程和课程对应的学分删除

3.第三范式

定义:在满⾜第⼆范式的基础上,不存在⾮关键字段,对任⼀候选键传递依赖

非关键字段:非主键

任一候选键:主键

反例:

如图,当一个表存在两种强相关的关系,这种关系称为传递依赖

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/79530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三方测试机构在软件测试领域有何重大作用与优势?

第三方测试机构在软件测试领域作用重大,它就像公正的裁判,能帮助确保软件质量,能保障软件可靠性,通过提供专业测试服务,为软件安全性提供保障,也为软件稳定性提供保障。 机构优势 第三方测试机构具有独立…

大模型——使用 StarRocks 作为向量数据库

大模型——使用 StarRocks 作为向量数据库 本章节介绍了 StarRocks,这是一款高性能的分析数据库,并演示了如何将其用作向量数据库。内容涵盖了设置、文档加载、标记化、创建向量数据库实例以及构建一个能够检索的问答系统。 StarRocks StarRocks 是一个次世代的亚秒级 MPP…

怎样增加AI对话的拟人化和增加同理心

怎样增加AI对话的拟人化和增加同理心 随着心理健康问题在大学生中日益普遍,AI聊天机器人被用于提供支持,但如何有效表达同理心成为挑战。本文对比了人与人、人与AI互动中同理心的表达与接收,通过让126名本科生讲述生活事件并收集亚马逊MTurkers的评价,同时使用GPT-4o评估相…

SALOME源码分析:SHAPER模块

本文分析SALOME中的SHAPER模块。 注1:限于研究水平,分析难免不当,欢迎批评指正。注2:文章内容会不定期更新。 一、核心组件 二、关键流程 三、FAQs 网络资料 Introduction to SHAPER

batch normalization和layer normalization区别

Normalization无非就是这样一个操作: 其中x是输入数据,维度为(B,T,C),其中B是batchsize,T是序列长度,C是embedding维度;括号内是标准化操作,γ和…

Postgresql源码(144)LockRelease常规锁释放流程分析

相关 《Postgresql源码(69)常规锁细节分析》 最新遇到一个共享内存损坏导致常规锁释放报错warning "you don’t own a lock of type"的问题。 本篇对常规锁的概念做一些回顾,顺便分析下释放锁的流程。 SpinLock:❎LWL…

基于bert的情感分析程序

文章目录 任务介绍数据概览注意事项数据处理代码准备模型构建与训练模型类构建数据集构建数据批处理模型参数查看模型训练结果推理与评估模型推理准确率评估附录任务介绍 在当今信息爆炸的时代,互联网上充斥着海量的文本数据,如社交媒体评论、产品评价、新闻报道等。这些文本…

宇树科技举办“人型机器人格斗大赛”

2025 年 5 月至 6 月,一场全球瞩目的科技盛宴 —— 全球首场 “人形机器人格斗大赛”,将由杭州宇树科技盛大举办。届时,观众将迎来机器人格斗领域前所未有的视觉震撼。 为打造最强参赛阵容,宇树科技技术团队在过去数周里&#xf…

计算机视觉与深度学习 | 什么是图像金字塔?

图像金字塔详解 图像金字塔 图像金字塔详解1. **定义**2. **原理与公式****2.1 高斯金字塔****2.2 拉普拉斯金字塔**3. **代码示例****3.1 使用OpenCV实现****3.2 手动实现高斯模糊与降采样**4. **应用场景**5. **关键点总结**1. 定义 图像金字塔是一种多尺度图像表示方法,将…

Spring MVC注解式控制器开发

主要对Spring MVC的核心注解的应用进行了详细讲解,介绍了Controller和RequestMapping注解类型的相关知识。 1.注解式控制器概念 Spring2.5之前,我们都是通过实现框架提供的Controller接口来定义我们的处理器类。 Spring2.5引入注解式处理器支持&#…

thonny提示自动补全功能

THONNY IDE 自动补全功能配置 在 Thonny IDE 中启用和优化自动补全功能可以显著提升编程体验。为了确保该功能正常工作,需要确认几个设置选项。 配置自动补全 Thonyy IDE 的自动补全默认情况下是开启的。如果发现自动补全未按预期运行,可以通过调整首选…

D. 例题3.2.2 整数划分问题

题目描述 将正整数n表示成一系列正整数之和:nn_1n_2...n_knn1​n2​...nk​,其中8\geq n_1\geq n_2\geq ...\geq n_k\geq 18≥n1​≥n2​≥...≥nk​≥1,k\geq1k≥1。正整数n的这种表示称为正整数n的划分。 例如正整数6有如下11种不同的划分…

电脑RGB888P转换为JPEG方案 ,K230的RGB888P转换为JPEG方案

K230开发板本身具备将RGB888P转换为JPEG的能力,但需要正确调用硬件或软件接口。以下是具体分析及解决方案: 一、K230原生支持性分析 1. 硬件支持 K230的NPU(神经网络处理器)和图像处理单元(ISP)理论上支持…

图解 Git 工作流:理解 Rebase、Merge 与 Pull Request 的区别

图解 Git 工作流:理解 Rebase、Merge 与 Pull Request 的区别 在多人协作开发中,选择合适的 Git 分支管理策略至关重要。Merge、Rebase 和 Pull Request 是最常见的三种方式,它们本质不同,使用场景也不同。 本文将通过流程图&am…

Dart和Go语言特征对比

文章目录 Dart 和 Go 语法对照表字符串常用方法对照列表(数组/切片)常用方法对照Map (字典/哈希表) 使用对照IO 操作对照文件操作标准输入输出网络IO 主要差异说明 有同事说,我前端用Flutter,后端用Golang,都师出名门。但两个语言还是老打架&…

ActiveMQ 集群搭建与高可用方案设计(二)

五、高可用方案设计与优化 (一)Zookeeper 在 ActiveMQ 集群中的应用 作用:在 ActiveMQ 集群中,Zookeeper 扮演着至关重要的角色。它主要用于选举 Master 节点,通过其内部的选举机制,从众多的 ActiveMQ Br…

【项目归档】数据抓取+GenAI+数据分析

年后这两个月频繁组织架构变动,所以博客很久没更新。现在暂时算是尘埃落定,趁这段时间整理一下。 入职九个月,自己参与的项目有4个,负责前后端开发,测试,devops(全栈/doge)&#xff…

服务器热备份,服务器热备份的方法有哪些?

服务器热备份是保障业务连续性的重要技术手段,通过实时数据同步和快速故障切换,确保在主服务器故障时备份服务器能无缝接管。以下是常见的服务器热备份方法及其核心要点: 双机热备(Active-Standby/Active-Active) 主备…

【AI平台】n8n入门6:调用MCP服务(非社区节点)

前言 前边用n8n搭建一个MCP服务,现在,用n8n调用其他服务商提供的MCP服务。本文以高德地图服务为例,记录一下操作过程。 实现案例功能 MCP是啥 MCP(Model Context Protocol,模型上下文协议)是由Anthropi…

基于ArduinoIDE的任意型号单片机 + GPS北斗BDS卫星定位

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1.1 器件选择1.2 接线方案 二、驱动实现2.1 核心代码解析(arduino/ESP32-S3) 三、坐标解析代码四、典型问题排查总结 前言 北斗卫星导航…