数据库理论基础

1、什么是数据库

数据:描述事物的符号记录,能够是数字、文字、图形、图像、声音、语言等,数据有多种形式,它们均可以通过数字化后存入计算机。
数据库:存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按照必定数据模型组织、描述和存储,具备较小的冗余度,较高的独立性和易扩展性,并为各类用户共享。mysql

数据库特色以下:
  • 数据结构化
  • 数据的共享性高,冗余度低,易扩充
  • 数据独立性高
  • 数据由 DBMS 统一管理和控制(安全性、完整性、并发控制、故障恢复)

DBMS:数据库管理系统(可以操做和管理数据库的大型软件,例如MySQL。)redis

2、数据库与文件系统区别

  • 数据库系统:数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件, 用于创建、使用和维护数据库,简称 DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全 性和完整性。
  • 文件系统:文件系统是操做系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操做系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
2.一、对比与区别
2.1.一、管理对象不一样
  • 文件系统的管理对象是文件,并不是直接对数据进行管理,不一样的数据结构须要使用不一样的文件类型进行保存,例如可执行文件为.exe,word文件为.doc。
  • 数据库直接对数据进行存储和管理。
2.1.二、存储方式不一样
  • 文件系统使用不一样的文件将数据分类(.doc/.mp4/.jpg)保存在外部存储上
  • 数据库系统使用标准统一的数据类型进行数据保存(字母、数字、符号、时间)
2.1.三、调用数据的方式不一样

以下图

数据库系统:不一样软件,不一样语言调用DBMS接口,就可对数据库内的数据进行操做,数据的冗余度小。
文件系统::文件系统使用不一样的软件打开不一样类型的文件,例如打开.doc文件,得需用用world,打开.jpg文件,得须要看图软件。sql

2.二、优缺点
  • 因为 DBMS 的存在,用户再也不须要了解数据存储和其余实现的细节,直接经过 DBMS 就能获取数据,为数据的使用带来极大便利。
  • 具备以数据为单位的共享性,数据可远程操做,管理。具备数据的并发访问能力。DBMS 保证了在并发访问时数据的一致性。
  • 低延时访问,典型例子就是线下支付系统的应用,支付规模巨大的时候,数据库系统的表现远远 优于文件系统。
  • 可以较为频繁的对数据进行修改,在须要频繁修改数据的场景下,数据库系统能够依赖 DBMS 来 对数据进行操做且对性能的消耗相比文件系统比较小。
  • 对事务的支持。DBMS 支持事务,即一系列对数据的操做集合要么都完成,要么都不完成。在 DBMS 上对数据的各类操做都是原子级的。

3、常见数据库

关系型数据库

关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户经过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型能够简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。当前主流的关系型数据库有 Oracle、DB二、Microsoft SQL Server、Microsoft Access、MySQL、浪潮 K-DB 等。mongodb

非关系型数据库

非关系型数据库:又被称为 NoSQL(Not Only SQL ),意为不只仅是 SQL,是一种轻量、开源、 不兼容 SQL 功能的数据库,对 NoSQL 最广泛的定义是“非关联型的”,强调 Key-Value 存储和文档数据库的优势,而不是单纯地反对 RDBMS(关系型数据库管理系统)常见的非关系型数据库有,mongodb,redis。数据库

4、关系型数据库(MySQL)的特征及组成结构介绍

4.一、关系型数据库的发展历程
  • 层次模型
    数据模型安全

  • 网状模型
    数据结构

  • 关系模型
        关系模型以二维表结构来表示实体与实体之间的联系,关系模型的数据结构是一个“二维表框 架”组成的集合。每一个二维表又可称为关系。在关系模型中,操做的对象和结果都是二维表。关系模型是目前最流行的数据库模型。支持关系模型的数据库管理系统称为关系数据库管理系统,Access 就是一种关系数据库管理系统。图所示为一个简单的关系模型.

    图(a)所示为关系模式,图(b)所示为这两个关系模型的关系,关系名称分别为教师关系和课程关系,每一个关系均含 3 个元组,其主码均为“教师编号”。
    在关系模型中基本数据结构就是二维表,不用像层次或网状那样的连接指针。记录之间的联系是 经过不一样关系中同名属性来体现的。例如,要查找“刘晋”老师所上的课程,能够先在教师关系中根据姓名找到教师编号“1984030”,而后在课程关系中找到“1984030”任课教师编号对应的课程名便可。经过上述查询过程,同名属性教师编号起到了链接两个关系的纽带做用。因而可知,关系模型中的各个关系模式不该当是孤立的,也不是随意拼凑的一堆二维表,它必须知足相应的要求。架构

