【理论研究】数据库基本知识与原理系列01 -数据库的基本原理与

数据库作为使用频率最广的中间件,作为一个IT工程师,就算不打算从事数据库开发或者做DBA,也应该掌握其基础的知识、原理与基本的使用。

为此,本篇开始,尝试对数据库的基本知识与原理进行讲解。


关系型数据库:以前,市面上最常见,使用最广泛的数据库,叫做关系型数据库,例如大名鼎鼎的Oracle、SQL Server(微软的,也叫MSSQL)、Mysql、DB2(IBM的),都是关系型的数据库。由于它使用最广泛、最常见,每个入门的人员都必须要掌握,,后面有机会再介绍No SQL的数据库。

非关系型数据库:叫作No SQL数据库,其实只是个统称,有各种的列式数据库,KEY VALUE值的数据库。



二维表意思就是有行与列组成的表格,与EXCEL表里面的单个工作表(sheet)是一个意思。与EXCEL表里面每个独立的工作表唯一的不同,是关系型数据库中的表格,都是有关联关系的。

假设你的EXCEL表里面有3个工作表分别叫A、B、C,如果表A有A1、A2、A3列且有内容,B表里面有B1、B2、B3列且有内容、C也有C1、C2、C3列且有内容,而B2的每个单元格其实是从A2列对应行的单元格里面引用过来的,而C3的单元格也是从B3里面引用过来的,那么其实A、B、C三个表格就有关联关系了。那么这样的EXCEL表就更加接近关系型数据库里面的表了。

只不过,数据库里面的,没有规定B2的某个单元格一定要引用A2里面对应行的单元格,可以是任意一行的单元格的值。


为什么要用数据库?

为什么要用数据库而不用EXCEL表?这是一个重要的问题。如果都不知道一个东西有什么用,能解决什么问题,那么花时间学习一个新东西干嘛?

首先,在数据量很少的情况下,直接用EXCEL表格也是没有问题的。

但是当数据有2万行左右的时候,发觉一台K22的联想笔记本用EXCEL来打开,可能都要7~8秒才能打开了,这基本上已经到达了用户可以忍受的延迟时间的极限了,如果一个用户打开一个网页,7~8秒都打不开的话,估计他会选择叉掉这个网页,然后去其他网站去了。

因此,当数据量很大的时候,我们发觉EXCEL已经无法满足我们的性能需求了,因此需要使用数据库。


除了性能之外,使用普通的二维表,还有以下几个问题:

大量同样的数据重复存储,我们以下面一张很简单的学生选课记录表为例。

序号学号学生姓名性别联系电话课程名称授课老师12019063001张三男13900000001语文孙七22019063001张三男13900000001数学周八32019063001张三男13900000001英语吴九42019063002李四男13900000002语文孙七52019063002李四男13900000002数学周八62019063003王五女13900000003数学周八72019063003王五女13900000003英语吴九82019063004赵六女13900000004体育郑十

看到“张三”选了“语文、数学、英语”3门课程,但是“张三”每选修一门课程,他的“学号”、“性别”、“联系电话”等数据就会被重复存储1次,如果有100条关于他的记录,这些数据就会被重复100次。这样的数据冗余会带来如下问题:

1)浪费存储空间。

2)导致增加了检索有效数据的时长(因为数据总量增多了,搜索的时候遍历的数据增多了)。


:想删除1个数据,结果会导致不想删的数据也被删除了。(依然以上述例子为例)

序号学号学生姓名性别联系电话课程名称授课老师82019063004赵六女13900000004体育郑十

如果“赵六”退学了,我们想要删除赵六的数据,但是我们会发现只有“赵六”选修了体育课。

这时候一旦删除了“赵六”,“体育”的课程,“郑十”这位授课老师,都会无故从这个表格被删掉,这就叫删除异常。


:修改一个数据,却需要修改多次,并且如果修改不安全,会导致数据不一致。

序号学号学生姓名性别联系电话课程名称授课老师12019063001张三男13900000001语文孙七22019063001张三男13900000001数学周八32019063001张三男13900000001英语吴九

如果“张三”更换了手机,修改手机号,张三有多少条记录就需要修改多少次,写入操作的开销是大于读操作的,会带了额外增加的开销,并且如果修改不完全,会导致表格中“张三”的联系电话不一致。


:应该插入的数据无法插入。

【理论研究】数据库基本知识与原理系列01 -数据库的基本原理与