第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.域智盾 这款软件专为企业和政府机构设计,提供全面的文件保护解决方案。 点…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
【实施指南】Android客户端HTTPS双向认证实施指南
🔐 一、所需准备材料 证书文件(6类核心文件) 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...

C++--string的模拟实现
一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...