数据库基本知识
-
数据库的基本概念
-
数据
- 描述事物的符号记录
-
信息
-
是具有时效性的,有一定含义的,有逻辑的、经过加工处理的、对决策有价值的数据流。
-
信息=数据+处理
-
-
信息与数据的联系
-
数据是信息的符号表示,或称载体
-
信息是数据的内涵,是数据的语义解释
-
数据是符号化的信息
-
信息是语义化的数据
-
-
数据库
Database DB
- 长期储存储在计算机内、有组织的、可共享的大量数据的集合
-
数据库管理系统
Database Management System DBSM
-
定义
-
位于用户与操作系统之间的一层数据管理软件
-
帮助用户定义、创建、维护和控制数据库访问的软件系统
-
-
四大主要功能
- 数据定义功能
- 提供数据定义语言(DDL) - 定义数据库中的数据对象
- 数据操纵功能
- 提供数据操纵语言(DML) - 实现对数据库的基本操作 :增、删、改、查
- 数据库的事务管理和运行管理
- 保证数据的安全性、完整性、并发控制、系统恢复
- 数据库的建立和维护功能
- 数据库初始数据的装载和转换 - 数据库备份、转储、恢复功能 - 数据库的重组织 - 性能监视、分析等
-
-
数据库系统
Database System DBS
-
定义
- 带有数据库的计算机系统
-
构成
-
数据库
-
数据库管理系统
-
应用程序
-
数据库管理员
DBA
* 具体职责 - 数据库设计 1. 决定数据库中的信息内容和结构 2. 决定数据库的存储结构和存取策略 3. 定义数据的安全性要求和完整性约束条件 - 监控数据库的使用和运行 - 数据库的改进和重组 1. 性能监控和调优 2. 定期对数据库进行重组织,以提高系统的性能 3. 需求增加和改变时,数据库须需要重构造
-
-
特点
-
数据结构化
-
不仅数据内部结构化,整体是结构化的,数据之间具有联系
-
数据用数据模型描述,无需应用程序定义
-
-
数据的共享性高,冗余度低且易扩充
-
数据独立性高
-
数据由数据库管理系统统一管理和控制
-
-
-
数据库应用系统
-
= 数据库系统 + 应用软件 + 应用界面
-
具体包括
1. 数据库 2. 数据库管理系统 3. 数据库管理员 4. 硬件平台 5. 软件平台 6. 应用软件 7. 应用界面
-
-
-
数据库系统的结构
-
从数据库应用开发人员角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构
-
数据库系统的三级模式结构
-
模式
-
外模式
-
内模式
-
-
-
数据库系统模式的概念
-
模式
Schema 也称概念模式、逻辑模式
-
数据库中全体数据的逻辑结构和特征的描述
-
所有用户的公共数据视图
-
一个数据库只有一个模式
-
模式的地位
- 是数据库系统模式结构的中间层 - 与数据的物理存储细节和硬件环境无关 - 与具体的应用程序、开发工具及高级程序设计语言无关
-
-
外模式
External Schema 也称子模式或用户模式
-
数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
-
由概念模式推导而出
-
一个概念模式可以有若干个外模式
-
外模式的地位
- 介于模式与应用之间
-
外模式的用途
* 保证数据库安全性的一个有力措施 * 每个用户只能看见和访问所对应的外模式中的数据
-
-
内模式
Internal Schema 也称存储模式、物理模式
-
是数据物理结构和存储方式的描述
-
是数据在数据库内部的表示方式
-
一个数据库只有一个内模式
-
-
小结:
模式、外模式、内模式三者地位关系
* 内模式处于最底层,反映了数据在计算机物理结构中的实际存储形式 * 概念模式处于中层,反映了设计者的数据全局逻辑要求 * 外模式处于最外层,反映了用户对数据的要求
-
-
二级映射
-
外模式/模式映射
映射实质就是一种对应规则,指出映射双方如何进行转换
-
定义外模式与模式之间的对应关系
-
每一个外模式都对应一个外模式/模式映射
-
用途
1. 保证数据的逻辑独立性 2. 当模式改变时,数据库管理员修改有关的外模式/模式映射,使外模式保持不变 3. 应用程序是依据数据的外模式编写的,从而应用程序不用改变,保证了数据与程序的逻辑独立性
-
-
模式/内模式映射
-
定义数据全局逻辑结构与存储结构之间的对应关系
-
数据库中模式/内模式映射是唯一的
-
用途
1. 保证数据的物理独立性 2. 当数据库的存储结构改变了,数据库管理员修改模式/内模式映射,使模式保持不变 3. 应用程序不受影响,保证了数据与程序的物理独立性
-
-
-
-
数据模型的基本概念
-
背景知识
-
将客观事物抽象为能用计算机存储和处理的数据需经历三个阶段
-
现实世界
-
信息世界
-
计算机世界(数据世界)
-
-
模型
- 是现实世界特征的模拟和抽象
-
-
数据模型
-
应满足的要求
-
能比较真实地模拟现实世界
-
容易为人所理解
-
便于在计算机上实现
-
-
分类
根据应用目的的不同
-
概念模型
-
按用户的观点来对数据进行描述,有效和自然地模拟现实世界,给出数据的概念化结构
-
强调以人为本,注重清晰、简单、易于理解
-
-
逻辑数据模型
-
按计算机系统的观点对数据进行描述
-
以计算机为本,站在计算机的角度去看待各个数据以及数据之间的联系
-
-
物理模型
- 给出计算机上物理结构的表示
-
-
定义
-
是数据特征的抽象
-
从抽象层次上描述了系统的静态特征、动态行为和约束条件
-
为数据系统的信息表示与操作提供一个抽象的框架
-
-
组成要素
-
数据结构
- 是所研究的对象类型的集合
-
数据操作
- 是指对相应数据结构允许执行的操作的集合 - 包括操作及有关的操作规则
-
数据的完整性约束
- 是一组完整性规则的集合 - 完整性规则 1. 是给定的数据模型中数据及其联系所具有的制约和依存规则 2. 以保证数据的正确、有效和相容
-
-
-
实体-联系 数据模型
-
实体
Entity
-
客观存在并可以相互区别的事物
-
可以是具体的人、事、物,也可以是抽象的概念或联系
-
-
实体型
- 用实体名及其属性名集合来抽象和刻画同类实体称为实体型
-
实体集
- 同一类型实体的集合称为实体集
-
属性
Attribute
-
实体的特性称为实体的属性
-
一个实体可以由若干个属性来刻画
-
-
码
Key
- 唯一标识实体的属性集称为码
-
联系
Relationship
-
在现实世界中,事物内部以及事物之间是有联系的
-
这些联系在信息世界中反映为—实体集内部的联系以及实体集之间的联系
-
两个实体集之间的联系分为三类
-
一对一联系 1:1
-
一对多联系 1:n
-
多对多联系 n:n
-
-
-
-
E-R 图
1. 也称实体-联系图 2. 用来描述现实世界的概念模型 3. 三要素: 实体、属性、联系
-
常用的数据模型
-
层次模型
-
用树形结构来表示各类实体以及实体间的联系
-
有且只有一个结点没有双亲结点,即根节点
-
根节点之外的其他结点有且只有一个双亲结点
-
只能直接处理一对多的实体联系
-
任何记录值只有按其路径查看时,才能显出它的全部意义
-
没有一个子女记录值能够脱离双亲记录值而独立存在
-
-
网状模型
-
允许一个以上的结点无双亲
-
一个结点可以有多于一个的双亲
-
有效地克服了层次模型不方便表达多对多联系的缺点
-
但由于网状模型的灵活性,数据库管理系统很难实现
-
-
关系模型
在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成
-
关系术语
- 关系(Relation)
- 一个关系对应一张二维表
- 元组(Tuple)
- 表中的一行即为一个元组
- 属性(Attribute)
- 表中的一列,即为一个属性 - 每列的第一行为属性名,其余行为属性值
- 主码/主键(Key)
- 也称码或键,表中的某个属性或属性组合,可以唯一标识一个元组
- 域(Domain)
- 是一组具有相同数据类型的值的集合。 - 属性的取值范围来自某个域
- 分量(Component)
- 元组中的一个属性值
- 关系模式(Relation Schema)
- 对关系的结构描述
-
关系应该满足的性质
- 关系必须是规范化的,即要求关系必须满足一定的规范条件,其中最基本的一条是——关系的每一列不可再分
- 关系中必须有主码,使得元组唯一
- 元组的个数是有限的且顺序可以任意交换
- 属性名是唯一的且属性列的顺序可以任意交换
-
关系的完整性规则
- 实体完整性规则
* 主码的属性值不能为空值 * 因为如果出现空值,那么主码就无法保证元组的唯一性
- 参照完整性
* 外码 1. 关系之间的联系是靠公共属性实现的 2. 如果该公共属性是一个关系R1的主码,那么在另一个与它有联系的关系R2中就成为外码 * 规定外码的取值只有两种可能,要么为空值,要么等于R1中某个元组的主码值
- 用户定义的完整性
* 针对某一具体应用的数据必须满足的语义要求
-
-
-
-
数据库安全性
-
数据库的主要安全风险
-
越权权限的滥用
-
数据库权限设置违反了“权限最小原则”在很多信息系统中比较普遍
-
如果这些超出的权限被滥用,则极易发生敏感数据泄漏事件
-
-
合法权限滥用
-
系统中总是有一部分用户合法的拥有较大甚至是超级管理权限
-
如果这些权限被滥用,则极易发生严重后果
-
-
权限盗用
- 由于商用数据库的用户认证方式主要为单一的口令方式,权限盗用容易发生,进而极易导致严重的数据泄漏事件
-
明文存储
-
目前绝大多数数据库的数据文件都是以明文形态保存的
-
在数据的产生、使用、传输、保存、备份、销毁的整个生命周期内,任何接触到存储介质的攻击者,都有可能获取到数据
-
-
备份数据缺乏保护
-
从数据库备份的数据通常是以非加密的形式存储的,而且在运输、保存、销毁的生命期中,需要严密的保护
-
一旦疏忽,备份数据将有可能被窃取或偷窥而导致泄密
-
-
缺乏详尽审计
-
审计是每个数据库管理系统标配的安全特性,用于记录对数据的访问情况,从而形成对非法访问的威慑
-
而数据库自身的审计功能在可视化、智能化、入侵检测能力等方面能力较弱,通常无法满足实际的安全需求
-
-
恶意软件
-
攻击者使用木马病毒技术,通过邮件、图片等伪装方式,将恶意软件安装到数据库管理和运维人员的电脑上,
-
攻击者利用管理员的电脑,窃取或者破坏数据库中的数据;
-
-
数据库平台漏洞
- 数据库管理系统是个复杂的软件系统,数据库系统无一例外的具有严重的安全漏洞,如缓冲区注入漏洞或者认证、权限管理等漏洞。这些漏洞极易被攻击者利用以窃取数据
-
SQL注入、缓冲区溢出风险
-
数据库本身不具备SQL注入攻击检测能力
-
通过Web/APP插入恶意语句,或者利用连接工具发动缓冲区溢出攻击,攻击者有机会获得整个数据库的访问权限
-
-
弱鉴权机制
-
商业数据库系统提供的基本的管理机制,主要是自主访问控制(DAC)和基于角色的访问控制(RBAC)
-
并没有采用强制访问控制的方式(MAC),基于用户和数据的敏感级别来进行权限的鉴别。这容易使得低密级用户访问到高密级的数据;
-
-
-
实现数据库系统安全性的技术和方法
1. 用户身份鉴别存取控制技术 2. 自主存取控制和强制存取控制 3. 视图技术 4. 审计技术 5. 数据加密存储和加密传输
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程