数据库设计的三范式

简单来说就是:原子性、唯一性、独立性

后一范式都是在前一范式已经满足的情况进行附加的内容

第一范式(1NF):原子性

存储的数据应不可再分。

不满足原子性:

满足原子性:

第二范式(2NF):唯一性 

非主键字段的值必须完全依赖主键(不能部分依赖)

主键有下面两种情况:

设定一个字段为主键:一个字段的值就可以明确确定一行数据。

设定多个字段为主键:只有这多个字段的值都确定后才能确定一行数据。此时也称为“联合主键”。

假设联合主键有两个字段:学号和班级

PRIMARY KEY (StudentID, ClassID)

那么非主键字段需要同时依赖学号和班级,而不能只依赖其中一个字段(这叫部分依赖)。

第三范式(3NF):独立性

消除传递依赖(非主键值不依赖于另一个非主键值)。

例如:此时主键是学生id,但非主键字段(院系电话)依赖于另一个非主键字段(院系),故不符合第三范式。

进行改进拆分后,满足第三范式:

注意

三范式是条件的叠加补充,后一范式需满足前一范式。

在实践中,满足三范式只要做到“一个表只存一种数据”基本就可以实现。

有时候为了数据的使用方便,还会(需要)故意违反范式。

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

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

相关文章

Hadoop大数据处理技术-Linux相关命令

​7.Linux常用命令 1)Windows中的dir:列出当前目录下所有的文件和目录 2)cd:改变当前目录 cd命令并不能直接实现这种跳跃转换目录的功能 它只能让你在当前目录和其子目录之间来回切换 就像在一张平面地图上移动一样 如果想跨目录…

Biome 1.7 发布,支持从 ESLint 和 Prettier 迁移

近日,Biome v1.7 正式发布!这个新版本提供了从 ESLint 和 Prettier 迁移的简单路径。它还引入了格式化程序和 linter 的实验性机器可读报告、新的 linter 规则和许多修复。 使用以下命令更新 Biome: npm install --save-dev --save-exact b…

【计算机毕业设计】学习平台功能介绍——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

穿越物联网的迷雾:深入理解MQTT协议

目录标题 1、MQTT简介核心特性 2、MQTT的工作原理通信过程 3、MQTT的消息质量(QoS)4、安全机制5、实践应用环境准备示例项目发布者客户端订阅者客户端 6、最佳实践7、结论8、参考资料 在物联网(IoT)的海洋中,数据像水流…

密码学 | 椭圆曲线密码学 ECC 入门(四)

目录 正文 1 曲线方程 2 点的运算 3 求解过程 4 补充:有限域 ⚠️ 知乎:【密码专栏】动手计算双线性对(中) - 知乎 ⚠️ 写在前面:本文属搬运博客,自己留着学习。注意,这篇博客与前三…

MySQL行级锁——技术深度+1

引言 本文是对MySQL行级锁的学习,MySQL一直停留在会用的阶段,需要弄清楚锁和事务的原理并DEBUG查看。 PS:本文涉及到的表结构均可从https://github.com/WeiXiao-Hyy/blog中获取,欢迎Star! MySQL行级锁 行级锁(Row-…

KV Cache 技术分析

原文:Notion – The all-in-one workspace for your notes, tasks, wikis, and databases. 1 什么是KV Cache LLM(大型语言模型)中的 Attention 机制中的 KV Cache(键值缓存)主要作用是存储键值对,以避免在…

手动给docusaurus添加一个搜索

新版博客用docusaurus重构已经有些日子了,根据docusaurus的文档上也申请了Algolia,想一劳永逸的解决博客的搜索问题。但是流水有意,落花无情。 algolia总是不给我回复,我只能对着algolia的申请页面仰天长叹。 正常情况的申请 按照docusaur…

K8s 部署 elasticsearch-7.14.0 集群 及 kibana 客户端

一、K8s 部署 elasticsearch-7.14.0 集群 安装规划 组件replicas类型es3StatefulSetkibana1Deployment 使用 k8s 版本为:v1.18.0 。 本次使用 OpenEBS 来作为存储引擎,OpenEBS 是一个开源的、可扩展的存储平台,它提供了一种简单的方式来创…

docker部署的nginx配置ssl证书https

申请ssl证书,已腾讯的免费证书为例 2.上传证书到linux服务器 2.1 映射ssql目录 首先确保容器命令已映射宿主机目录,不一定是ssl,也可以是其他路径。 2.2 上传文件到指定路径 以我映射的ssl路径为例,我上传到宿主机的 /usr/local…

java在线问卷调查系统的设计与实现(springboot+mysql源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的在线问卷调查系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于java的在线问卷调查…

麒麟服务器操作系统自动化安装应答文件制作

原文链接:麒麟服务器操作系统自动化安装应答文件制作 Hello,大家好啊!今天我们将探讨如何为麒麟服务器操作系统制作自动化安装应答文件。在部署大量服务器时,自动化安装是提高效率和确保安装一致性的关键技术。通过使用应答文件&a…