数据库设计三大范式

news/2024/11/16 23:39:21/

数据库设计三大范式
范式就是数据库表设计的依据,教你怎么进行数据库表的设计的。
● 第一范式:要求任何一张表都必须要有主键,每一个字段原子性不可再分。
● 第二范式:建立在第一范式的基础之上,要求所有非主键字段完全依赖主键,不要产生部分依赖。对应:多对多,三张表,关系表两个外键。
在这里插入图片描述

● 第三范式:建立在第二范式的基础之上,要求所有非主键字段直接依赖主键,不要产生传递依赖。对应:一对多,两张表,多的表加外键。
在这里插入图片描述

设计数据库表的时候,按照以上的范式进行设计,可以避免表中数据的冗余,空间的浪费。
口诀:
● 多对多,三张表,关系表两个外键!!!
● 一对多,两张表,多的表加外键!!!
● 一对一,外键唯一!!!
● 一对一,在实际的开发中,可能存在一张表字段太多,太庞大,这个时候就要拆分表。
实际和理论有的时候是有误差的,有的时候会拿冗余去换执行速度。
有的时候存在冗余,但是为了减少表连接的次数,这么做也是合理的,并且对于开发人员来讲,sql语句的编写难度,也会降低。


http://www.ppmy.cn/news/73417.html

相关文章

在服务器上重新运行flask项目

我昨天运行我的flask项目,因为依赖冲突而重新生成了requirements.txt,现在我需要重新创建虚拟环境吗? 删除了一个依赖:flask_jwt 是的,建议您在生成新的 requirements.txt 文件后重新创建虚拟环境。这样可以确保您的…

2023年NOC大赛创客智慧编程赛项Python 复赛模拟题(二)

题目来自:NOC 大赛创客智慧编程赛项Python 复赛模拟题(二) NOC大赛创客智慧编程赛项Python 复赛模拟题(二) 第一题: 编写一个成绩评价系统,当输入语文、数学和英语三门课程成绩时,输出三门课程总成绩及其等级。 (1)程序提示用户输入三个数字,数字分别表示语文、数学、…

能否在Ubuntu上创造一个虚拟的Ubuntu环境?

可以的。在 Ubuntu 上创建虚拟的 Ubuntu 环境的方式有很多种,常用的有使用 Docker 和虚拟机(如 VirtualBox,VMware)等。 方法 使用 Docker: Docker 是一种容器技术,它能够让你在隔离的环境中运行应用程序。Docker 可…

Linux Audio (7) DAPM-4 Path/Route添加过程

DAPM-4 Path/Route添加过程 route分类:route转化为Pathcodec驱动add widgetMechine驱动add kcontrol route分类: 常规route {“sink”, NULL, “source”},其path->connect1 sink widget是Mixer {“Mixer”, name1, “source1”} {“Mixe…

[CISCN 2019华东南]Web4 day5

考察:任意文件读取 获取网卡地址 伪随机 打开界面,点击read somethings直接进行了跳转 直接修改url,发现没显示,但是访问错误的路由就会有no response 读取flag也无果,那就读一下/app/app.py,为什么读这个&…

OpenPCDet系列 | 5.4.1 DenseHead中的AnchorGenerator锚框生成模块

文章目录 AnchorGenerator模块AnchorGenerator.generate_anchors函数 AnchorGenerator模块 首先,根据点云场景将其划分为一个个grid,这个grid size是可以通过配置文件设定的点云场景方位和voxel大小计算出来的。 POINT_CLOUD_RANGE: [0, -39.68, -3, 6…

医院上线“报告中心”,实现报告查询“四个更好”

为进一步提升患者的就诊体验,不少医院部署云影像后,再次上线博为软件报告中心信息系统,患者和家属动动手指就能在自己手机上随时随地看到检查检验报告,彻底告别传统的纸质报告单方式,实现检查检验数据永久保存。 博为…

【算法题解】29. 组合的递归解法

这是一道 中等难度 的题 https://leetcode.cn/problems/combinations/ 题目 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4], [3,4…