数据库原理核心知识
数据库原理(核心知识♥)
目录
一、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Ⓜ️p类比同上