惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Check Point Blog
Hacker News: Ask HN
Hacker News: Ask HN
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学
P
Proofpoint News Feed
V
Visual Studio Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
N
Netflix TechBlog - Medium
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 聂微东
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 叶小钗
Cisco Talos Blog
Cisco Talos Blog
S
Schneier on Security
T
Threat Research - Cisco Blogs
腾讯CDC
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Hacker News
The Hacker News
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
GbyAI
GbyAI
N
News | PayPal Newsroom
L
LINUX DO - 最新话题
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Palo Alto Networks Blog
T
Tenable Blog
S
Secure Thoughts
T
Threatpost
V2EX - 技术
V2EX - 技术
大猫的无限游戏
大猫的无限游戏
Martin Fowler
Martin Fowler
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Vercel News
Vercel News
罗磊的独立博客
P
Privacy & Cybersecurity Law Blog
Engineering at Meta
Engineering at Meta
小众软件
小众软件
Google DeepMind News
Google DeepMind News
N
News and Events Feed by Topic
Y
Y Combinator Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
P
Privacy International News Feed
H
Heimdal Security Blog
量子位
B
Blog

Chenxu's Blog

RAG检索优化:从 68% 到 82.2% 学习深度学习 北邮计算机研究生选课指北 学习机器学习 上海篇 提出一个好问题 写代码的环境 选购一台合适的设备 计算机的第零课 序言 内蒙古篇 山东篇 一篇对transformers的疑惑 浅析GPUStack 浅谈后端项目分层 浙江篇 河南篇 一些三端协同的开发工具记录 浅谈编程语言中的 GC 在 Windows 上安装 Rust 美化博客 消息队列 MyBatis 现代交换原理2024年题目 回忆版 北邮计科本科课程指北 ClkLog埋点用户分析系统研究报告 大数据梧桐实验分享 大数据HBase实验分享 国产向量数据库研究实践 —— 基于 Milvus 的电影推荐系统 服务器环境配置 大数据HDFS实验分享 SSE多服务之间推送数据 操作系统 编译原理 手把手教你gozero从开发到部署 (番外篇): 介绍 gtodolist 前端项目 天津篇 北京篇 手把手教你gozero从开发到部署 (5): gtodolist 之任务的删除 前端相关问题 vue3 + element-plus学习 git相关命令 人工智能原理 使用 MongoTemplate 时开启事务 MySQL Redis 力扣刷题笔记之动态规划 记录一次 VSCode 出现的各种奇怪的问题 手把手教你gozero从开发到部署 (4): 在 model 中自己编写函数实现数据库分页查询 记录平时用到的 windows 右键管理 记录平时使用的 linux 的指令 安装 gstore 并使用 java api 手把手教你gozero从开发到部署 (3): gtodolist 之任务的创建和修改 手把手教你gozero从开发到部署 (番外篇): 记录第一次部署 CI/CD 的流程 记录完成 gtodolist 中遇到的 bug 手把手教你gozero从开发到部署 (2): gtodolist 之 user 模块开发 手把手教你gozero从开发到部署 (1): gtodolist 项目说明和环境准备 快速入门 gozero 框架 vue部署在nginx上的相关问题 记一次安装scrapy的报错 将博客部署至服务器 Java CS143: Compliers 《MySQL必知必会》读书笔记(2) 初识 GORM 初识 gin 框架 Spring 《MySQL必知必会》读书笔记(1) 本地搭建博客 🤝友链 🙋🏻‍♂️关于 Browser and Device Check
数据库系统原理
Chenxu · 2024-02-26 · via Chenxu's Blog

Introduction

文件系统的缺点:

  • 数据冗余,导致可能出现数据不一致
  • 数据访问困难
  • 没有数据隔离性
  • Integrity problem 完整性问题:存储数据的值满足特定的一致性约束
  • 原子性操作
  • 多用户并发
  • 安全性问题

DB: database A collection of interrelated data

DBMS: DataBase Management System

Applications: Set of programs to access the data

Three-level Architecture

view: 某一类用户所关注的逻辑信息,比如,老师只关心学生的选课和成绩

logic: 所有不同类用户所关注的逻辑信息的集合, 只有一个

physical: 逻辑信息存储的物理结构

三级模式, 两级映象 $\rightarrow$ 数据独立性

