概念:数据库管理系统(Database Management System)

概念讲解



数据库

  • 存储数据,用户可以对于数据文件进行增、删、改、查操作。以一定的方式存储并与应用程序彼此独立的数据集合。

  • 数据模型

  • 数据结构

  • 存储在数据库中的对象类型的集合,作用是描述数据库组成对象以及对象之间的关系

  • 数据操作

  • 对数据对象进行的操作。

  • 数据完整性约束条件

  • 数据与数据模型遵守完整性规则,它能保证数据的正确性和一致性。



  • 数据库存储结构

  • Head files

  • Hash buckets

  • B+ trees



  • 关系

  • 描述实体与实体之间的联系的单一的数据结构。关系可以看做是一个笛卡尔积的有限子集。



  • 关系模型

  • 数据模型。n个集合的笛卡尔积的一个子集。



  • 分布式数据库

  • 在网络上将物理上分散的多个数据库单元连接组合成的一个逻辑上统一的数据库。每个被连接起来的数据库单元成为站点或者节点。



  • ACID

  • 数据库管理系统在写入数据时,为保证事务上的正确性,必须具备四个特性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。



  • NULL值

  • 属性(列)的值未知,而不是0;



  • 数据库规范化

  • 见字如意,以减少数据库中的数据冗余,增进数据的一致性为目的的技术。



  • 数据库完整性

  • 实体完整性

  • 域完整性

  • 参照完整性



  • 实体完整性

  • 要求每个表中必须有主键



  • 主键

  • 在表中唯一标识一条数据。或与另一表产生联系。

  • 外键

  • 表与表之间由关系来链接,A表中的主键放在B表中,AB两个表存在关系,A的主键就是B表的外键。

  • 候选键

  • 是某个关系变量的一组属性所组成的集合。

  • 这个属性集合始终能够确保在关系中能唯一标识元组。

  • 在这个属性集合中找不到真子集能够满足条件。

  • 能够在关系中唯一表示出不同的元组。



  • 代理键

  • 代理键是在当数据库表中的候选键都不适合当主键的时候,就会找一个没有意义的但是唯一标识一条数据的字段来作为主键。例如数据太庞大。





  • 数据库组件



    触发器(trigger)

  • 在数据库中,在执行数据有异动的动作时,先行拦截一种数据库对象,作为强制运行的特定动作程序,成为数据操作语言触发器。

  • 使用触发器的优点:

  • 可以在写入数据前,强制校验或者是转换数据。

  • 触发器发生错误的时候,异动结果会被撤销。

  • 可以依照特定的情况,替换异动指令。

  • 部分数据库管理系统可以针对数据定义语言使用触发器,成为DDL触发器。



  • 视图

  • 是将一组指令构成的结果集,组合成可查询的数据表的一种数据库对象。与数据表不同的是,数据表是一种实体结构,但是视图表示一种虚拟结构,实体表中的数据变化都可以反应到视图中。

  • 视图的优点:

  • 在数据库中不需要存储数据

  • 可以视为数据表,具有JSON的能力

  • 可以在视图中运行测试数据

  • 在多数情况下,视图是只读的,外部程序无法对其修改。

  • 可以将实体数据表隐藏起来,降低被攻击的风险。



  • 事务

  • 对数据进行执行过程中的一个逻辑单位,有限序列操作构成。

  • 提供将数据恢复至正常状态的方法,同时也保证了数据库即使在异常状态也能保持一致性的方法。

  • 在处理并发访问数据库的时候,可以在这些应用程序之前提供一个隔离方法。防止彼此之间的干扰。

  • ACID的性质

  • 原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部执行,要么不执行。

  • 一致性:事务应该确保数据库的状态从一个状态转变到另个一一致的状态,一致状态是在数据库中的数据应该满足完整性约束。

  • 隔离性:多个事务并发执行时,一个事务的执行应该影响其他事务的执行。

  • 持久性:已经被提交的事务对数据库的修改应该永久保存在数据库中。



  • 并发控制

  • 确保及时的修正并发导致错误的一种机制。



  • 乐观锁

  • 并发方法的一种,它假设多用户并发的事务在处理的时候不会彼此影响,各个事务能够在不产生锁的情况下处理各自影响的那部分数据,在提交更新数据之前,每个事务会先检查在事务读取数据后,有没有其他事务有修改了该数据,如果其他的事务有更新的话,正在提交的事务将会回滚。

  • 乐观并发控制包含的阶段:

  • 读取:事务将数据读入缓存,这个时候系统会给事务分配一个时间戳。

  • 校验:事务执行完毕后,进行提交,这是同步校验所有事务。如果事务所读取之后又被其他事务修改,则产生冲突,事务被中断回滚。

  • 写入,通过校验阶段后,将跟新的数据写入数据库。



  • 悲观锁

  • 处理并发导致的错误的另一种方式。他可以阻止一个事务影响其他用的方式爱修改数据。

  • 为数据安全提供了保证

  • 效率低,处理加锁的机制会让数据库产生额外的开销,增加死锁的机会。

  • 数据库索引

  • 一个排序的数据结构,以协助快速查询,更新数据表中的数据。