mysql笔记6(数据库设计思维)

news2025/1/12 1:50:36

文章目录

  • 1. 数据库设计基本概念
    • ① 什么叫关系?
    • ② 什么叫行?
    • ③ 什么叫列?
    • ④ 什么叫表结构?
    • ⑤ 为什么要提到实体和属性?
    • ⑥ 为什么有时候会在两张不同的表里建立重复的字段?
    • ⑦ 为什么有时候会故意设计一些冗余字段?
    • ⑧ 什么叫保证数据完整性?
  • 2. 实体和实体之间的关系
  • 3. Codd第一范式:确保每列原子性
  • 4. Codd 第二范式:非键字段必须依赖于键字段
  • 5. Codd第三范式:消除传递依赖
    • 补充
  • 6. 内容出处

1. 数据库设计基本概念

① 什么叫关系?

        你这张表里有stu_id,我这张表里也有stu_id,那么我们这两张表就建立了关系。可以通过创建主键、外键将两张表联合在一起,就算没有外键这两张表也可以确定关系。
        mysql就是典型的关系型数据库。关系型数据库就是通过两张表的共有字段去确定数据的完整性。

② 什么叫行?

行就是一条数据记录(高级点的说法:一个实体)

③ 什么叫列?

列就是一个字段(高级点的说法:一个属性)

④ 什么叫表结构?

表结构:对于字段而言:我们说行、列
              对于数据而言:我们说字段、记录(数据)
在这里插入图片描述
① 输入desc + 表名;以后就可以看到该表的结构状况(字段、数据类型、是否为空、key、default、extra等)
② 输入 select * from 表名; 以后看到的也是该表的结构状况(字段、数据)

⑤ 为什么要提到实体和属性?

这是根据面向对象语言(OOP)来的,可以联想一下Java里的实体和属性

⑥ 为什么有时候会在两张不同的表里建立重复的字段?

例如:上述学生表和食堂表里都有stuId,且该字段的数据是相同的。设想一下,如果食堂表里没有stuId会出现什么情况?无法查询某位学生在食堂的消费记录 – 这就是原因

⑦ 为什么有时候会故意设计一些冗余字段?

例如:高考成绩会列出各个科目的单科成绩,我们根据单科成绩就可以计算出总分,为什么还要单列总分这个字段?
这个字段看似没有必要设计,但是有时候我们需要考虑到并发操作。高考查成绩的人数非常多,虽然增加总分这个字段会消耗一定的性能,但是也可以在一定程度上提高查询效率。
数据冗余:只可能减少,不可能杜绝。减少数据冗余的方法:分表

⑧ 什么叫保证数据完整性?

选择的数据类型、数据范围正确
第7点

2. 实体和实体之间的关系

实体与实体之间的关系(简单来说就是一条数据记录与一条数据记录之间的关系):一对一、一对多、多对多、多对一
在这里插入图片描述
(一对多的例子:一个学生有好多条餐厅的消费记录)
可以结合数学函数中的对应关系来理解

3. Codd第一范式:确保每列原子性

即确保字段的原子性:确保每列的字段不可再分
例如:
① 字段(课程起止时间)就是可再分的,可以分成开始时间和结束时间
② 字段(money、age等)就是不可再分的
注意:有时我们需要根据项目来决定是否继续划分字段。需要统计数据时就拆分,不需要统计就不拆分
例如:
① 如果要统计各个地区(各个市)的人数,此时就需要划分
② 如果要收集某班学生的家庭住址,此时某个字段的值就可以填写成xx省xx市xx县xx,不需要继续划分该字段

4. Codd 第二范式:非键字段必须依赖于键字段

简单来说就是一张表只能描述一件事,说白了就是别没事找事
在这里插入图片描述
例如:stu这张表就是存储学生基本信息的,eatery这张表就是存储学生在餐厅的消费记录的。不能说我在stu这张表里再加一个字段money存储学生这个月有多少零花钱、加一个字段course存储学生这学期修了什么课,这就乱套了。

