数据库三大范式设计原则

数据库三大范式

第一范式(确保每列保持原子性)

第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

在这里插入图片描述

第二范式(确保表中的每列都和主键相关)

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

比如要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键,如下表所示。

订单信息表
在这里插入图片描述
这样就产生一个问题:这个表中是以订单编号和商品编号作为联合主键。这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关。所以在这里违反了第二范式的设计原则。

而如果把这个订单信息表进行拆分,把商品信息分离到另一个表中,把订单项目表也分离到另一个表中,就非常完美了。如下所示。

在这里插入图片描述

第三范式(确保每列都和主键列直接相关,而不是间接相关)

表中的列不应派生于其他列
在这里插入图片描述
balance列可以由前两列得到,违反了第三范式

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

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

相关文章

第十节 JDBC事务

如果JDBC连接处于自动提交模式,默认情况下,则每个SQL语句在完成后都会提交到数据库。 对于简单的应用程序可能没有问题,但是有三个原因需要考虑是否关闭自动提交并管理自己的事务 - 提高性能保持业务流程的完整性使用分布式事务 事务能够控…

网络工程师——2024自学

一、怎样从零开始学习网络工程师 当今社会,人人离不开网络。整个IT互联网行业,最好入门的,网络工程师算是一个了。 什么是网络工程师呢,简单来说,就是互联网从设计、建设到运行和维护,都需要网络工程师来…

03在ESP-IDF中使用C++面向对象编程

在ESP-IDF中使用C和C进行混合编译 ESP-IDF是Espressif Systems开发的官方IoT开发框架,用于编程和开发ESP32系列的微控制器。虽然ESP-IDF主要使用C语言编写,但它也支持使用C进行开发 为什么要进行混合编译? C是一种功能强大的编程语言&…

Win11右键菜单恢复经典样式

一、使用Cmd恢复Windows 11上的经典上下文菜单 1.使用管理员权限打开Cmd 2.复制并粘贴以下代码,然后按enter键 reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f 二、使用Cmd恢复Windows 11上的默认…

Spring事务实现原理和工作原理

文章目录 Spring事务实现原理1. **事务管理器(Transaction Manager)**:2. **事务定义(Transaction Definition)**:3. **切面(Aspect)**:4. **代理对象(Proxy&…

web中实现一个账号同一时间只能由一个人使用

实现一个账号同一时间只能由一个人使用,通常需要在前端和后端同时进行控制。以下是一个基本的实现方案: 后端实现: 会话管理: 当用户登录时,生成一个唯一的会话标识(如Token或Session ID)。将该…

Java学习笔记(十五)IO流(二)

字符流 字符流其实就是字节流字符集,他在遇到相关的数据时会转变为相关的字节,例如遇到英文就转变为一个字节,遇到中文转变为三个字节 FileReader(读取数据类) 作用:纯文本文件-------->程序 将纯文…

【NR 定位】3GPP NR Positioning 5G定位标准解读(十五)-UL-TDOA 定位

前言 3GPP NR Positioning 5G定位标准:3GPP TS 38.305 V18 3GPP 标准网址:Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读(一)-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读(…

Linux:时间指令 - cal date

Linux:时间指令 - cal & date date指令cal指令 date指令 date用于以指定格式显示时间 我们先看看直接输入date指令的效果: [hxyiZ2zehtehrgzt3wqccrpyfZ CSDN]$ date Tue Mar 12 21:38:01 CST 2024直接输入date指令,得到了以 星期 月 日…

C#,数值计算,解微分方程的龙格-库塔二阶方法与源代码

1 微分方程 含有导数或微分的方程称为微分方程,未知函数为一元函数的微分方程称为常微分方程。 微分方程的阶数 微分方程中导数或微分的最高阶数称为微分方程的阶数。 微分方程的解 使得微分方程成立的函数称为微分方程的解。 微分方程的特解 微分方程的不含任意常数的解称…

软考介绍的创新技术

本博客地址:https://security.blog.csdn.net/article/details/136632895 一. 信息物理系统 1、信息物理系统(CPS)通过集成先进的感知、计算、通信、控制等信息技术和自动控制技术,构建了物理空间与信息空间中人、机、物、环境、…

蚂蚁集团2025届暑期实习开始啦~

蚂蚁集团2025届暑期实习开始啦~欢迎大家投递信贷事业群-风险管理部的算法岗,找我内推哦~社招也有hc,欢迎大家沟通!

LeetCode 2129.将标题首字母大写:模拟(一个变量记录是否该大写)

【LetMeFly】2129.将标题首字母大写:模拟(一个变量记录是否该大写) 力扣题目链接:https://leetcode.cn/problems/capitalize-the-title/ 给你一个字符串 title ,它由单个空格连接一个或多个单词组成,每个…

STM32CubeIDE基础学习-STM32CubeIDE软件代码编写格式问题

STM32CubeIDE基础学习-STM32CubeIDE软件代码编写格式问题 前言 代码编写最好就是规定一个格式,或者建立一个偏好,这样写出来的代码就方便自己管理了,不然代码乱放下次打开工程就很难找到具体位置,如果规定了格式,那么…

Git 系列:简介安装以及配置管理

文章目录 简介安装简介Centos安装 配置管理[git help](https://www.git-scm.com/docs/git-help)概要选项示例git-doc [git config](https://www.git-scm.com/docs/git-config)概要选项变量示例 初始化配置 简介安装 简介 https://git-scm.com/ Git是一个开源的分布式版本控制…

软件测试知识面试题:测试计划关键、BUG流程、BUG描述、测试的整体覆盖率

文章目录 做好测试计划工作的关键是什么?公司的BUG流程是什么?如何提交一个好的bug?BUG描述包含哪些内容?讲述自己在项目中发现最有意义的一个 BUG,是什么导致出现这个问题?(例子)对…

Python 进行把图片转换为pdf

文章目录 Python 进行把图片转换为pdfPDF文件格式什么是PyMuPDF使用demo Python 进行把图片转换为pdf PDF文件格式 可移植文档格式(PDF)属于最常用的数据格式。在1990年,PDF文档的结构由Adobe定义。PDF格式的思想是,对于通信过程…

理论学习:Softmax层和全连接层 全连接层之前的数据

Softmax层和全连接层 Softmax层和全连接层在深度学习模型中通常是紧密相关的,经常一起使用。 全连接层(也称为线性层或密集连接层)是深度学习模型中常见的层之一,它将输入张量与权重矩阵相乘,并添加偏置项,…

酒店宾馆医院IPTV电视系统质保期满后怎样进行维护?-酒店宾馆医院IPTV电视系统质保期满常年巡检售后服务攻略

酒店宾馆医院IPTV电视系统质保期满后怎样进行维护?-酒店宾馆医院IPTV电视系统质保期满常年巡检售后服务攻略 北京海特伟业任洪卓发布于2024年3月11日 一、酒店IPTV电视系统简述 酒店IPTV电视系统,是新时代“互联网”在酒店领域的重要应用之一&#xff…

15双体系Java学习之数组的声明和创建

数组的声明 ★小贴士 可以使用int[] a;或者int a[];建议使用第一种风格,因为它将元素类型int[](整型数组)与变量名清晰分开了。 在Java中声明数组时不能指定其长度。这种定义是非法的:int a[5]; 注意:上图显示的内存…