目录
1.1数据库系统(DBMS)与文件系统(File System)
1.2数据库三级模式(Schema)、两级映像(Mapping)
主码(Primary Key)、外码(Foreign Key)、候选码(Candidate Key)
--create、insert、alter、update、drop、delete
--select/from/where/group by/having/order by
--Cluster/Non-cluster/Bitmap/Functional/...
Function-based Indexes(基于函数的索引)
完整性(Integrity) vs 安全性(Security)
插入异常(Insert Anomaly)、更新异常(Update Anomaly)、删除异常(Delete exception)
--修改丢失(W-W)、不可重复读(R-W)、读脏数据(W-R)
--共享锁(S)、排他锁(X)、两阶段锁(Two-phase locking,2PL)、Timing Order(T/O)
两阶段锁(Two-phase locking,2PL) 【类比操作系统信号量pv操作】
Timing Order(T/O)【简而言之通过时间戳(物理方式)按顺序排序执行】
一、Database Fundamentals
1.1数据库系统(DBMS)与文件系统(File System)
一个软件包/系统,便于定义、构建、操作和共享计算机化数据库的功能
DBS( Database System) = DBMS + Database
文件系统(File System)
1.2数据库三级模式(Schema)、两级映像(Mapping)
Internal (Physical) Schema 内模式 -->(存储文件)描述数据如何在物理上硬件上存储 (用户不可见)
Conceptual Schema 概念模式 -->(基本表)是数据库所有数据的逻辑结构和特征描述
External Schema 外模式 -->用户模式(视图) 也就是用户能够看到的那部分的数据的逻辑结构和特征描述
1.3Responsibilities of DBA
1.4数据独立性(Data Independence)
--逻辑(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)
关键操作
--选择(Selection)
--投影(Projection)
--连接(Join)
自然连接 < == > 等值连接+去重
--除(Division)
关系代数(Relation Algebra)运算
三、SQL
Characteristics of SQL
一些简单查询语句
从查询结果当中取6-15行 (第一个参数为起始位置 第二个参数表示长度)
SUB-QUERIES 子查询
增删改查
--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(聚集索引)
NON-CLUSTERED INDEX(非聚集索引)
Bitmap Index(位图索引)
Function-based Indexes(基于函数的索引)
视图(View)的作用
--与基本表的区别和联系
触发器(Trigger)
存储过程(Stored Procedure)
存储过程(Stored Procedure)也就是在数据库中的代码重复使用
完整性(Integrity) vs 安全性(Security)
五、Normalization
规范化(Normalization)的目的
--冗余(redundancy)
--异常(anomalies)
插入异常(Insert Anomaly)、更新异常(Update Anomaly)、删除异常(Delete exception)
函数依赖关系
各范式的原则(1NF-4NF)
--判定依据
1NF
判断一个关系模式(即表格)是否符合第三范式(3NF)的要求,需要满足以下条件:
是一个单表
判断是不是符合1NF 就看 是不是单表 是单表就符合1NF 如果是复合表就不符合
上表就符合1NF 是个单表
上表就不符合1NF因为{}内可拆分是复合表 不符合原子性
2NF
判断一个关系模式(即表格)是否符合第三范式(2NF)的要求,需要满足以下两个条件:
- 表格必须符合第一范式(1NF)
- 没有部分函数依赖关系,非主属性都完全依赖于主键或候选键
上表就符合2NF,首先主键是StudentID 其他非主键非候选键的属性Name Gender Birthday都函数依赖于StudentID
上表就不符合2NF。首先选课表的主键是选课ID,学生ID。其他非候选码属性选课课程函数依赖于选课ID,学生ID 但是学生姓名只函数依赖于学生ID。
将上图转换成符合2NF的表格
3NF
判断一个关系模式(即表格)是否符合第三范式(3NF)的要求,需要满足以下两个条件:
- 表格必须符合第二范式(2NF)
- 表格中的非主属性(即非主键的属性)不依赖于其他非主属性或者说完全依赖于主键
上表的主键是商品ID其他的非主属性都完全依赖于主键所以符合3NF
在上述表格中,非主属性客户姓名、客户邮箱、产品名称、产品类型和产品价格存在相互依赖的关系,而不仅仅依赖于主键订单编号和客户ID。因此,该表格不符合3NF的要求。如果有多个订单都包含相同的客户信息和产品信息,那么这些信息就需要在每个订单中重复存储,这会导致数据冗余和数据不一致性问题。
这里就不符合(完全依赖于)这个条件,只要在非主属性和非主属性之间存在函数依赖关系 就不符合3NF
BCNF
4NF
要判断一个关系模式是否符合4NF,需要考虑以下几个步骤:
- 检查关系模式是否符合BCNF,即每个非主属性完全依赖于候选码集,而不是依赖于其他非主属性。
- 如果关系模式的某些属性有多值依赖,即存在一个属性集合A,并且当确定A的值时,会出现多个B的值与之对应(其中B是非主属性,不属于A),则该关系模式可能违反4NF的要求。
- 对于存在多值依赖的关系模式,可以创建一个新的关系模式,其中包含原关系模式的主键和对应的非主属性,以及能够唯一确定非主属性的列集合。
- 如果切换后的表仍然违反4NF,则需要重复步骤3,直到得出符合4NF的结果为止。
- 总结:消除多值依赖
--分解(Decomposition)方法
六、Database Design
概念设计(Conceptual Design)
E-R图(Entity-Relation Diagram)
n:m类比同上
n:m:p类比同上
逻辑设计(Logical Design)
--将E-R图转换为关系模式
七、Transaction事务
事务(Transaction)的特点
--ACID