目录

数据库原理核心知识

目录

数据库原理(核心知识♥)

目录


一、Database Fundamentals

1.1数据库系统(DBMS)与文件系统(File System)

https://i-blog.csdnimg.cn/blog_migrate/26f4a29169c9c85a24ef33fc75605498.png

https://i-blog.csdnimg.cn/blog_migrate/363f8f15e85c6b471b203d064c0fe408.png

https://i-blog.csdnimg.cn/blog_migrate/41b44b04abc0c3954f83ed88e6a1689c.png

**一个软件包/系统,便于定义、构建、操作和共享计算机化数据库的功能

DBS( Database System) =  DBMS + Database**

https://i-blog.csdnimg.cn/blog_migrate/84e7181367a6e9aab40384e52fff9ebd.png

https://i-blog.csdnimg.cn/blog_migrate/97649bc74158d1d51d394efab02ccec9.png

文件系统(File System) https://i-blog.csdnimg.cn/blog_migrate/06a5cbf18dbd3337023adda9c0349d1e.png

https://i-blog.csdnimg.cn/blog_migrate/a8a8c8804d9732515bbd8fb7db1dd6c0.png

https://i-blog.csdnimg.cn/blog_migrate/f6476e3405b3f38f6031410714a465cd.png https://i-blog.csdnimg.cn/blog_migrate/72141dbbcf0bae9323d116ca4573ed2c.png

1.2数据库三级模式(Schema)、两级映像(Mapping)

https://i-blog.csdnimg.cn/blog_migrate/b0b874b9126d384aeb796cce58cf4d64.png

Internal (Physical) Schema 内模式  –>(存储文件) 描述数据如何在物理上硬件上存储 (用户不可见)

Conceptual Schema 概念模式 –>(基本表) 是数据库所有数据的逻辑结构和特征描述

External Schema 外模式 –>用户模式 (视图) 也就是用户能够看到的那部分的数据的逻辑结构和特征描述

https://i-blog.csdnimg.cn/blog_migrate/8e96a79e9f0d193ce47118e560eeda82.png

https://i-blog.csdnimg.cn/blog_migrate/6166c7003cd99ce3587281c7e3883a0f.png

https://i-blog.csdnimg.cn/blog_migrate/c3a993c959fd7f92d092c935fe332ded.png https://i-blog.csdnimg.cn/blog_migrate/8d63232d6870db6aa071bbc8215c220d.png

https://i-blog.csdnimg.cn/blog_migrate/0a5d5f1bb68dfec7d39638e531f4c82c.png

https://i-blog.csdnimg.cn/blog_migrate/d0788130823db67639d3884158cf6ab6.png https://i-blog.csdnimg.cn/blog_migrate/e4ebdcbfd5ea4b6534a6f348b27a2fd9.png

1.3Responsibilities of DBA

https://i-blog.csdnimg.cn/blog_migrate/25788e83cfc6d737fec0a1df5b72669b.png

1.4数据独立性(Data Independence)

https://i-blog.csdnimg.cn/blog_migrate/0b7c8bc50a90b1d263432319a2adb2ec.png

–逻辑(logical)独立性

Changes at the logical level will have no impact in the applications that access the DB

当数据库中的逻辑结构变化时,应用程序的逻辑结构不需要发生变化,应用程序还能够继续正常使用数据库提供的服务,这就是逻辑独立性的体现。

–物理(physical)独立性

当数据库中的物理结构变化时,应用程序的逻辑结构和编程不需要发生变化,应用程序还能够继续正常使用数据库提供的服务,这就是物理独立性的体现。

二、Relational Database

主码(Primary Key)、外码(Foreign Key)、候选码(Candidate Key)

https://i-blog.csdnimg.cn/blog_migrate/5ef2a9e425f3eb68593b6fe301654229.png

关键操作

https://i-blog.csdnimg.cn/blog_migrate/4fd50d9b16e1a120e4f3dc7b75fe0c40.png

–选择(Selection)

https://i-blog.csdnimg.cn/blog_migrate/bfd30a6611d907ddeba230522d661e00.png

https://i-blog.csdnimg.cn/blog_migrate/c042a07fed88f76450fa1268c3582796.png

–投影(Projection)

