概念:数据库管理系统(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 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

如何修改自增列值以及相应的解决方法

今天工作中遇到特殊的一个任务,就是将两个自增列值的进行对调变更。 SQL Server 平台修改自增列值 由于之前处理过sql server数据库的迁移工作,尝...

3418
来自专栏Python中文社区

开车啦!小爬虫抓取今日头条街拍美女图

專 欄 ❈追梦人物,电子科技大学计算机学院研究生,从事大数据分析研究方向。主要使用 Python 语言进行相关数据的分析,熟练使用 django 开发网站系统...

2575
来自专栏全华班

“码码”再也不用担心我的代码被反编译了!

自己辛辛苦苦写出来的代码,被别人无情的反编译了怎么办? ? 一、背景 Java是一种跨平台的、解释型语言,Java源代码编译成中间“字节码”存储...

3506
来自专栏小程序·云开发官方专栏

一次在微信小程序里跑 h5 页面的尝试

标题看起来有点唬人,在微信小程序里跑 h5 页面,不会又是说使用 web-view 组件来搞吧?确实,使用 web-view 组件可以达到跑 h5 页面的要求,...

620
来自专栏Youngxj

emlog插件插入运行代码

1542
来自专栏乐沙弥的世界

基于catalog 创建RMAN存储脚本

简言之,将rman的备份恢复命令写成脚本并保存在恢复目录内,恢复目录内的脚本可用性及通用性高于基于文件系统的脚本。

613
来自专栏Rainbond开源「容器云平台」

好雨云帮一周问答集锦(11.28-12.04)

1395
来自专栏

使用redis构建可靠分布式锁

关于分布式锁的概念,具体实现方式,直接参阅下面两个帖子,这里就不多介绍了。 分布式锁的多种实现方式 分布式锁总结 对于分布式锁的几种实现方式的优劣,这里再列举下...

2497
来自专栏互联网杂技

入门Webpack(上)

写在前面的话 阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过;如果你和十天前...

3139
来自专栏开源优测

性能测试必备监控技能linux篇14

前言 如果性能测试的目标服务器是linux系统,在如何使用linux自带的命令来实现性能测试过程的监控分析呢? 对于日常性能测试来讲,在linux下或是类Uni...

3396

扫码关注云+社区