5. Codd第三范式:消除传递依赖

简单来说就是多余字段要尽可能删除
例如:高考成绩有了各科成绩就可以直接确定总分,sql语句查的时候或者代码里写上各科成绩查出来以后直接相加然后返还给用户就可以了,没必要设计总分这个多余的字段。虽然高考成绩此处的总分不能删除,但是其它时候需要考虑一下是否删除总分这个字段。

补充

数据库一共有六个范式,我们应该尽可能去遵守。可是事实上,我们能用三种就不错了。

6. 内容出处

mysql

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

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

相关文章

pgAdmin 4备份数据库失败,解决

pgAdmin4中,必须先设置二进制路径;binary paths pgAdmin4操作路径,File—>Preferences—>Paths—>Binary paths 找到postgreSQL的安装目录,bin目录复制,然后设置在截图标记位置; 再去备份数据库就…

uView使用心得

说实话我不爱用这个库,感觉很鸡肋,坑很多,可能没用习惯 picker选择器 绑定默认值是通过设置index,并且这个index需要通过api设置进去,设置defalutindex绑定值无效(只有初始化可以,后面动态改变…

Marin说PCB之在CST软件中如何搭建两端子电容器--03

上期文章的结尾讲到的问题不知诸位大神们是否还记得:就是一颗新电容器的物料是否可以完全替换掉之前的Murata家的这个GRT033D70E105ME18物料? 小编我也看了私信有不少的人认为是可以替换掉的,原因是两个电容封装,容值都是一样的&a…

中国科技统计年鉴1991-2020年

(数据收集)中国科技统计年鉴1991-2020年.Excel格式资源-CSDN文库https://download.csdn.net/download/2401_84585615/89475658 《中国科技统计年鉴》是由国家统计局社会科技和文化产业统计司与科学技术部战略规划司共同编辑的官方统计资料书&#xff0c…

web基础之文件上传

1.下载安装 下载地址 链接:百度网盘-链接不存在 提取码:jhks 安装 直接把他放在phpstudy的WWW目录中。(phpstudy的下载安装,可以自行百度一下) 打开 访问地址:127.0.0.1/upload-labs 问题 这里可能…

每日一练:删除1链表的倒数第N个节点

19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode) 一、题目要求 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例…

Ubuntu在CMakeLists.txt中指定OpenCV版本的参考方法

文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境:   Ubuntu20.04, ROS-Noetic, OpenCV-4.2.0, OpenCV-4.5.4。 一、问题描述 编译运行OpenCV遇到如下报错: terminate called after throwing an instance of cv::Excep…

springbootadmin源码编译修改001_node版本管理工具nvm_任意切换node版本---VUE工作笔记0026

由于项目需要对springbootadmin的源码进行编译和修改. 但是springbootadmin的源码编译很麻烦,主要是由于,springbootadmin-server-ui这个项目,因为他是一个前后端分离的 vue项目,而且是使用 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.12 首先去下载,发…

Day 72

作业 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QLineEdit> #include <QLabel> #include <QIcon> #include <QPushButton> #include <QMovie> #include <QPainter> #include <QWidget> …

最好用的 Redis 可视化工具,不愧是官方出品,功能确实强大(带私活源码)

对于开发人员来说&#xff0c;很多人都用过Redis&#xff0c;它对于数据 key-value 结构的存储系统性能表现很优秀。 当然了&#xff0c;在很多的项目都用到。 当存储数据量比较大时&#xff0c;我们想要直观的看 Redis 里面的数据&#xff0c;除了代码&#xff0c;当然就要采…

基于Spark 的零售交易数据挖掘分析与可视化

基于Spark 的零售交易数据挖掘分析与可视化 本文将带你通过 PySpark 进行电商数据的分析处理&#xff0c;并将结果保存为 JSON 文件&#xff0c;供前端展示。我们将从数据的读取、处理、分析到结果保存和网页展示&#xff0c;覆盖完整的数据流。项目结构如下&#xff1a; 1、…