5、数据库组成与相关知识。

数据以表格的形式出现,每行为单独的一条记录,每列为一个单独的字段,许多的记录和字段组 成一张表单(table),若干的表单组成库(database)。
● 记录(一条数据)
在数据库当中,表当中的行称之为记录
● 字段(id name ....)
在数据库当中,表当中的列称之为字段
● MySQL数据类型
数据类型用于指定特定字段所包含数据的规则,它决定了数据保存在字段里的方式,包括分配给 字段的宽度,以及值是否能够是字母、数字、日期和时间等。任何数据或数据的组合都有对应的数据 类型,用于存储字母、数字、日期和时间、图像、二进制数据等。数据类型是数据自己的特征,其特 性被设置到表里的字段。 MySQL 常见基础数据类型:并发

  • 字符串类型(CHAR(0-255 固定长度),VARCHAR(0-255 可变长度))
  • 数值类型(INT(整数型)、FLOAT(浮点型))
  • 日期和时间类型(DATE(年月日)、TIME(时分秒))
    ● MySQL约束类型
    约束是一种限制,它经过对表的行或列的数据作出限制,来确保表的数据的完整性、惟一性。
  • 主键约束 primary key:主键约束至关于惟一约束+非空约束的组合,主键约束列不容许重复,也不容许出现空值。每一个表最多只容许一个主键,创建主键约束能够在列级别建立,也能够在表级别建立。当建立主键的约束时,系统默认会在所在的列和列组合上创建对应的惟一索引。
  • 外键约束 foreign key:外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。
  • 惟一约束 unique:惟一约束是指定 table 的列或列组合不能重复,保证数据的惟一性。惟一约束不容许出现重复的值,可是能够为多个 null。同一个表能够有多个惟一约束,多个列组合的约束。在建立惟一约束时,若是不给惟一约束名称,就默认和列名相同。惟一约束不只能够在一个表内建立,并且能够同时多表建立组合惟一约束。
  • 非空约束 not null 与默认值 default:非空约束用于确保当前列的值不为空值,非空约束只能出如今表对象的列上。Null 类型特征:全部的类型的值均可以是 null,包括 int、float 等数据类型。
    ● MySQL索引
    索引是一个单独的、物理的数据库结构,它是某个表中一字段或若干字段值的集合。表的存储由 两部分组成,一部分用来存放数据,另外一部分存放索引页面。一般,索引页面相对于数据页面来讲小 得多。数据检索花费的大部分开销是磁盘读写,没有索引就须要从磁盘上读表的每个数据页,若是 有索引,则只需查找索引页面就能够了。因此创建合理的索引,就能加速数据的检索过程。
    ● MySQL锁
    数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个 事务同时存取同一数据的状况。若对并发操做不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个很是重要的技术。当事务在对某个数据对象进行操做前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了必定的控制,在该事务释放锁以前,其余 的事务不能对此数据对象进行更新操做。
    ● MySQL 的存储引擎
    存储引擎就是存储数据,创建索引,更新查询数据等等技术的实现方式。存储引擎是基于表的, 而不是基于库的。因此存储引擎也可被称为表类型。Oracle,SqlServer 等数据库只有一种存储引擎。 MySQL 提供了插件式的存储引擎架构。因此 MySQL 存在多种存储引擎,能够根据须要使用相应引擎, 或者编写存储引擎。
  • MYISAM:默认引擎、插入和查询速度较快,支持全文索引,不支持事务、行级锁和外键约束等功能
  • INNODB:支持事务、行级锁和外键约束等功能
  • MEMORY:工做在内存中,经过散列字段保存数据,速度快、不能永久保存数据

● 事务(Transaction)是并发控制的基本单位。
能够把一系列要执行的操做称为事务,而事务管理就是管理这些操做要么彻底执行,要么彻底不执行 。
经典案例:银行转帐工做,从一个帐号扣款并使另外一个帐号增款,这两个操做要么都执行,要么都不执行。因此,应该把它们当作一个事务。事务是数据库维护数据一致性的单位,在每一个事务结束 时,都能保持数据一致性。性能

相关文章
相关标签/搜索