软考高级:数据库规范化: 1NF、2NF、3NF和 BCNF AI 解读

news2024/9/20 8:41:46

数据库的规范化是数据库设计中的一个重要过程,旨在减少数据冗余和提高数据一致性。它通过一系列规则(称为范式)来优化数据库表的结构。
在这里插入图片描述

常见的范式有1NF、2NF、3NF和BCNF。让我们分别来解释这些范式。

========== 生活化例子 ==========

想象你在整理一个家庭成员信息的表格

  • 1NF:每个成员的名字、电话、家庭住址都被记录在一张表里。如果某个成员有多个电话号码或地址,我们可能会直接把这些信息用逗号隔开放在一个单元格中。
  • 2NF:你意识到,把多个电话号码或地址放在同一个单元格中很不方便,所以你决定为每个电话号码或地址建立单独的行,但仍保持成员信息的一致性。
  • 3NF:后来你发现,不同的成员住在同一个地址,把地址信息在每个成员的记录里重复存储浪费空间。于是你把地址单独存到另一个表中,建立一种引用关系。
  • BCNF:当家庭成员的记录变得复杂时,你发现某些成员的信息没有唯一的主键可以标识。你进一步优化表结构,确保每一个信息都有唯一、明确的主键。

========== 概念讲解 ==========
在这里插入图片描述

  1. 第一范式 (1NF)

    • 1NF的核心是每一个字段只能存储单一的值,不能有重复的列或多值的列。举例来说,在一个联系人信息的表格中,如果某个人有多个电话号码,我们不能把这些电话用逗号分隔后放在一个字段里,而是要为每个电话号码建立单独的行。
      在这里插入图片描述
  2. 第二范式 (2NF)

    • 2NF要求数据满足1NF,同时每个非主键字段都必须依赖于整个主键。这意味着如果一个表有复合主键(多个字段作为主键),那么每个非主键字段都必须依赖于全部主键,而不是主键的一部分。
    • 例如,如果有一个“课程-学生”表,主键是“课程ID+学生ID”,但有一列是“课程名称”,显然这列只依赖于“课程ID”,而不是整个主键。这种情况违反了2NF,需要把课程信息和学生信息分开存储。
      在这里插入图片描述
  3. 第三范式 (3NF)

    • 3NF在满足2NF的基础上,要求非主键字段不能依赖于其他非主键字段。换句话说,非主键字段只能依赖于主键。
    • 比如,有一个“学生-班级”表,主键是“学生ID”,而表中有一列是“班级名称”,另一列是“班主任名字”。因为“班主任名字”依赖于“班级名称”而不是“学生ID”,这种情况违反了3NF,需要将班级信息拆分到一个独立的表中。
      在这里插入图片描述
  4. BCNF (Boyce-Codd范式)

    • BCNF是3NF的加强版,它更严格地要求表格中每个字段的依赖关系必须依赖于候选键(主键或唯一键)。即使数据已经满足了3NF,如果主键的设计不够合理(如非主键也可以决定其他字段),可能仍会出现数据冗余的问题。
    • 举例来说,如果有一个表,包含“教师ID”、“课程ID”和“教师办公室”。可能存在某些情况下,教师ID和课程ID组合并不能唯一决定教师办公室。这时,就需要通过BCNF的规则重新设计表结构,避免这种情况。

========== 简单记法 ==========

  • 1NF:单元格不能有多值,即“每个格子只能装一个东西”。
  • 2NF:部分依赖要拆分,即“字段不能只依赖主键的一部分”。
  • 3NF:传递依赖要消除,即“非主键字段不能依赖其他非主键字段”。
  • BCNF:候选键规范化,即“任何字段都要唯一依赖主键”。

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

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

相关文章

吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界

刚刚,阿里巴巴集团CEO、阿里云智能集团董事长兼CEO吴泳铭在2024云栖大会上发表主题演讲—— “ 过去22个月,AI发展速度超过任何历史时期,但我们依然还处于AGI变革的早期。生成式AI最大的想象力,绝不是在手机屏幕上做一两个新的超…

【论文阅读】Slim Fly: A Cost Effective Low-Diameter Network Topology 一种经济高效的小直径网络拓扑

文章目录 Slim Fly: A Cost Effective Low-Diameter Network Topology文章总结1. 摘要2. indroduction3. 主要工作 主要思想references Slim Fly: A Cost Effective Low-Diameter Network Topology Slim Fly:一种经济高效的小直径网络拓扑 SC’14 Maciej Besta 苏…

毕业设计选题:基于ssm+vue+uniapp的农产品自主供销小程序

开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…

实战OpenCV之图像阈值处理

基础入门 图像阈值处理是一种二值化技术,它基于预设的阈值,可以将图像中的像素分为两大类:一大类是背景,另一大类是前景或目标对象。这个过程涉及将图像中的每个像素值与阈值进行比较,并根据比较结果决定保留原始值还是…

已解决 Termius双击左键复制时,会自动输入Ctrl+C ^C