Functions of DBMS

  • Data Definition and storage management;
  • Data Manipulation, Data Access;
  • Data Security and integrity;
  • Transaction management, Data recovery and concurrency;
  • Data dictionary (存储用户、结构、索引等信息)

Relation Model

Relational Data Structure

  • Order of turples is irrelevant;

  • Order of attributes is irrelevant;

  • For all relations, the domains of all attributes be atomic;

  • Attributes names must be different;

  • Serveral attributes can have the same domain;

    不同的属性可以有相同的取值域, 但是含义不同 比如:user_id 和 book_id 均从整数域中取值, 但是表示含义不同

  • Turples are not duplicate.

Super Key: $R(U)$ is a relation schema, $K \subseteq R(U)$, values for key are sufficient to identify an unique tuple of each possible relation $r(R)$ by possible $r$

在关系模式中
唯一标识元组
属性集

Candidate Key: minimal superkey

Uniqueness  唯一性
Irreducibility  最小性

Primary Key: one of cadidate keys (结合实际)

Forign Key: For $R_{1}, R_{2}$, $R_1$ includes the Primary Key X of $R_2$, X is called a Foreign Key referencing $R_2$

Integrity Constraint of Primary Key: 实体完整性约束, 主键不为空

Referential Integrity Constraint: 参照完整性约束, 外键只能为空或者来自于所参照的主键的取值

Relational Algebra Operation

basic

Select 选择: $\sigma_{p}(r)$

$p$ 是选择谓词, 选择 $r$ 中满足 $p(t)$ 的数据 $t$

Project 投影: $\Pi_{A_1, A_2, \cdots, A_k}(r)$

取出关系 $r$ 中名为 $A_1, \cdots, A_k$ 的属性,并对结果去重

Union 并: $r \cup s$

$r$ 和 $s$ 具有相同数量的属性, 属性的取值域相融

Set Difference 差: $r - s$

$r - s = { t | t \in r \ and \ t \notin s }$

Cartesian-Product 笛卡尔乘积: $r \times s$

$r \times s = { tq | t \in r \ and \ q \in s }$

Rename 更名: $\rho_{x}(E)$

$\rho_{X}(E)$,将 $E$ 改名为 $X$ > $\rho_{X(A_1, \cdots, A_n)}(E)$,将 $E$ 改名为 $X$, 表中列的名字改为 $A_1, A_2, \cdots, A_n$

additional

Set-Intersection 交: $r \cap s$

$r \cap s = { t | t \in r \ and \ t \in s } = r - (r - s)$

Join 连接:

Division 除法: $R\div S$ 在表 $R$ 中满足 $S$ 中条件的数据但是不包含 $S$ 中的字段, 具体看这篇文章

Assignment 赋值: 把结果赋给中间变量, 数据无变化

Outer join 外连接: 分为 left join 和 right join, 表中属性可能有空值

Null 空值: 要查询为空的属性需要明确地表示出来

Modification

