数据库知识点总结:

本文全面介绍了数据库开发周期,包括需求定义、概念设计等阶段。深入探讨了E-R模型及其转换为关系模型的方法,讲解了键、参与约束的概念,并讨论了数据库物理设计、事务管理等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

数据库开发周期(Database Development LifeStyle)

在这里插入图片描述

需求定义和分析(Requirements Defination and Analysis)

在这里插入图片描述

概念设计(Conceptual Design)

在这里插入图片描述

○ E-R 模型(E-R 图)

结构介绍
  • 基本结构:实体、关系、属性
  • 附加结构:弱实体
    在这里插入图片描述
实体、实体集(entities)

在这里插入图片描述

关系、关系集(relationships)

在这里插入图片描述
在这里插入图片描述

约束(key constrains)
多对多

在这里插入图片描述

一对多

在这里插入图片描述

参与约束(participation constrains)
  • 完全参与
  • 不完全参与
    在这里插入图片描述
弱实体
  • 由于弱实体一定是完全依附于另外一个实体集,因此,弱实体的出现常常伴随着一对多的关系。
  • 弱实体没有严格意义上的主键,只有部分键(partial key);只能依附于其他实体的主键,并且和它的 owner 实体的主键一起组成可以唯一标识 “行” 的键
  • 弱实体的 partial key 使用下划的虚线表示
  • 弱实体使用加粗的长方形表示
  • 弱实体和强实体之间的关系也用加粗的线框表示,被称为 “identifying(标识)”
    在这里插入图片描述
多元关系

在这里插入图片描述

多值属性(Multi-Valued Attributes)

在这里插入图片描述

复合属性(Composite attributes)

在这里插入图片描述

E-R图设计步骤

在这里插入图片描述在这里插入图片描述

逻辑设计

在这里插入图片描述
在这里插入图片描述

○ 关系模型(Relational Model)

在这里插入图片描述

关系(relation)

在这里插入图片描述
在这里插入图片描述

  • 基数(cardinality):行数,一个关系中存在的 不同的行数
  • 度(degree):列数,相当于 E-R 模型中的 attributes
关系型数据库(relational database)

在这里插入图片描述

E-R 图转为 Relation

在这里插入图片描述

E-R 图 → 逻辑设计 → 物理设计 → 实现 → 创建实例

在这里插入图片描述

使用 SQL 语句创建一个 Relation

在这里插入图片描述

键 和 键的完整性约束(Integrity constrains)
键(key)
  • 通过键 key 来创建表项之间的链接,使得我们可以通过一个表查到另一个表
  • 键是实现关系模型中 “完整性约束” 的一种重要方式

在这里插入图片描述

超键(superkey)

在这里插入图片描述

  • 超键可以是一个单独的键,也可以是好几项属性组合的键;只要能保证行的唯一性标识即可
键(key)
  • 最小的超键叫做键
    在这里插入图片描述
- 主键(primary key)
  • 最小超键中选出一个作为主键(primary key)
- 候选键(candidate key)
  • 最小超键中除了主键之外的键叫候选键
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
外键(Foreign key)

在这里插入图片描述
在这里插入图片描述

多值属性和符合属性的处理
  • 多值属性要进行展开
    在这里插入图片描述
  • 复合属性也要展开
    在这里插入图片描述
E-R 图转为逻辑设计图的原则
  • 建立多对多关系的时候,注意主外键的使用
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

关系图中的键约束(key constraints)
  • E-R 图中的键约束如图
    在这里插入图片描述
    在这里插入图片描述
  • 当面对键约束的时候我们将外键的引用放在有键约束的 table 中,而不是放在中间的描述关系中
关系图中的参与约束(participation constraints)
  • 使用 NOT NULL 来表示完全参与
    在这里插入图片描述

在这里插入图片描述