【HarmonyOS】鸿蒙头像上传-(编辑个人信息页- 头像上传)+实时数据更新

#效果图 #思路 ##步骤&#xff1a; ###一、利用picker api选择1张图片 实例化选择器参数(使用new PhotoSelectOptions())实例化图片选择器 (使用newPhotoViewPicker() )调用图片选择器的select方法传入选择器参数完成图片选取获得结果 利用picker api选择1张图片 async sele…

(一) 遥感中的大气窗口和 OBIA

摘要: 什么是地球的大气窗口? 不知您是否想过,光是如何穿过大气层到达地球的呢?这是源于大气中的臭氧、水、二氧化碳和其他分子,我们可以免受有害辐射的伤害。因此,我们只能看到电磁波谱的特定部分,这种现象被称为地球的“大气窗口”。 在遥感领域,传感器被建造来拾取那…

无人机巡检:突破传统局限,引领智能监测新时代

无人机行业正在经历快速发展&#xff0c;技术不断创新&#xff0c;应用领域不断拓展。从最初的航拍娱乐到如今的工业巡检、农业植保、物流配送、灾害救援等&#xff0c;无人机正展现出巨大的实用价值。如今&#xff0c;行业级无人机应用不断扩展&#xff0c;在测绘与泛测绘领域…

中控室控制台处在自动状态什么意思

在现代工业和智能控制系统中&#xff0c;中控室控制台作为集中控制和管理各种设备、系统和流程的核心&#xff0c;扮演着至关重要的角色。当提到中控室控制台处在自动状态时&#xff0c;这通常意味着控制台已经切换到一种高度智能化的工作模式&#xff0c;能够自动调整和管理各…

【Linux】数据链路层

一、数据链路层引入 1.1 数据链路层的功能 在网络层中&#xff0c;我们使用IP协议进行通信&#xff0c;需要进行跨网络转发到目标主机&#xff0c;本质上就是一个报文经历了无数个子网&#xff0c;而数据链路层就是解决在一个子网中如何传输报文的问题。 数据链路层的功能是&a…

通义灵码用户说:“人工编写测试用例需要数十分钟,通义灵码以毫秒级的速度生成测试代码,且准确率和覆盖率都令人满意”

通过一篇文章&#xff0c;详细跟大家分享一下我在使用通义灵码过程中的感受。 一、定义 通义灵码&#xff0c;是一个智能编码助手&#xff0c;它基于通义大模型&#xff0c;提供代码智能生成、研发智能问答能力。 在体验过程中有任何问题均可点击下面的连接前往了解和学习。 …

网络安全实训八(y0usef靶机渗透实例)

1 信息收集 1.1 扫描靶机IP 1.2 收集靶机的端口开放情况 1.3 探测靶机网站的目录 1.4 发现可疑网站 1.5 打开可疑网站 2 渗透 2.1 使用BP获取请求 2.2 使用工具403bypasser.py探测可疑网页 2.3 显示可以添加头信息X-Forwarded-For:localhost来访问 2.4 添加之后转发&#xff…

芯片设计项目管理:国内某知名芯片半导体企业引进 PowerProject,构建国产化项目管理平台

国内芯片设计行业发展快速&#xff0c;随着其行业技术能力的不断扩大&#xff0c;芯片设计涵盖的领域和内容愈加丰富&#xff0c;因此&#xff0c;对专业化的项目管理理念与思路提出了更高的要求。 近日&#xff0c;国内某知名芯片设计企业选择北京奥博思软件技术有限公司&…

jantic/DeOldify部署(图片上色)附带Dockerfile和镜像

1. 克隆代码到DeOldify git clone https://github.com/jantic/DeOldify.git DeOldifyDeOldify源码 2. 安装依赖 这里会安装python以及创建deoldify环境 cd DeOldify conda env create -f environment.yml(base) rootDESKTOP-1FOD6A8:~/DeOldify# conda env create -f environm…