一、基础
B-Tree索引、Hash索引、聚集索引
B-Tree索引:以B+树结构存储数据,可以范围查询
hash索引只能用在等于的情况下,不能进行范围查询,无法用于排序
聚集索引:每个表都只有一个聚集索引,创建表的时候自动创建。作用:决定数据在硬盘上的物理存储位置
一列可以添加多个索引
系统恢复采用的机制是日志机制
1.1、数据库系统概述
1、数据库的四个基本概念
①、数据(data)
数据(Data)是数据库存储的基本对象。
数据的定义:描述事物的符号记录
数据的种类:数字、文字、图形、图像、音频、视频、学生的档案记录等
②、数据库
数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据的集合。
基本特征:
- 数据按一定的数据模型组织、描述和储存
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
③、数据库管理系统
数据库管理系统(DataBase Management System,DBMS)是位于用户与操作系统之间的一层数据管理软件,是计算机的基础软件,是一个大型复杂的软件系统。
用途:科学地组织和存储数据、高效地获取和维护数据
功能:
- 数据定义功能
- 提供数据定义语言(Data Definition Language,DDL)
- 定义数据库中的数据对象
- 数据组织、存储和管理
- 分类组织、存储和管理各种数据
- 确定组织数据的文件结构和存取方式
- 实现数据之间的联系
- 提供多种存取方法提高存取效率
- 索引:
- 数据操纵功能
- 提供数据操纵语言(Data Manipulation Language,DML)
- 实现对数据库的基本操作(查询、插入、删除和修改)
- 数据库的事务管理和运营管理
- 数据库在建立、运行和维护时由数据库管理系统统一管理和控制
- 保证数据的安全性、完整性、多用户对数据的并发使用
- 发生故障后的系统恢复
- 数据库的建立和维护功能
- 数据库初始数据的转载和转换
- 数据库转储、恢复功能
- 数据库的重组织
- 性能监视、分析等
- 其他功能
- 数据库管理系统与网络中其他软件系统的通信
- 数据库管理系统与另一个系统之间的数据转换
- 异构数据库之间的互访和互操作
④、数据库系统
数据库系统(Database System,简称DBS):是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DataBase Administrator,DBA)组成的存储、管理、处理和维护数据的系统。
2、数据管理技术的产生和发展
- 什么是数据管理
- 对数据进行分类、组织、编码、存储、检索和维护
- 发展过程
- 人工管理阶段(20世纪40年代中–50年代中)
- 文件系统阶段(20世纪50年代末–60年代中)
- 数据库系统阶段(20世纪60年代末–现在)
3、数据库的特点
数据结构化
- 不仅数据内部结构化,整体也是结构化的,数据之间有联系
- 数据库中实现的是数据的真正结构化,数据的结构用==数据模型==描述,数据可以变长,数据的最小存取单位是==数据项==
数据的共享性高、冗余度低且易扩充
数据独立性高
- 数据独立性:不会因为系统数据存储与数据逻辑结构的变化而影响应用程序
- 物理独立性:指用户的应用程序与数据库中数据的物理存储是相互独立的。也就是,数据在数据库中怎样存储,用户程序不需要了解
- 逻辑独立性:用户的应用程序与数据库的逻辑结构是相互独立的。也就是说,数据的逻辑结构改变时,用户程序也可以不变
数据由DBMS统一管理和控制
数据的安全性(Security) 保护
保护数据,以防止不合法的使用造成的数据的泄密和破坏
数据的完整性(Integrity)检查
数据的正确性、有效性和相容性。完整性检查将数据控制在有效的范围内,并保证数据之间满足一定的关系。
并发(Concurrency)控制
对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果
数据库恢复(Recovery)
将数据库从错误状态恢复到某一已知的正确状态
1.2、数据模型
数据库重用数据模型来抽象、表示和处理现实世界中的数据和信息。
数据模型(data model)是对现实世界数据特征的抽象。
数据模型是数据库系统的核心和基础。
数据模型应满足三方面要求:
- 能比较真实地模拟现实世界
- 容易为人所理解
- 便于在计算机上实现
1、两类数据模型
根据模型应用的不同目的,可以将这些模型分为两类。
第一类是概念模型,第二类是逻辑模型和物理模型。
第一类概念模型(couceptual model),也称信息模型,是按用户的观点来对数据和信息建模,主要用于数据库设计。
ER-win powerdesigner
第二类逻辑模型和物理模型主要包括
- 层次模型(hierarchical model)
- 网状模型(network model)
- 关系模型(relational model)
- 面向对象数据模型(object oriented data model)
- 对象关系数据模型(object relational data model)
- 半结构化数据模型(semistructured data model)
物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法
2、概念模型
- 概念模型的用途
- 概念模型用于信息世界的建模
- 是现实世界到机器世界的一个中间层次
- 是数据库设计的有力工具
- 数据库设计人员和用户之间进行交流的语言
- 对概念模型的基本要求
- 较强的语义表达能力
- 能够方便、直接地表达应用中的各种语义知识
- 简单、清晰、易于用户理解
基本概念
实体(entity)
客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念。
属性(attribute)
实体所具有的某一特性称为属性
一个实体可以由若干个属性来刻画
码(key)
唯一标识实体的属性集称为码。例如学生的学号
域(domain)
属性的取值范围称为该属性的域
字符串域,浮点类型
实体型(entity type)
用实体名及其属性名集合来抽象和刻画同类实体称为实体型
实体集(entity set)
同一类型实体的集合称为实体集。例如,全体学生就是一个实体集。
真实的数据
联系(relationship)
现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系
实体内部的联系通常是指组成实体的各属性之间的联系
实体之间的联系通常是指不同实体集之间的联系
实体之间的联系有一对一、一对多和多对多等多种类型。
联系 | 定义 | 实例 |
---|---|---|
一对一 | 如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系(1:1) | 一个班级只有一个班长 |
一对多 | 如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0),反之亦然。(1:n) | 一个班级有若干名学生 |
多对多 | 如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0);反之,对于实体集B中的每一个实体,实体集A中有m个实体(m≥0)(m:n) | 课程与学生之间的联系: 一门课程同时有若干个学生选修, 一个学生可以同时选修多门课程 |
实例
实例
3、数据模型的组成要素
数据模型通常由数据结构、数据操作和数据的完整性约束条件组成。
数据结构
数据结构描述数据库的组成对象以及对象之间的联系。
数据操作
数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。
数据的完整性约束条件
数据的完整性约束条件是一组完整性规则。
4、常用的数据模型
非关系模型
- 层次模型(Hierarchical Model)
- 网状模型(Network Model)
关系模型(Relational Model)
面向对象模型(Object Oriented Model)
对象关系模型(Object Relational Model)
5、层次模型
层次模型是数据库系统中最早出现的数据模型
层次数据库系统的典型代表是IBM公司的IMS(Information Management System)数据库管理系统
层次模型用树形结构来表示各类实体以及实体间的联系。
①层次模型的数据结构
满足下面两个条件的基本层次联系的集合为层次模型:
- 有且只有一个结点没有双亲结点,这个结点称为根节点
- 根以外的其他结点有且只有一个双亲结点
层次模型的特点:
- 结点的双亲是唯一的
- 只能直接处理一对多的实体联系
- 每个记录类型可以定义一个排序字段,也成为码字段
- 任何记录值只有按其路径查看时,才能显示它的全部意义
- 没有一个子女记录值能够脱离双亲记录值而独立存在
多对多联系在层次模型中的表示
- 用层次模型间接表示多对多联系
- 方法
讲多对多联系分解成一对多联系 - 分解方法
- 冗余结点法
- 虚拟结点法
②层次模型的完整性约束条件
层次模型的完整性约束条件:
- 无相应的双亲结点值就不能插入子女结点值
- 如果删除双亲结点值,则相应的子女结点值也被同时删除
- 更新操作时,应更新所有相应记录,以保证数据的一致性
优点:
- 层次模型的数据结构比较简单清晰
- 查询效率高,性能优于关系模型,不低于网状模型
- 层次数据模型提供了良好的完整性支持
缺点:
- 多对多联系表示不自然
- 对插入和删除操作的限制多,应用程序的编写比较复杂
- 查询子女结点必须通过双亲结点
- 由于结构严密,层次命令趋于程序化
6、网状模型
网状模型中子女结点与双亲结点的联系可以不唯一
7、关系模型
关系数据库系统采用关系模型作为数据的组织方式。
1970年美国IBM公司San Jose研究室的研究员E.F.Codd首次提出了数据库系统的关系模型。
计算机厂商新推出的数据库管理系统几乎都支持关系模型。
①、关系数据模型的数据结构
在用户观点下,用户数据模型中数据的逻辑结构是一张二维表,它由行和列组成。
关系(relation)
一个关系对应通常说的一张表
元组(Tuple)
表中的一行即为一个元组
属性(attribute)
表中的一列即为一个属性
主码(key)
表中的某个属性组,它可以唯一确定一个元组。
域(domain)
属性的取值范围
分量
元组中的一个属性值
关系模式
对关系的描述
关系名(属性1,属性2,…,属性n)
学生(学号,姓名,年龄,性别,系,年级)
例1:学生、系、系与学生之间的一对多联系:
学生(学号,姓名,年龄,性别,系号,年级)
(001,x1,15,nan,01,2020)
(002,x2,16,nan,02,2020)
系(系号,系名,办公地点)
(01,计算机系,2号楼)
(02,物理系,1号楼)
例2:系、系主任、系与系主任间的一对一联系
教工(教工号,名称,系号)
系(系号,系名,办公地点,主任教工号)
例3:学生、课程、学生与课程之间的多对多联系:
学生(学号,姓名,年龄,性别,系号,年级)
课程(课程号、课程名、学分)
选修(学号,课程名,成绩)
关系必须是规范化的,满足一定的规范条件
最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表
表中的工资和扣除是可分的数据项,不符合关系模型要求。
②、关系数据模型的操纵与完整性约束
数据操作是集合操作,操作对象和操作结构都是关系
- 查询
- 插入
- 删除
- 更新
数据操作是集合操作,操作对象和操作结构都是关系,即若干元组的集合
存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”
③、关系数据模型的存储结构
实体及实体间的联系都用表来表示
表以文件形式存储
- 有的DBMS一个表对应一个操作系统文件
- 有的DBMS自己设计文件结构
④、关系数据模型的优缺点
优点:
- 建立在严格的数学概念的基础上
- 概念单一
- 实体和各类联系都用联系来表示
- 对数据的检索结果也是关系
- 关系模型的存取路径对拥护透明
- 具有更高的数据独立性,更好的安全保密性
- 简化了程序员的工作和数据库开发建立的工作
缺点:
- 存取路径对拥护透明导致查询效率往往不如非关系数据模型
- 为提高性能,必须对用户的查询请求进行优化,增加了开发DBMS的难度
二、数据库安全性
- 用户鉴别(用户名和密码)
- 多层存取控制 (不同的用户进来,看到的表格是不同的)(不同的权限)(root用户的host只能本机用,其他电脑不能用,)(用root用户创建其他用户)
- 审计(大量的辅助文件)(在出现问题后,怎么追责)(追责机制)
- 视图和数据加密
- 数据加密(比如,你的硬盘等丢失,别人无法打开,复制数据后也不能正常显示)
- 表加密(身份证号、手机号密文存储)
加密方式AES_EN___( , 密钥 )
解密方式AES_DE___( _, 密钥)
字符串转换为16进制,方式HEX,二进制UNHEX
三、数据库完整性
数据库的完整性是指数据库的正确性和相容性
分类:
- 实体完整性
- 参照完整性
- 用户自定义完整性