关系图中的弱实体(weak entity)
  • 弱实体的键和强实体的键一起组成弱实体的主键
  • 通过外键引用强实体主键
  • 通过 ON DELETE CASCADE 来强绑定弱实体和强实体,每次强实体删除弱实体也消失
    在这里插入图片描述
    在这里插入图片描述

物理设计

在这里插入图片描述
在这里插入图片描述

数据类型选择

  • 考量标准
    在这里插入图片描述
  • 类型
    在这里插入图片描述
    在这里插入图片描述

Look up Table 构建

Normalization / de-Normalization

在这里插入图片描述

应用设计

在这里插入图片描述

实现(implementation)

在这里插入图片描述

MySQL构建数据库模型

基本表示

实体、属性

在这里插入图片描述

关系、约束

在这里插入图片描述

强实体、弱实体

在这里插入图片描述

多元关系的(N-nary relationship)设计原则

  • 多值属性和复合属性的项目必要的时候可以单独成表
  • 多对多的关系,可以在中间引入一个关系实体来解决
  • 一对多的关系,可以把外键和关系属性放在 crows foot 中 “many” 的那一端
    在这里插入图片描述
    在这里插入图片描述

多值属性的处理原则

  • 单独将多值的属性建立一张表
  • 如果多值属性只有两到三个不同的值,完全可以放在同一张表里
    在这里插入图片描述

多对多关系的处理原则

  • 如果一个人有多个地址,每个地址有是个复合属性,那么完全可以建立人和地址的多对多关系
    在这里插入图片描述
    在这里插入图片描述
  • 多对多逻辑模型
    在这里插入图片描述
  • 多对多关系实现
    在这里插入图片描述

一对多和一对一关系的处理原则

在这里插入图片描述

在这里插入图片描述

多边(多元)关系处理原则总结(一对一,一对多,多对多)

在这里插入图片描述

一元关系(Unary)的处理原则

多对多关系的处理原则

在这里插入图片描述
在这里插入图片描述

一对一和一对多关系的处理原则

在这里插入图片描述
在这里插入图片描述

弱实体和强实体关系的原则

在这里插入图片描述

  • 和普通的多元一对多的关系类似,外键都放在 “多” 的一变
  • 不同的是,外键只是主键的一部分;primary key 是 (PaymentNumber,LoanID)

关系代数 (relational algebra)

在这里插入图片描述

关系代数的 5 大基本操作

  • 选择(selection)
  • 投影(projection)
  • 交叉相乘(cross-product)
  • 集合做差(set-difference)
  • 联合(union)
    在这里插入图片描述