Delete 删除: $r \leftarrow r - E$ ($r$ 是数据库, $E$ 是将要被删除的数据

Insertion 插入: $r \leftarrow r \cup E$

Update 更新: $r \leftarrow \Pi_{F_1, F_2, \cdots, F_k}(r)$ ($F_1, F_2, \cdots, F_k$ 是对应列的新值)

SQL

标准 SQL 语句,没啥好记的,和实际的各种 SQL 方言有些不同但大体上差不多

E-R

右边第二个图的写法中, l 为 1 表示全参与, 0 表示部分参与; h 表示对应关系, 要反过来看, 比如下面这个例子, 表示 instructor 和 student 是一对多的关系

Specialization

disjoint: 高层实体集之间没有重叠 e.g. 老师演绎出教授和副教授两个实体集

overlapping: 高层实体集之间有重叠 e.g. 人演绎出银行职员和银行客户

total: 高层实体集一定全部属于底层实体集

partial: 部分属于

Aggregation

多个实体集和一个实体集产生关系

Reduction to Relation Schemas

简单属性: 直接放入表中

复合属性: 只要最终的叶子节点的属性放入表中

多值属性: 另外生成一张表, 并且要包含原来实体集的主键和多值属性一起作为新表的主键

导出属性: 理论上不要, 实际可以进行判断要不要

弱实体集: 主键是自己的主键和依赖的强实体集的主键

一对多/一对一关系: 把一的主键放到多的表中当作外键, 关系有属性的话也一并放入

多对多关系: 另外生成一张表, 主键为关联的两个实体的主键复合的主键

Relational Database Design

Functional Dependencies

$\alpha \rightarrow \beta$, 无论何时当且仅当对于任意 $r$ 中数据都满足上述条件, 并且还有以下性质:

$$t_1[\alpha] = t_2[\alpha] \Rightarrow t_1[\beta] = t_2[\beta]$$

Trivial dependency:

$\alpha \rightarrow \beta \cap \beta \subseteq \alpha$

Transitive dependency:

第三个条件是为了防止变成直接依赖

Partial dependency:

Logically imply:

没太看懂, 感觉说了个废话

Closure:

Armstrong’s Axioms:

additional rules:

Closure of Attribute Sets:

Equivalent FD Sets:

Canonical Cover /Minimal Cover:

求最小覆盖集步骤:

  • 将所有函数右部全部化为单一属性
  • 去掉所有函数依赖左边的冗余属性
  • 去掉所有冗余的函数依赖关系

这里有个去本求包看着有点用: 数据库必考题目~最小依赖集(最小覆盖、极小函数依赖集)_求最小函数依赖集例题-CSDN 博客

Extraneous Attributes:

Normal Forms

1NF: 表中属性都是原子的, 即: 不能表中有表. 只有满足 1NF 才是关系型数据库.

2NF: $R$ 中每一个非主属性都完全函数依赖于 $R$ 的码 (也就是超键, 详细定义可以看 一文搞懂候选码、主码、全码、外码、主属性、主键、主关键字、非主属性清晰总结-阿里云开发者社区 (aliyun.com)

  • 没有部分依赖

3NF: 没有非主属性对码的部分函数依赖, 也没有非主属性对码的传递函数依赖

  • 平凡依赖
  • 左边是超键
  • 右边是键属性

BCNF:

  • 平凡依赖
  • 左边是超键

候选键求法: 数据库——求候选键的方法-CSDN 博客

Decomposition

Lossless-join decomposition:

Dependency preservation:

3NF 的无损连接和依赖保持的分解 【数据库系统原理 北京邮电大学 2022 邓芳】 【精准空降到 57:53】 :

  • 求最小覆盖 (记得求完最小覆盖后左边表达式相同的函数依赖要合并)
  • 每个函数关系一个关系模式, 每个关系模式不能有覆盖
  • 检查如果候选键没有包含在之前得到的关系模式中, 则需要把候选键单独拿出当作一个关系模式

BCNF 的无损连接的分解: 【数据库系统原理 北京邮电大学 2022 邓芳】 【精准空降到 1:10:36】

数据库 BC 范式(BCNF)判断和分解-CSDN 博客

数据库系统从入门到精通十三:3NF 与 BCNF 分解 - 知乎 (zhihu.com)

期末复习

中间还有几章没记, 没啥不太好理解的内容 (绝对不是因为懒), 就放在期末复习的时候一块记录

一些相关概念解释: 冲突等价(ConflictEquivalence) 可串行化调度(Serializable Schedules)-CSDN 博客

是否为 confilct serializable: 对操作绘制前驱图, 读写、写读和写写互斥, 对前驱图进行拓补排序. 无环则为 conflict serializable, 拓补排序结果即为冲突和串行化序列; 否则为不可 conflict serializable.

recoverable & cascadeless: 数据库理论笔记18可恢复性调度-非瀑布性调度-调度独立等级 - duskcloudxu - 博客园 (cnblogs.com)

2PL: 两阶段锁协议, 分为加锁和释放锁两个阶段, 不能有重叠, 也就是一旦释放了某个锁后则不能再执行获取锁的操作

strict 2PL: 严格两阶段锁协议, 获取所有锁一直到事务提交时再释放

ignore: 最近检查点之前 commit/abort 的事务

redo: 最近检查点到 crash 中间 commit/abort 的事务

undo: 一直到 crash 都未完成的事务

增加 log 规则: 从后往前扫描, 挨个添加与 undo 事务相反的日志, 日志为一条赋值语句, 直到扫描到该事务的 start 时将该事务移出 undo list, 并写入一条 abort 日志

timestamp protocol:

基于时间戳的并发控制协议 - 知乎 (zhihu.com)

个人理解: 符合时间戳协议就是所有事务可串行化, 并且串行化的结果要符合时间戳的先后顺序

【sql】sql 中 true,false 和 null 之间 and、or 运算的理解。_true false null-CSDN 博客