本节针对上一篇基础之上,对数据库的一些原理进行总结。
主要包括
- 数据库系统概述
- 数据库系统定义
- 数据模型
- 三层模式两层映像
- 关系数据库
- 三个完整性
- 视图
- 数据字典
- 范式
- 数据库编程
- 断言
- 触发器
- 存储过程
- MySQL中的存储引擎
1.数据库系统概述
1.1 数据库系统
数据库系统由 数据库、数据库管理系统、应用程序、数据库管理人员 组成的存储管理、处理和维护数据的系统。
1.2 数据模型
- 分类
- 概念模型
按用户观点对数据信息建模(比如E-R图) - 逻辑模型
按计算机系统观点对数据建模(建立具体的数据库表)。
现在企业常用的都是关系模型,除此之外还有层次模型和网状模型等。 - 物理模型
数据在磁盘或磁带上的存储方式和存取方法(比如索引)
- 概念模型
- 组成元素
数据结构、数据操作、数据完整性约束
1.3 三层模式两层映像
数据库系统结构如下:
- 模式
也称为逻辑模式,是数据库中所有用户的公共数据视图。 - 外模式
也称为用户模式,模式的子集。 - 内模式
也称为存储模式,数据物理结构和存储方式的描述。
两层映像分别保证数据与程序的逻辑独立性
和物理独立性
。
2.关系模型
关系模型是属于逻辑模型的一种,就是现在主流使用的。
2.1 三个完整性
实体完整性(主键非空且唯一);
参照完整性(外键有的对应主键必须有);
用户自定义完整性(比如设置某整型字段数据<100)
2.2 视图
视图是从一个或几个基本表(或视图)导出的表,是一个虚表,不存放对应的数据。视图消解
: 将对视图的操作转换为对具体表的操作。
视图作用
:简化用户操作、提供一定程度逻辑独立性、对机密数据提供安全保护
3.范式
合理的关系模型数据库设计能尽量避免:数据冗余、更新插入删除异常等问题。因此一些大佬们设计了5个范式。
4.数据库编程
4.1 断言
断言可以定义为涉及多个表或聚集操作的比较复杂的完整性约束。
好吧,上面一句话不好懂,说白了断言就是会对断言中的子句进行检查,当为真值才允许执行。
断言定义
1
create assertion 断言名 检查子句
举例
1
2
3
4# 限制每学期每门课最多60人选修
create assertion 断言名 check(
60 >= select count(*) from SC group by cno
)
这样在插入的时候就会触发检查该断言,满足条件才允许插入,否则就会拒绝插入。
4.2 触发器
触发器又称为 事件-条件-动作
规则,当执行事件时会对条件进行检查,满足条件会进一步执行相应动作。
比如我们平时写功能,在一个表插入数据,另一个也需要跟着插入数据就可以通过触发器实现。
4.3 存储过程
存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而 一般SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速 度。
4.4 MySQL中的存储引擎
有两个常用存储引擎:MyISAM与InnoDB(MySQL默认的)
关于两个存储引擎的区别可参考该链接[link]