https://i-blog.csdnimg.cn/blog_migrate/409d3126ce7693b3bcaeaed40c545f0e.png

https://i-blog.csdnimg.cn/blog_migrate/a60f06803f6162db681fdd175c24d7fc.png

–连接(Join)

https://i-blog.csdnimg.cn/blog_migrate/045aab0f6f3d746dcbba5523e2e3b022.png

https://i-blog.csdnimg.cn/blog_migrate/beeef7152b85a99fc98cef568f2842fd.png

https://i-blog.csdnimg.cn/blog_migrate/5a0b3f3f206a0de3a3391099b38e7076.png

https://i-blog.csdnimg.cn/blog_migrate/34e4bc38c2d6b1106d0e35843ade4330.png

https://i-blog.csdnimg.cn/blog_migrate/db1c3a3d89b3749436ecbe4da8652a6f.png

自然连接 < == > 等值连接+去重

https://i-blog.csdnimg.cn/blog_migrate/192d9ed7e7b34be786289395c86aad5c.png

https://i-blog.csdnimg.cn/blog_migrate/573465b4f347eb575d7dce9904f8359a.png https://i-blog.csdnimg.cn/blog_migrate/ac9dc3f32725637b07e3d147e275d603.png

–除(Division)

https://i-blog.csdnimg.cn/blog_migrate/5d82f5e9ae1b802b3b121fe66c6d689d.png

https://i-blog.csdnimg.cn/blog_migrate/0c3bae23a766cc04db079ec72d2ade2a.png

https://i-blog.csdnimg.cn/blog_migrate/e480509c0166dfc6ea8530fd531a6b83.png

https://i-blog.csdnimg.cn/blog_migrate/e432bca5bce6d6d02d68006dfc4d7f07.png

https://i-blog.csdnimg.cn/blog_migrate/5353fdaa5e4291e4cdfd6af681d3d91e.png

https://i-blog.csdnimg.cn/blog_migrate/1186184cd32276adcc7c721f155bf567.png

关系代数(Relation Algebra)运算

三、SQL

Characteristics of SQL

https://i-blog.csdnimg.cn/blog_migrate/54778884bded170cd082dc2daf0ae1e3.png

https://i-blog.csdnimg.cn/blog_migrate/5a60cbc1f015fb0086d32bf7ceecce85.png

https://i-blog.csdnimg.cn/blog_migrate/dd0c3264b52830800ffe5c40d11b7b3d.png https://i-blog.csdnimg.cn/blog_migrate/e7232e629cbe39e174567494f8ede919.png

https://i-blog.csdnimg.cn/blog_migrate/aaaa3d4ef670081ce7192133ec906a1e.png

https://i-blog.csdnimg.cn/blog_migrate/2989ca4a2f747fba742eede2d3c102f2.png https://i-blog.csdnimg.cn/blog_migrate/b8c7c63b0abe5e1c0b10b4c89b646201.png https://i-blog.csdnimg.cn/blog_migrate/72e058b289179549d42f2af185aef4b8.png

https://i-blog.csdnimg.cn/blog_migrate/6a5b6a217422d6a96e15eea5d6f094e0.png

https://i-blog.csdnimg.cn/blog_migrate/0a33e96ca51b85bcc35bb43210963bf5.png https://i-blog.csdnimg.cn/blog_migrate/c36cfb323d0810bcfe3f3cbb2d54e7cc.png

https://i-blog.csdnimg.cn/blog_migrate/6e556a636af1c8f3166570e559e998af.png https://i-blog.csdnimg.cn/blog_migrate/154fb4f7675e23edcc70fbc74291e00c.png

https://i-blog.csdnimg.cn/blog_migrate/d54240f1973e53ed179dbce2508b285f.png

https://i-blog.csdnimg.cn/blog_migrate/23488f1a6bd008921a81b20498decd19.png

https://i-blog.csdnimg.cn/blog_migrate/faa935ccc7af1f4b84598f15cd0c93c9.png

https://i-blog.csdnimg.cn/blog_migrate/f4105a3115a9527a409c34377abc2af0.png

一些简单查询语句

https://i-blog.csdnimg.cn/blog_migrate/4c0c03d00520200b28e28357d6d90505.png