投影(projection π \pi π

  • 对属性进行筛选,即在一个relation 中将一列或者几列的数据筛选出来
    在这里插入图片描述

选择(selection σ σ σ

  • 按照条件对 relation 的行进行选择,返回一行或者多行符合条件的数据
    在这里插入图片描述

筛选条件(condition)

在这里插入图片描述

选择+投影的组合(section & projection)

在这里插入图片描述

联合 + 集合做差(union + set-difference)

在这里插入图片描述

Union-compatible

  • 两个进行以上行为的 relation 必须具有相同的列的数量
  • 对应列的数据类型必须是一致的
    在这里插入图片描述

联合(Union)

  • 进行联合操作的时候,相同的行会被 删除
    在这里插入图片描述

集合做差(Set-difference)

  • 集合做差是不对称的,谁在前谁在后很重要
    在这里插入图片描述

交叉相乘 + 联结(cross product & join)

交叉相乘(cross product)

在这里插入图片描述
在这里插入图片描述

名称冲突处理(name conflicts)

在这里插入图片描述

复合操作符(compound operator)

取交集(intersection)

在这里插入图片描述
在这里插入图片描述

联结(join)

Natural Join

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 可以把列的冗余去掉
Theta Join (condition join)

在这里插入图片描述

  • 不去冗余
Equi Join

在这里插入图片描述

在这里插入图片描述

SQL 语言

SQL 四大主要方面功能

  • 数据定义语言(Data Definition Language)
  • 数据操作语言(Data Manipulation Language)
  • 数据控制语言(Data Control Language)
  • 其他指令
    在这里插入图片描述

SQL 的作用

实现数据库

在这里插入图片描述

使用数据库

在这里插入图片描述

SQL 具体操作

创建表

在这里插入图片描述
在这里插入图片描述

插入数据

在这里插入图片描述
在这里插入图片描述

SELECT

FROM

WHERE

GROUP BY

HAVING

ORDER BY

LIMIT

在这里插入图片描述
在这里插入图片描述

LIKE

%
  • 零个、一个或多个匹配字符
_
  • 只匹配一个字符

在这里插入图片描述

AS (Renaming)

在这里插入图片描述

Aggregation Functions

在这里插入图片描述

AVG()
COUNT()
MIN()
SUM()
MAX()

在这里插入图片描述

在这里插入图片描述

ASC / DESC (ORDER BY XXX ASC / DESC)

在这里插入图片描述

LIMIT & OFFSET

在这里插入图片描述

REL1, REL2 (cross product)

在这里插入图片描述

NATURAL JOIN

  • 名称必须一致
  • 去掉冗余列
    在这里插入图片描述

INNER JOIN

  • 不去冗余
    在这里插入图片描述

LEFT OUTER JOIN

RIGHT OUTER JOIN

在这里插入图片描述

FULL OUTER JOIN

在这里插入图片描述
在这里插入图片描述

SQL 总结

大小写

在这里插入图片描述

逻辑和比较运算符

在这里插入图片描述

集合操作

在这里插入图片描述

在这里插入图片描述

嵌套查询(subquery)

在这里插入图片描述

嵌套查询常用运算符

在这里插入图片描述

IN

在这里插入图片描述

NOT IN

在这里插入图片描述

联合查表效率更高

在这里插入图片描述

EXISTS

在这里插入图片描述

ANY / ALL / EXISTS

在这里插入图片描述

INSERT

在这里插入图片描述

UPDATE

在这里插入图片描述

CASE

在这里插入图片描述

DELETE / REPLACE

在这里插入图片描述

VIEW

在这里插入图片描述
在这里插入图片描述

ALTER / RENAME

在这里插入图片描述

TRUNCATE(截断)/ DROP

在这里插入图片描述

其他的数据库管理语句

在这里插入图片描述
在这里插入图片描述

存储和索引

在这里插入图片描述

文件组织形式(File Organization)

在这里插入图片描述

Heap

在这里插入图片描述

Sorted Files

在这里插入图片描述
Cost
在这里插入图片描述
在这里插入图片描述

Index File organization

在这里插入图片描述

索引文件 & 索引

在这里插入图片描述

索引分类
Clustered / Unclustered

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

clustered 性质
  • 只能建立最多一个 key 来进行 clustered 索引
  • clustering 和 unclustering 的 cost 差距很大
  • clustered 查询便宜,维护贵
    在这里插入图片描述
Primary / Secondary
Single Key / Composite
索引技术:Tree-Based、Hash based、other

(cost + result size)数据库开销 + 表格尺寸计算

selection 的开销

Heap scan

在这里插入图片描述

B+ tree

在这里插入图片描述

Hash

在这里插入图片描述

Result Size 的计算

在这里插入图片描述

Join 的开销

在这里插入图片描述

Projection 的开销

在这里插入图片描述

Normalization

部分依赖: A,B 共同决定了 C , C 对于 A, B 都是部分依赖的
完全依赖: A, B 共同决定了 C, C 对于 (A,B) 是完全依赖的

Armstrong’s Axioms

在这里插入图片描述
在这里插入图片描述

First Normal Form(第一范式):去掉重复的属性

在这里插入图片描述

Second Normal Form(第二范式):去掉部分依赖

在这里插入图片描述

Third Normal Form(第三范式)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Normalization VS. Denormalization

在这里插入图片描述

Database Transaction(数据库事务)

在这里插入图片描述

在这里插入图片描述

数据库事务的性质(ACID)

Atomicity(原子性:不可再分)

Consistency(一致性:事务前后的约束一致、并发访问的数据一致)

Isolation(独立性:一个事务在完成之前对其他的访问不可见)

Durability(耐久性:一个事务完成之后,改变是永久性的,即使系统失败)

在这里插入图片描述

数据库事务解决的两类问题

在这里插入图片描述

问题一:Unit of Work

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

问题二:并发访问的同步问题

在这里插入图片描述

Lost Update Problem

在这里插入图片描述

Uncommited Data Problem

在这里插入图片描述

Inconsistent Retrieval Problem(检索不一致问题)

在这里插入图片描述

解决的方法:序列化(serializability)

在这里插入图片描述

并发控制机制(Concurrency control method)

在这里插入图片描述

锁(Locking):主要方式

在这里插入图片描述

Lock 的粒度
Database-level Lock

在这里插入图片描述

Table-level Lock

在这里插入图片描述

Page-Level Lock

在这里插入图片描述

Row-level Lock

在这里插入图片描述

Field-level Lock

在这里插入图片描述

Lock 的种类
Binary Lock(二元锁)
  • 主要解决的就是“Lost Update” 的问题
  • 在这里插入图片描述
Shared and Exclusive Locks (共享锁和独占锁)
  • 独占锁和共享锁是互斥的
  • 共享锁和共享锁是可以共存的
  • 独占锁和独占锁也是互斥的
    在这里插入图片描述

在这里插入图片描述

DeadLock(死锁)

在这里插入图片描述

Optimistic Concurrency Control(乐观并发控制)

在这里插入图片描述

Time Stamping(时间戳)

在这里插入图片描述

Logging transactions(记录事务)

在这里插入图片描述

数据库管理(Database Administration)

在这里插入图片描述

Capacity Planning (容量规划)

在这里插入图片描述

Data Volumes(数据规模)

在这里插入图片描述

Access Frequencies per hour(吞吐量)

在这里插入图片描述

Life Cycle(生命周期)

在这里插入图片描述

硬盘容量需求计算(Disk space requirement estimation)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

表格项目的增长速度(table growth estimation)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

估算事务负载(Estimating transaction load)

在这里插入图片描述
在这里插入图片描述

Backup and recovery(备份和恢复)

在这里插入图片描述

需要备份的原因(为什么会造成数据的损坏和故障)

在这里插入图片描述

备份方式

在这里插入图片描述

Physical & Logical

物理备份方式:

  • 常常需要关停机器(DBMS系统)
  • 真实的文件和数据副本
  • 机器的配置要一致,文件格式要一致
  • 备份需要保存日志文件(logs)
  • 适合大规模的数据库快速恢复的情况
    在这里插入图片描述
    逻辑备份:
  • 通过 SQL 语句来构造逻辑从而实现备份
  • 比物理备份要慢
  • 输出的总量要大于物理备份
  • 不包含日志文件和配置文件
  • 独立于系统和机器(不需要统一的平台)
  • 可以不关机进行备份(online)
    在这里插入图片描述
Online & Offline

线上备份:

  • 不关闭系统
  • 客户对于备份没有感觉
  • 需要特定的锁来保证数据的完整一致性
    在这里插入图片描述

线下备份:

  • 机器和系统关停
  • 为了最大化用户的可用性,从复制服务器而不是活动服务器进行备份
  • 操作更加简单
  • 这种方式是最好的,但并不是在所有情况下都可用
    在这里插入图片描述
Full & Incremental

完整备份:

  • 每次备份整个数据库
    在这里插入图片描述

增量备份:

  • 每次只进行最后更改的备份
  • 对很多数据库来说意味着只备份日志文件(logs)
    在这里插入图片描述
Onsite & Offsite

实地备份:
在这里插入图片描述

备份策略(backup strategies)
  • 通常吞吐量大的时候采用增量备份
  • 吞吐量较小的时候采用完全备份
  • 如果使用副本,则使用镜像数据库进行备份,以消除主数据库的任何性能问题
  • 在需要备份之前测试备份(至关重要)
    在这里插入图片描述
    在这里插入图片描述

Data Warehousing(数据仓库)

事务型数据库(transaction database)和信息型数据库(Data warehouse)的区别

我们为某个程序创建的特定的数据库一般称为事务型数据库(Transaction Database), 它Data Warehouse(DW)还是有很大差别的.

  1. 事务数据库帮助人们执行活动,而数据仓库帮助人们做计划。例如,事务数据库可能显示航班的哪些座位是空的,这样旅客可以进行预定。而数据仓库用于展示空座率情况的历史信息,以让航班管理员决定在未来是否要调度航班。
  2. 事务数据库关注细节,而数据仓库关注高层次的聚集。例如,一个大人只想购买最流行的儿童图书而不关心它的库存情况。但负责图书在书架上排列的管理员也关心图书的销售情况和变化趋势。这之间的不同的隐含区别在于数据仓库中的数据通常都是数值类型,它可用于汇总。
  3. 事务数据库通常为特定的程序而设计,而数据仓库用于整合不同来源的数据。例如订单处理程序——数据库会包含每笔订单的折扣信息,但不会包含产品的成本超支情况。相应地产品管理程序会包含详细的成本信息但不会包含销售折扣。但可以把这两样信息组合到一个数据仓库中,你就可以计算产品的实际销售利润。
  4. 事务数据库关注现在,而数据仓库关注于历史。例如一个银行帐户,每一次事务——即每次的存款与取款都会改变帐户余额的值,但事务系统很少会维护历史余额。但在数据仓库中,你可以存储很多年的事务数据(可能被汇总的),还会存储余额快照。这样允许你把当前值与历史进行比较。在进行决策时,可以查看历史趋势。
  5. 事务数据库是可变的,这很容易理解。但数据仓库是稳定的;它的信息会以固定的间隔进行更新(可能是每月,每星期或每小时),而且理想情况下,更新只会为新的时间段添加新值,而不会改变先前存储的值。
  6. 事务数据库必须提供对详细信息的快速获取和更新,而数据仓库必须对高汇总信息的快速获取或更新。所以事务数据库的设计优化与数据仓库的设计优化可能不同。而且,以管理目的查询一个事务数据库生成报表可以会导致该事务程序运行性能下降

数据仓库介绍

在这里插入图片描述

  • 数据仓库是一个 informational database 信息型数据库,而不是事务型(transactional) 数据库
  • 数据仓库中数据的来源是多渠道的(from multiple sources)
  • 管理者和用户都是可以访问的
  • 用来支持分析和决策

数据仓库的性质

Subject-Oriented 面向主题(任务)的

Validated, Integrated 数据是经过验证的、整合的

Time variant 时变的(包含历史数据的)

Non-volatile 非易失的(用户只能读、由指定程序自动处理)

在这里插入图片描述
在这里插入图片描述

数据仓库结构(structures)

在这里插入图片描述

维度建模(Dimentional Modelling)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

事实、事实表(Facts & Fact table)

在这里插入图片描述
在这里插入图片描述

维度层级(dimension hierarchies)

在这里插入图片描述

维度、维度表(Dimension & Dimension Table)

在这里插入图片描述

星型模型(Star Schema)

在这里插入图片描述

  • 星型模型中的 事实表,本质上就是一个中间的联合表;和其他的维度表的关系都是一对多的
    在这里插入图片描述

设计维度模型的步骤

  • 选定一个商业过程
  • 选择一个可以被测量的事实(通常是数字的,附加的数量)
  • 决定事实表的粒度
  • 决定使用哪些维度表
  • 完成整个维度表
    在这里插入图片描述

维度表中嵌入层次结构(embedded hierarchies in dimensional tables)

在这里插入图片描述

雪花模型(Snowflake schema)

在这里插入图片描述

Normalization / Denormalization

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值