概念:数据库管理系统(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的性质
    • 原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部执行,要么不执行。
    • 一致性:事务应该确保数据库的状态从一个状态转变到另个一一致的状态,一致状态是在数据库中的数据应该满足完整性约束。
    • 隔离性:多个事务并发执行时,一个事务的执行应该影响其他事务的执行。
    • 持久性:已经被提交的事务对数据库的修改应该永久保存在数据库中。

并发控制

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

乐观锁

  • 并发方法的一种,它假设多用户并发的事务在处理的时候不会彼此影响,各个事务能够在不产生锁的情况下处理各自影响的那部分数据,在提交更新数据之前,每个事务会先检查在事务读取数据后,有没有其他事务有修改了该数据,如果其他的事务有更新的话,正在提交的事务将会回滚。
  • 乐观并发控制包含的阶段:
    • 读取:事务将数据读入缓存,这个时候系统会给事务分配一个时间戳。
    • 校验:事务执行完毕后,进行提交,这是同步校验所有事务。如果事务所读取之后又被其他事务修改,则产生冲突,事务被中断回滚。
    • 写入,通过校验阶段后,将跟新的数据写入数据库。

悲观锁

  • 处理并发导致的错误的另一种方式。他可以阻止一个事务影响其他用的方式爱修改数据。
  • 为数据安全提供了保证
  • 效率低,处理加锁的机制会让数据库产生额外的开销,增加死锁的机会。

数据库索引

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

原文发布于微信公众号 - 数据库SQL(SQLdba)

原文发表时间:2018-01-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老秦求学

汇编语言之中断学习

计算机经常会遇到异常,会产生中断,发出中断请求。中断分为内中断和外中断。下面主要介绍的是内中断。   内中断,cpu什么时候会发出中断信号呢?一般有一下四种情况...

36914
来自专栏编程

java编程思想之并发

编程问题中的相当一大部分都可以通过顺序编程来解决。然而,对于某些问题,如果能够并行的执行程序中的多个部分,则会变得非常方便甚至非常必要,这些部分要么可以并发执行...

1897
来自专栏积累沉淀

Java设计模式(十四)----模板方法模式

模板方法模式 一、概述 二、结构 三、具体案例 四、优缺点和设计思想 一、概述 模板方法模式是类的行为模...

1875
来自专栏攻城狮的动态

iOS面试题梳理(一)

3796
来自专栏程序员互动联盟

【专业技术】介绍Java中的内存泄漏

Java语言的一个关键的优势就是它的内存管理机制。你只管创建对象,Java的垃圾回收器帮你分配以及回收内存。然而,实际的情况并没有那么简单,因为内存泄漏在Jav...

3158
来自专栏H2Cloud

C++任务队列与多线程

摘要:       很多场合之所以使用C++,一方面是由于C++编译后的native code的高效性能,另一方面是由于C++优秀的并发能力。并行方式有多进程 ...

2754
来自专栏个人随笔

设计模式(1)

  注:本文章示例为C#代码,设计模式通用任何编程语言,可放心阅读 设计模式(3W1H)   What?针对特定问题特出的特定的解决方案   Why?让程序有更...

30611
来自专栏Python

IO模型

一 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步:   所谓同...

1725
来自专栏linux驱动个人学习

我眼中的Linux设备树(四 中断)

四 中断 中断一般包括中断产生设备和中断处理设备。中断控制器负责处理中断,每一个中断都有对应的中断号及触发条件。中断产生设备可能有多个中断源,有时多个中断源对...

3667
来自专栏Jackson0714

C#多线程之旅(1)——介绍和基本概念

2639

扫描关注云+社区