​​ https://i-blog.csdnimg.cn/blog_migrate/4ea34df38fc76a52d6bb0920702736e2.png

https://i-blog.csdnimg.cn/blog_migrate/22ce1aac537b8e40171aab844eceae00.png

https://i-blog.csdnimg.cn/blog_migrate/06e539f03376f79b88e8aef66b5e46d2.png

https://i-blog.csdnimg.cn/blog_migrate/6e6cbb225f75174d9ce6a931a90f597f.png

https://i-blog.csdnimg.cn/blog_migrate/eee5f2c4f293b6e2003b0bec1959be9a.png

https://i-blog.csdnimg.cn/blog_migrate/e1b55e6eb56f8c9ddda7eac47e56c99f.png https://i-blog.csdnimg.cn/blog_migrate/c5f4b24d5a63284ed56871c65cc96284.png

https://i-blog.csdnimg.cn/blog_migrate/9465033710b9212ebb8de6322450b03f.png https://i-blog.csdnimg.cn/blog_migrate/4d7d5e5175ac19b2941917e9779aa5f8.png

https://i-blog.csdnimg.cn/blog_migrate/c686ba93ef46bb2bb5f1b3df5af48ec3.png

https://i-blog.csdnimg.cn/blog_migrate/5476fcf010a0f114630e100a6421cd98.png

https://i-blog.csdnimg.cn/blog_migrate/69c38b05bdaaecf97240df3c5764227a.png 从查询结果当中取6-15行  (第一个参数为起始位置 第二个参数表示长度) https://i-blog.csdnimg.cn/blog_migrate/a5f5a91aff304659ca9bfc5a26e9f30a.png

SUB-QUERIES 子查询

https://i-blog.csdnimg.cn/blog_migrate/4ae79741f05f3b545761b0abea180dae.png

https://i-blog.csdnimg.cn/blog_migrate/0ce5873f58a4f216f390430d8eb751df.png

https://i-blog.csdnimg.cn/blog_migrate/6af1ba798939e2662514ffead572c337.png

https://i-blog.csdnimg.cn/blog_migrate/75cb4a4675dd99e028119308fd42b5fd.png

https://i-blog.csdnimg.cn/blog_migrate/37773ed70899f599bd3f54bb8764db18.png https://i-blog.csdnimg.cn/blog_migrate/86eba98896ec89dd3852b4057c05f503.png

https://i-blog.csdnimg.cn/blog_migrate/0f5e9f0b8a9b6ace44807a4ec30ab2c2.png

https://i-blog.csdnimg.cn/blog_migrate/4e806290c1b311d6365cb8f24ae121df.png

https://i-blog.csdnimg.cn/blog_migrate/f6eb8a4f12c14defe6130768d7427861.png

https://i-blog.csdnimg.cn/blog_migrate/e6490b7be9d123ad165698c799228e04.png https://i-blog.csdnimg.cn/blog_migrate/de2c7f5318ddaec4b3fb85ea368c9b9d.png https://i-blog.csdnimg.cn/blog_migrate/21783f8ca7f690214cbdde338b0e1298.png

https://i-blog.csdnimg.cn/blog_migrate/c1f240ee8ac44dd5018a71851b713e03.png

https://i-blog.csdnimg.cn/blog_migrate/d5fdadd501bd642cb410b8fece0f2847.png

https://i-blog.csdnimg.cn/blog_migrate/889030d0f1f9d849d4f776bdc2fc7665.png

增删改查

–create、insert、alter、update、drop、delete

–select/from/where/group by/having/order by

内连接和外连接(Join/Left Join)

嵌套查询(Embedded Query)

–IN/NOT IN

–EXISTS/NOT EXISTS

四、Database Objects

索引(Index)的分类和正确使用

–Cluster/Non-cluster/Bitmap/Functional/…

CLUSTERED INDEX(聚集索引)

https://i-blog.csdnimg.cn/blog_migrate/62b109dc20e81f4e59b2231dbccc6b13.png

https://i-blog.csdnimg.cn/blog_migrate/31fb54c2767862b308778a1d3287854c.png

NON-CLUSTERED INDEX(非聚集索引)

Bitmap Index(位图索引)

https://i-blog.csdnimg.cn/blog_migrate/23ae30b0ef62efcf7f51dce7e53f4981.png

