一,为什么要使用数据库

  在研究为什么要使用数据的时候,不妨想想之前所学习的C/C++  Python...
  在写这类语言的小项目的时候,点击运行直到结束程序,里面的数据在过程中都是会改变的,没有持久化,这样就会导致一些我们想去保留一些数据无法保留


这样就引出了为什么需要使用数据库
  对于项目的制作,我们有需求对于数据的持久化,就是当电脑断电了又或者结束了程序,不能让数据消失需要保留
  因此数据持久化意味着将内存中的数据保存到硬盘上加以固化,而持久化的实现过程大多通过各种关系数据库来完成
  持久化的主要作用是
将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件
  综上所述:对于为什么需要使用数据库的使用,原因之一是为了使得数据持久化,原因之二是为了利用数据库的存储关系去管理对应的数据


对于为什么内存为什么会导致电脑断电之后无法保存数据,这个是计算机组成原理的内容,可以看博主的计算机组成原理的笔记

二,数据库与数据库管理系统

在了解为什么需要使用数据库的使用,之后需了解一些数据库的相关的概念

(1)  数据库的相关概念
DB:数据库
即存储数据的仓库其本质是一个文件系统,它保存了一系列有组织的数据
DBMS:数据库管理系统
是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控
制。用户通过数据库管理系统访问数据库中表内的数据。
SQL:结构化查询语言
专门用来与数据库通信的语言


(2)  数据库和数据库管理系统的关系

一个数据库管理系统可以管理多个数据库,一个数据库可以管理多个表

三,数据库的比对

(1)  MySQL
MySQL由于其体积小、速度快、总体拥有成本低,可处理上千万条记录的大型数据库,尤其是开放源码,这一特点,使得很多互联网公司、中小型网站选择了MySQL作为网站数据库

(2)  Oracle
Oracle是更适合跨国企业使用,对于性能和安全性要求很高

四,DBMS 与 非RDBMS

在众多数据库中,分为很多很多类型,比如

参考数据库的排行榜,不难看到前面排名高的都是关系型数据库,下面的也有别的,如Document,文件型数据库

对此,就将数据库分为关系型数据库(DBMS)非关系型数据库(RDBMS)

(1)  DBMS

这种类型的数据库是 最古老 的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的
二元关系 (即二维表格形式)
关系型数据库以 (row) (column) 的形式存储数据
 
对于该数据库类型,优势如下:
复杂查询 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
事务支持 使得对于安全性能很高的数据访问要求得以实现
(2)  RDBMS
非关系型数据库,可看成传统关系型数据库的功能 阉割版本 ,基于键值对存储数据,不需要经过SQL层 的解析, 性能非常高 。同时,通过减少不常用的功能,进一步提高性能
对于RDBMS,有哪些数据库是这种类型呢?
(1)  键值型数据库
键值型数据库通过 Key-Value 键值的方式来存储数据,其中 Key Value 可以是简单的对象,也可以是复 杂的对象

该数据库的优势
Key 作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,
该数据库的缺点
缺点是无法像关系型数据库一样使用条件过滤(比如 WHERE),如果你不知道去哪里找数据,就要遍历所有的键, 这就会消耗大量的计算
键值型数据库典型的使用场景是作为 内存缓存 Redis 是最流行的键值型数据库

旁边是Key,然后对于Key去右边寻找Value

(2)  文档型数据库
此类数据库可存放并获取文档,可以是XML、JSON等格式。在数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录。文档数据库所存放的文档,就相当于键值数据库所存放“MongoDB是最流行的文档型数据库。此外,还有CouchDB等。

(3)  搜索引擎数据库
虽然关系型数据库采用了索引提升检索效率,但是针对全文索引效率却较低。搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。核心原理是“倒排索引
典型产品:SolrElasticsearchSplunk
(4)  列表数据库
列式数据库是相对于行式存储的数据库,OracleMySQLSQLServer等数据库都是采用的行式存储Row-based),而列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的I/O,适合于分布式文件系统,不足在于功能相对有限
行存储和列存储有什么区别

 

当按行存储的时候,其实有些数据是并不需要进行查找的,比如查找一行的时候,4,5,2都是不需要进行查找的,这个时候就浪费了大量的IO,但是列存储不一样,他是按列不断地查找,极大减少了IO

(5)  图数据库
图形数据库顾名思义,就是一种存储图形关系的数据库。它利用了图这种数据结构存储了实体(对象)之间的关系。关系型数据用于存储明确关系的数据,但对于复杂关系的数据存储却有些力不从心。如社交网络中人物之间的关系,如果用关系型数据库则非常复杂,用图形数据库将非常简单

五,关系型数据库的设计规则

(1)  表 字段 记录

表是由字段和记录组成的
字段相当于是属性,记录为实体和对象,如上图所示

(2)  四种关系
四种关系:一对一关联、一对多关联、多对多关联、自我引用

一对一和一对多的关系就不需要进行解释了,很好理解

一对一关系示意图

多对多关系示意图

多对多关联
要表示多对多关系,必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中
当学生去选课程得时候
学生信息表:一行代表一个学生的信息(学号、姓名、手机号码、班级、系别...)
课程信息表:一行代表一个课程的信息(课程编号、授课老师、简介...)
选课信息表:一个学生可以选多门课,一门课可以被多个学生选择 ----- 联接表
自我引用

五,总结

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