已解决 Termius双击左键复制时,会自动输入CtrlC ^C 一、问题现象 使用Termius双击左键复制时,会自动输入CtrlC,如图 二、解决办法 查阅了资料,又说是某翻译软件鼠标取词的问题,有说是输入法问题,众说纷纭…

AI免费UI页面生成

https://v0.dev/chat v0 - UI设计 cursor - 编写代码 参考:https://www.youtube.com/watch?vIyIVvAu1KZ4 界面和claude类似,右侧展示效果和代码 https://pagen.so/

【Python常用模块】_cx_Oracle模块详解

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…

【代码随想录训练营第42期 Day61打卡 - 图论Part11 - Floyd 算法与A * 算法

目录 一、Floyd算法与A * 算法 1、Floyd算法 思想 伪代码 2、 A * 算法 思想 伪代码 二、经典题目 题目一:卡码网 97. 小明逛公园 题目链接 题解:Floyd 算法 题目二:卡码网 127. 骑士的攻击 题目链接 题解:A * 算法&a…

基于java的工费医疗报销管理系统设计与实现

博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

单细胞BisqueRNA和BayesPrism去卷积分析工具简单比较

曾老师发来了一个工具,BisqueRNA,这个工具也可以用于单细胞/bulk数据的反卷积~ 因此本次就对这两个工具简单测评一下 ~ 生信菜鸟团:https://mp.weixin.qq.com/s/3dZQxDdY6M1WwMMcus5Gkg 笔者也曾经写过一个推文简单的介绍过,有…

C++的初阶模板和STL

C的初阶模板和STL 回顾之前的内存管理,我们还要补充一个概念:内存池 也就是定位new会用到的场景,内存池只会去开辟空间。 申请内存也就是去找堆,一个程序中会有很多地方要去找堆,这样子效率会很低下,为了…

必知的PDF转换软件:看2024大学生如何选择

你翻翻你文件的下载记录,是不是PDF文件占了大多数?很多是为了保证页面版式直接收到打印手填再扫描或者直接提交。但是如果能够直接在电脑上编辑之后直接转发或者打印是不是方便了很多?这次我就介绍几款可以进行PDF转换操作的工具,…

高效开发,从暗藏玄机的文件系统开始

4G-Cat.1模组的文件系统关乎数据传输速度、存储效率,以及数据安全性等等诸多因素,在应用开发中极为重要。 本期,我们来学习合宙Air201的实用示例——文件系统的使用 Air201文件系统的使用 合宙Air201资产定位模组——是一个集成超低功耗4G通…

AntFlow系列教程之流程拒绝

这是开源项目AntFlow的一个系统入门使用教程.AntFlow是一款开源免费的企业级低代码工作流引擎.仿照钉钉设计,极大降低流程设计、开发和维护成本。详细介绍请查看历史文章:AntFlow开源仿钉钉低代码工作流平台集成RuoYi版本来啦 流程拒绝和流程同意提交的参数是一样的…

Ubuntu20.04 搜索不到任何蓝牙设备

电脑信息 联想扬天YangTianT4900k 问题描述 打开蓝牙之后,一直转圈,搜索不到任何蓝牙设备 排查 dmesg | grep -i blue 有如下错误: Bluetooth: hci0: RTL: unknown IC info, lmp subver 8852, hci rev 000b, hci ver 000b lsusb 芯片型号如…

MySQL数据库的使用

MySQL数据库的启停 先用管理员身份进入系统终端,然后再在终端中输入命令 启动 net start mysql84(你所安装的MySQL版本名称) 停止 net stop mysql84 不知道所安装的MySQL是什么版本?👇 首先打开cmd命令窗口&…

sqli-labs靶场搭建

下载了一个phpstudy进行搭靶场搭建 然后打开phpstudy安装好php,mysql等环境 正式sqli-labs靶场搭建 第一步:下载源码:https://codeload.github.com/Audi-1/sqli-labs/zip/master 解压后放进网站根目录,进到 sqli-labs的文件夹下&#xff0…

分享6个.NET开源的AI和LLM相关项目框架

前言 现如今AI应用的发展可谓是如火如荼的,它们在各个领域都展现出了巨大的潜力和影响力。今天大姚给大家分享6个.NET开源的AI和LLM相关的项目框架,希望能为大家提供一些参考。如果你有更好的推荐,欢迎RP投稿或文末留言。 https://github.c…

虚拟机之与物理机进行文本的复制粘贴

打开终端(快捷键CtrlAltt)。🖥️ 安装Open VM Tools,输入以下命令: sudo apt-get install open-vm-tools-desktop -y安装这个工具包可以增强虚拟机的功能,包括支持主机与虚拟机之间的复制粘贴,…

台球瞄准的投掷效应或者耦合效应

https://www.zhihu.com/question/27659022 怪不得理论上算的角度, 实际上打总是便宜, 原来这里面还有两个球之间的摩擦.也就是: 老师,这是您八年前的提问。我个人理解是:目标球会跟着主球往同一个方向走。打个比喻就是“目标球”会坐上“主球”的“火车”…