Function-based Indexes(基于函数的索引)

视图(View)的作用

https://i-blog.csdnimg.cn/blog_migrate/8b32c0225644260975030c1591f59570.png

https://i-blog.csdnimg.cn/blog_migrate/d669fff7087c0872610506ba73383941.png

–与基本表的区别和联系

触发器(Trigger)

https://i-blog.csdnimg.cn/blog_migrate/2b2c27dbc57b840cd061f84f3f134bb6.png

https://i-blog.csdnimg.cn/blog_migrate/ce96a5691f0070714f10a5fddfeeba64.png

https://i-blog.csdnimg.cn/blog_migrate/07fe54ee1950a70cedc5354567cb4ed5.png

存储过程(Stored Procedure)

https://i-blog.csdnimg.cn/blog_migrate/bdf400b3828840353d6800a1d8ac4e44.png

存储过程(Stored Procedure)也就是在数据库中的代码

重复使用

完整性(Integrity) vs 安全性(Security)

五、Normalization

规范化(Normalization)的目的

–冗余(redundancy)

https://i-blog.csdnimg.cn/blog_migrate/b7f3c2df41e99b75111d5d845acc79af.png

–异常(anomalies)

插入异常(Insert Anomaly)、更新异常(Update Anomaly)、删除异常(Delete exception)

https://i-blog.csdnimg.cn/blog_migrate/6cd58e1c2b955109596f8cfab9b9e379.png

函数依赖关系

https://i-blog.csdnimg.cn/blog_migrate/57df5aefef8b8e25e7cabab1aee2722d.png

各范式的原则(1NF-4NF)

–判定依据

1NF

判断一个关系模式(即表格)是否符合第三范式(3NF)的要求,需要满足以下条件:

是一个单表

https://i-blog.csdnimg.cn/blog_migrate/9c57f765ce713c990adc25af8f32fae0.png

判断是不是符合1NF 就看 是不是单表    是单表就符合1NF   如果是复合表就不符合

https://i-blog.csdnimg.cn/blog_migrate/2fb5b4da145af2cc3fbf051f1403f050.png

上表就符合1NF 是个单表

https://i-blog.csdnimg.cn/blog_migrate/631ad39bc0a0eed469b416f5195adb9a.png

上表就不符合1NF因为{}内可拆分是复合表  不符合原子性

2NF

判断一个关系模式(即表格)是否符合第三范式(2NF)的要求,需要满足以下两个条件:

  1. 表格必须符合第一范式(1NF)
  2. 没有部分函数依赖关系,非主属性都完全依赖于主键或候选键

https://i-blog.csdnimg.cn/blog_migrate/0b35a4402994b31dc2e1119256def3ae.png

https://i-blog.csdnimg.cn/blog_migrate/8cee7262fc29e833e5042bcbe706bb98.png

上表就 符合2NF ,首先主键是StudentID 其他非主键非候选键的属性Name Gender Birthday都函数依赖于StudentID

https://i-blog.csdnimg.cn/blog_migrate/560ddf33bf6294dd160b80111859ff60.png

上表就不符合2NF。首先选课表的主键是选课ID,学生ID。其他非候选码属性选课课程函数依赖于选课ID,学生ID 但是学生姓名只函数依赖于学生ID。

将上图转换成符合2NF的表格

https://i-blog.csdnimg.cn/blog_migrate/0618cc235dbbaaf6068b6d7572474ffc.png

https://i-blog.csdnimg.cn/blog_migrate/669364e902fc0724a40b6219a1c78e08.png

3NF

判断一个关系模式(即表格)是否符合第三范式(3NF)的要求,需要满足以下两个条件:

  1. 表格必须符合第二范式(2NF)
  2. 表格中的非主属性(即非主键的属性)不依赖于其他非主属性或者说 完全 依赖于主键

https://i-blog.csdnimg.cn/blog_migrate/a8f23e12b987abb725960e7eb572d570.png

上表的主键是商品ID其他的非主属性都完全依赖于主键所以符合3NF

https://i-blog.csdnimg.cn/blog_migrate/c91a5e63d0534f28c4b7a59337fcecb5.png

