第11章 数据库技术(第一部分)
一、数据库技术术语
(一)术语
1、数据
- 数据描述事物的符号
- 描述一个对象所用的标识,可以文字、图形、图像、语言等等
2、信息
- 现实世界对事物状态变化的反馈。
- 可感知、可存储、可加工、可再生。
- 数据是信息的表现形式和载体,信息是加载于数据之上,对数据作具有含义的解释。
3、数据库
- 按照数据结构来组织、存储和管理数据的仓库。
- 数据库时按照一定的数据模型组织、存储和应用的数据的集合。
- 数据间联系紧密、数据冗余度小、数据独立性高、容易扩展、便于共享。
(二)相关术语
1、关系(单一数据结构、表文件)
- 关系模型的逻辑结构是一张二维表,这个二维表就是关系。
- 一个关系对应一张表。
- 关系数据库的表采用二维表格存储数据,按行与列排列的具有一些信息的逻辑组。
2、属性(字段)
- 每一列称为一个字段,每个字段描述所含有的数据的意义。
- 数据表的设计实际上是对字段的设计。
- 字段可以包含各种字符、数字甚至图形
- 为每个字段分配一个数据类型
3、元组(记录)
- 表中的一行称为一个元组或一条记录。
4、分量
- 给定一个元组后,这个元组的第一个属性就是该元组的第一个分量
- 元组中的一个属性就是一个分量,一系列元组同一分量的集合就是关系属性(二维表中的列)。
5、关系模式
- 对关系的描述,记为R(A1, A2, ···, An),关系名(属性1,属性2,……,属性n)
6、候选码/候选键
- 能够唯一标识关系中某一元组的一个属性或属性集
- 需要满足:唯一性、最小性(构成候选码的属性个数最少)
7、主码/主键/关系键/关键字
- 从候选码中选一个作为查询、插入、删除元组操作的操作变量
- 最具代表性
- 用实线标识
8、外码/外键
- 涉及两个关系
- 在一个关系中的属性,在另一个关系中作主键,为外键。
- 用虚下划线标识
9、主属性/非主属性
- 主属性:包含在任何一个候选码的各个属性称为主属性
- 非主属性:不包含在任何候选码中的属性
10、全码
- 一个关系中把所有属性放在一起组成一个属性组才能唯一标识关系中的每一元组,这样的属性组叫做全码(ALL KEY)。
二、三级模式/两级映像
(一)三级模式
有效组织、管理数据,提高数据库的逻辑独立性和物理独立性。
1、外模式(子模式/用户模式,对应于用户级 用户观)
- 可以有多个
- 从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据,数据库中局部数据的逻辑结构和特性的描述。
- 用户通过外模式描述语言来描述、定义对应于用户的数据记录,也可使用DML对这些数据记录进行操作。
- 对应关系数据库中的视图。
2、模式(概念模式/逻辑模式,对应于概念级 整体观)
- 数据库中全体数据的全局逻辑结构和特性的描述。
- 由DDL(数据模式描述语言,Data Description Language)描述、定义的
- 对应关系数据库中的基本表。
3、内模式(存储模式/物理模式,对应于物理级 存储观)
- 只有一个
- 数据在数据库系统内部物理结构和存储结构的描述。
- 对应关系数据库中的文件。
(二)两级映像
对象关系映射(ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。
1、外模式/模式的映像
- 保证数据与应用程序间的逻辑独立性:
应用程序更改时,可不改模式。
模式更改时,不影响数据库的程序。 - 实现外模式到模式的相互转换。
2、模式/内模式的映像
- 保证数据与应用程序间的物理独立性:
应用程序、外模式、模式更改,不改内模式。
内模式更改时,不用改应用程序、外模式、模式。 - 实现模式到内模式的相互转换
(三)数据库管理系统
1、数据库的安全性
- 防止不合法、非法用户去使用数据库对数据造成破坏泄露等
2、数据库的完整性
- 数据库的正确性和相容性,防止合法用户使用数据库时,向数据库里加入不符合语义的数据。
3、并发控制
- 多用户访问时,并发控制负责协调事务的执行能力,保证数据库完整性和一致性不被破坏。
4、故障恢复
- 数据库发生故障,将其恢复到发生故障前的一致性的状态的情况。
三、完整性约束
防止的是对数据的意外破坏。
(一)实体完整性
- 在关系R中,主属性不能为空。
- 主键是已经作为约束的候选键。
(二)用户自定义完整性
- 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。
- 比如年龄必须为大于0小于150的整数。
(三)参照完整性/引用完整性
- 当前关系外键的取值必须等于另一个关系中的一个主键值、或者为空(null)。
- 规定,若F是基本关系R的外码,它与基本关系S的主码K,相对应(基本关系R和S不一定是不同的关系),则R中每个元组在F上的值必须为:或者取空值;或者等于S中某个元组的主码值。
四、数据库设计
(一)分布式数据库
1、透明性
用户只用关心业务,不用关系数据库相关问题。
2、透明性分类
- 分片透明
用户不用关心数据在数据库中如何被分割成片,但会通过应用程序从数据库取到后完整呈现给用户。 - 复制透明
分布式数据库分布到网络中不同节点,节点间的数据需要复制同步,用户不需要关心如何复制同步。 - 位置透明
用户不需要关注所操作的数据存放在哪个位置。 - 局部映像透明性(逻辑透明)
最低层次的透明
局部数据模型透明,即用户或应用程序无需知道局部使用是哪种数据模型
(二)DBA(数据库管理员)
职责
(三)数据库设计的阶段
1、用户需求分析
2、概念结构设计
- 主要工具是E-R模型,生成E-R图。
3、逻辑结构设计
- 将E-R图转成对应关系数据库支持的数据库表、表之间的关系情况等。
- 逻辑结构设计是在概念结构设计的基础上进行的数据模型设计,可以是层次、网状模型和关系模型。由于当前的绝大多数DBMS都是基于关系模型的,E-R方法又是概念结构设计的主要方法,如何在全局E-R图基础上进行关系模型的逻辑结构设计成为这一阶段的主要内容。
- 在数据库逻辑结构设计阶段,需要需求分析阶段形成的需求说明文档、数据字典和数据流图作为设计依据。
4、物理结构设计
- 涉及数据存储结构及存储结构控制等
五、E-R模型
E-R图:实体关系图。
(一)3要素
1、实体(E)
- 客观存在的对象,对象间相互区分
2、联系(R)
- 对象与对象间的关系。
3、属性
- 实体具体的一个特征,通过一系列特征反映实体状态。
- 有多种类型。
(二)图例
(三)实体的属性
属性是一个实体具体的一个特征,一系列特征能描述一个对应的实体。
1、简单属性
- 一个不可分割的属性,是原子的。
2、复合属性
- 一个可细分为一系列简单属性构成的属性。
3、单值属性
- 针对一个元组来讲,某一个分量的取值是单一的。
- 二进制的表示,要么取值0,要么取值1。
4、多值属性
- 针对一个元组来讲,某一个分量的取值是多个的。
5、NULL属性
- 表示空,数据库中没有输入数据的对象。
6、派生属性
- 根据其他属性的值计算出值的属性。
(四)E-R模型的联系
1、一对一(1:1)
2、一对多(1:n)/(1:*)
3、多对多(m:n)/(:)
六、函数依赖公理系统
(一)函数依赖
1、函数依赖
- 大的决定小的
2、完全函数依赖
- 右侧被决定的一方完全只依赖于左侧。
3、部分函数依赖
- 右侧被决定的一方只依赖于部分左侧。
4、传递函数依赖
- A决定B,B决定C===A决定C(C依赖于A)
(二)函数依赖的公理系统
七、规范化
(一)确定候选码
- 首先应该找出F中所有的决定因素,即找出出现在函数依赖规则中“→”左边的所有属性,组成集合U1
- 再从U1中找出一个属性或属性组K,运用Armstrong公理系统及推论,使得K→U,而K真子集K’→U不成立
- 这样就得到了关系模式R的一个候选码,找遍U1属性的所有组合,重复过程(2),最终得到关系模式R的所有候选码
- 注意:如果已经找到了一个候选码K,K是U1的一个子集,那么找下一个候选码时,就不需要考虑 K与U1中其他属性的组合
(二)判定1~4NF的主要依据
-
1NF
每个分量是不可再分割的数据项 -
2NF
在1NF的基础上,非主属性对码不存在部分依赖 -
3NF
在2NF的基础上,非主属性对码不存在传递依赖 -
BCNF
在1NF基础上,主属性对码不存在部分和传递依赖 -
4NF
在全键表中,键的一部分可以确定至多一个其他字段的多个值若关系模式R属于1NF,R的每个非平凡多值依赖X→→Y且Y不属于X时,X必含有码,则关系模式R(U,F)属于4NF。如:若实体中存在多值属性,那么将E-R图转为关系模式时将实体的码分别和每个多值属性独立构成一个关系模式得到的关系模式属于4NF
八、SQL语句
(一)创建视图
1、概念
- 视图相当于一个虚拟表,本身不存储数据,本质是存储起来的select语句
- 视图本身的删除,不会导致基表中数据的删除。
- 大型项目考虑使用视图。
2、作用
- 对机密数据提供安全保护,屏蔽后台数据复杂性;
- 根据用户需求,定制特别的数据;
- 以多种角度看待同一数据;
- 对重构数据库提供一定逻辑独立性。
3、语法
CREATE VIEW 视图名AS SELECT 子句WITH CHECK OPTION
建立计算机系CS学生的视图
CREATE VIEW vwCSAS SELECT Sno, Sname, Sage FROM studentWHERE Sdept= 'cs'WITH CHECK OPTION
(二)select语法
SELECT <列名>[···n]FROM <表名|视图名> [,···n][WHERE <条件表达式>]
1、简单查询
- 查询员工号为2的员工的姓名和工龄
SELECT 姓名, 工龄FROM 员工表WHERE 员工号=2
2、连接查询
- 查询部门名为“企业信息部”,且在2022年2月2日后入职的员工工号、姓名和性别
SELECT 员工号, 姓名, 性别FROM 员工表, 部门表WHERE 员工表.部门号=部门表.部门号AND 部门.名称='企业信息部'AND 参加工作时间>'2022-02-02'
- 字符类型,日期类型的数据需要使用单引号
(三)聚集函数
1、函数
函数名(列名)
- 平均值AVG
- 最小值MIN
- 最大值MAX
- 求和SUM
- 计数COUNT
2、查询员工总数
SELECT COUNT (*) AS 雇员总数FROM 员工表
3、查询部门人员少于5个的部门号
SELECT 部门号, COUNT (部门号)FROM 员工表GROUP BY 部门号HAVING COUNT (部门号)<5
(四)授权语句
1、语法
GRANT <权限>[,··· n]ON <对象类型><对象名>TO <用户>[,··· n]WITH GRANT OPTION
2、将员工表查询、更新的权利赋予给用户U1
GRANT SELECT, UPDATEON TABLE 员工 TO U1
3、将对供应商S的插入权限赋给用户U1,并允许将此权限赋给其他用户
GRANT INSERT ON TABLE S TO U1WITH GRANT OPTION
九、关系代数运算
(一)关系代数运算符
(二)笛卡尔积
- 将笛卡尔积转换成关系数据库的二维表
(三)广义笛卡尔积
(四)投射
(五)选择
(六)连接
1、θ连接
2、自然连接
相关文章:

第11章 数据库技术(第一部分)
一、数据库技术术语 (一)术语 1、数据 数据描述事物的符号描述一个对象所用的标识,可以文字、图形、图像、语言等等 2、信息 现实世界对事物状态变化的反馈。可感知、可存储、可加工、可再生。数据是信息的表现形式和载体,信…...

数据结构––队列
1.队列的定义 2.队列的分类 2.1循环队 2.2链式队 3.队列的实现 3.1循环队 3.1.1声明 typedef int QDataType; #define MAXSIZE 50 //定义元素的最大个数 /*循环队列的顺序存储结构*/ typedef struct {QDataType *data;int front; //头指针int rear; //尾指针 }Queue;…...
010_redhat安装zookeeper
目录 1.环境准备2.下载上传zookeeper安装包1)[官网下载zookeeper-3.6.4安装包](https://archive.apache.org/dist/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz)2)创建soft文件夹 3.解压4.配置启动1、配置zoo.cfg2、启动zookeeper 小结 1.环境准备 准备一台l…...
【网络】gateway 可以提供的一些功能之一 “ 提供web静态资源服务 ”
gateway 可以提供的一些功能之一 “ 提供web静态资源服务 ” 一、提供web静态资源服务1.1、web静态资源服务是什么1.2、web静态资源服务有什么作用1.3、web静态资源服务怎么实现 二、提供Restful服务器路由转发三、支持Eureka服务发现四、服务检查五、灰度发布 一、提供web静态…...

MySQL第一次作业
解压完安装包 以管理员进入命令行 初始化并记住初始随机密码 创建服务名称 启动mysql 使用随机密码登录 修改密码 退出并重登服务器 MySQL创建数据库和表 创建数据库 创建表 1.进入数据库 创建表 向表中插入数据...

详解LLMOps,将DevOps用于大语言模型开发
大家好,在机器学习领域,随着技术的不断发展,将大型语言模型(LLMs)集成到商业产品中已成为一种趋势,同时也带来了许多挑战。为了有效应对这些挑战,数据科学家们转向了一种新型的DevOps实践LLM-OP…...

牛客NC275 和为S的两个数字【简单 map C++/Java/Go/PHP】
题目 题目链接: https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b 思路 map参考答案C #include <vector> class Solution {public:vector<int> FindNumbersWithSum(vector<int> array, int sum) {vector<int> ans;m…...
ax200/ax201/ax210/ax211/ax411等intel网卡无法开启5G热点问题解决方案汇总
目录 故障原因解决方案windowslinuxkernel < 5.5kernel > 5.5方案1 修改linux内核模块代码(iwlwifi内核模块),重新编译内核模块并重新导入方案2 修改hostapd代码 最后更新于2024.04.28 故障原因 根本原因是因为英特尔在内核中开启了LA…...

JVM的垃圾回收机制(GC机制)
在Java代码运行的过程中,JVM发现 某些资源不需要再使用的时候,就会自动把资源所占的内存给回收掉,就不需要程序员自行操作了。“自动回收资源”就是JVM的“垃圾回收机制”,“垃圾回收机制”也称"GC机制"。 对于Java代码…...

分布式光伏管理系统和一般的光伏管理系统相比有什么区别?
随着全球对可再生能源的关注度日益提高,光伏技术作为其中的佼佼者,已经得到了广泛的应用。在光伏技术中,管理系统扮演着至关重要的角色,它关乎着光伏电站的运行效率、能源产出以及运维成本等多个方面。其中,分布式光伏…...

Linux migrate_type进一步探索
文章接着上回Linux migrate_type初步探索 1、物理页面添加到buddy系统 我们都知道物理内存一开始是由memblock进行分配管理,后面会切换到buddy系统管理。那么接下来我们看一下,memblock管理的物理页面是怎么添加到buddy系统中的。 start_kernel() -&g…...

强化学习:时序差分法【Temporal Difference Methods】
强化学习笔记 主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程,个人觉得赵老师的课件深入浅出,很适合入门. 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 第四章 值迭代和策略迭代 第五章 强化学习实例分析:GridWorld…...

数据结构-二叉树-二叉搜索树
一、概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者具有以下性质的二叉树: 若它的左子树不为空,则左树上所有节点的值都小于根节点的值。 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。 它…...
Linux 磁盘管理命令df du dd
文章目录 3.Linux 磁盘管理命令3.1 df:显示报告文件系统磁盘使用信息案例练习 3.2 du:显示目录或者文件所占的磁盘空间案例练习 3.3 dd:磁盘操作案例练习 3.Linux 磁盘管理命令 3.1 df:显示报告文件系统磁盘使用信息 作用&#x…...
Leetcode 3138. Minimum Length of Anagram Concatenation
Leetcode 3138. Minimum Length of Anagram Concatenation 1. 解题思路2. 代码实现 题目链接:3138. Minimum Length of Anagram Concatenation 1. 解题思路 这一题的话我们首先统计出来所有的字母出现的频率。 然后,我们只需要从头开始重新计数一下&…...

IT廉连看——UniApp——样式绑定
IT廉连看——UniApp——样式绑定 一、样式绑定 两种添加样式的方法: 1、第一种写法 写一个class属性,然后将css样式写在style中。 2、第二种写法 直接把style写在class后面 添加一些效果:字体大小 查看效果 证明这样添加样式是没有问题的…...
垃圾的flinkcdc
在 MySQL 中,创建表时使用反引号 将表名或字段名括起来的作用是: 保留字和关键字: 使用反引号可以避免使用MySQL的保留字和关键字作为表名或字段名时产生的冲突。比如,你可以创建一个名为 select 或 order 的表: sqlCopy Code C…...

关于视频号小店,常见问题解答,开店做店各方面详解
大家好,我是电商笨笨熊 视频号小店作为今年风口,一个新推出的项目,凭借着自身流量加用户群体的优势吸引了不少的电商玩家。 但对于很多玩家来说,视频号小店完全是一个新的项目、新的领域,因此也会存在很多的疑问&…...

Debian mariadb 10.11设定表名 大小写不敏感方法
目录 问题表现:应用中查询 表提示 表不存在 处理步骤: 1、查询表名大小写敏感情况: show global variables like %case%; 2、修改mariadb 配置设置大小写 不敏感 mysql 配置大小写不敏感 mariadb 10.11设置表名大小写不敏感 /etc/mysq…...

常用六大加密软件排行榜|好用加密文件软件分享
为了保障数据安全,越来越多的企业开始使用文件加密软件。哪款加密软件适合企业哪些办公场景呢? 今天就给大家推荐一下文件加密软件排行榜的前六名: 1.域智盾 这款软件专为企业和政府机构设计,提供全面的文件保护解决方案。 点…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

Linux-进程间的通信
1、IPC: Inter Process Communication(进程间通信): 由于每个进程在操作系统中有独立的地址空间,它们不能像线程那样直接访问彼此的内存,所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...

结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...