在上述表格中,非主属性客户姓名、客户邮箱、产品名称、产品类型和产品价格存在 相互依赖的关系 , 而不仅仅依赖于主键订单编号和客户ID 。因此,该表格 不符合3NF 的要求。如果有多个订单都包含相同的客户信息和产品信息,那么这些信息就需要在每个订单中重复存储,这会导致数据冗余和数据不一致性问题。

这里就不符合(完全依赖于)这个条件,只要在非主属性和非主属性之间存在函数依赖关系 就不符合3NF

BCNF

https://i-blog.csdnimg.cn/blog_migrate/996f11af885b113ab148c8d7962163bf.png

https://i-blog.csdnimg.cn/blog_migrate/1deb6f402d9abfedd1a1683ab757e437.png

4NF

要判断一个关系模式是否符合4NF,需要考虑以下几个步骤:

  1. 检查关系模式是否符合BCNF,即每个非主属性完全依赖于候选码集,而不是依赖于其他非主属性。
  2. 如果关系模式的某些属性有多值依赖,即存在一个属性集合A,并且当确定A的值时,会出现多个B的值与之对应(其中B是非主属性,不属于A),则该关系模式可能违反4NF的要求。
  3. 对于存在多值依赖的关系模式,可以创建一个新的关系模式,其中包含原关系模式的主键和对应的非主属性,以及能够唯一确定非主属性的列集合。
  4. 如果切换后的表仍然违反4NF,则需要重复步骤3,直到得出符合4NF的结果为止。
  5. 总结:消除多值依赖

https://i-blog.csdnimg.cn/blog_migrate/63f30fff386fd5ba9d703953c7ce7476.png

–分解(Decomposition)方法

六、Database Design

https://i-blog.csdnimg.cn/blog_migrate/79e401099b99d44b103359df396d57cc.png

概念设计(Conceptual Design)

E-R图(Entity-Relation Diagram)

https://i-blog.csdnimg.cn/blog_migrate/4388ab278f3c14dfc9c957c7b6ecee0d.png

https://i-blog.csdnimg.cn/blog_migrate/7a40c0686377e9ae7e0aceedba19e93d.png

https://i-blog.csdnimg.cn/blog_migrate/029f75460050f7751b9b8918cf041af8.png

n:m类比同上

nⓂ️p类比同上

逻辑设计(Logical Design)

–将E-R图转换为关系模式

https://i-blog.csdnimg.cn/blog_migrate/20b382eccd4e8f6e01fa335663831d8b.png

https://i-blog.csdnimg.cn/blog_migrate/d658228b292e27417fea0ac43701f98e.png

https://i-blog.csdnimg.cn/blog_migrate/ccf09b9c99181c407057e7f71cd3e353.png

七、Transaction事务

https://i-blog.csdnimg.cn/blog_migrate/277b79aa4fec2c24b8418f878fdc1b82.png

事务(Transaction)的特点

–ACID

https://i-blog.csdnimg.cn/blog_migrate/337e7845ba28a125929a709aa6b1c05e.png

https://i-blog.csdnimg.cn/blog_migrate/d7ef370ec5bfe3b9d7be89bfca7d025a.png

并发(Concurrency)可能导致的异常

–修改丢失(W-W)、不可重复读(R-W)、读脏数据(W-R)

https://i-blog.csdnimg.cn/blog_migrate/aa62a7bcaa6efc476e11f849faeda9aa.png

处理方法

–共享锁(S)、排他锁(X)、两阶段锁(Two-phase locking,2PL)、Timing Order(T/O)

https://i-blog.csdnimg.cn/blog_migrate/4fa2cb1951e0e6d58959b194de2e5989.png

两阶段锁(Two-phase locking,2PL) 【类比操作系统信号量pv操作】

https://i-blog.csdnimg.cn/blog_migrate/6af685db0e632adf597d26b02026ed22.png

Timing Order(T/O)【简而言之通过时间戳(物理方式)按顺序排序执行】

https://i-blog.csdnimg.cn/blog_migrate/13b4945cbaeefdf31f6368dc7acbd2c3.png

日志(Log)策略和恢复(Recovery)技术

https://i-blog.csdnimg.cn/blog_migrate/31c2ab12642bc8184f8e8149259883ba.png