数据库科普——我们为什么需要数据库

在这里插入图片描述

许多东西在学习之初,让人一头雾水。回想起最开始接触数据库的时候,我也并不是很清楚数据库是做什么的。如果你是一个像当时的我一样不明白数据库是做什么的小白,那么今天这篇博客将十分适合你,请阅读下去,相信读完之后你会明白数据库的用处是什么。

从一个故事开始

小红是一个家政阿姨,她每天的工作是给雇主收拾屋子的卫生,并且将雇主女主人的用品收纳到合适的位置。这一天,小红遇上了一个重大难题:女主人的衣服不好收纳。机智的小红经过一些观察,总结出了这个女主人的衣服有以下特点:

  1. 特别多。小红曾经问过女主人是否统计过家中衣服数量,女主人笑而不语。加之之前误判了衣服的数量,衣柜尺寸过小,该雇主已经买了很多衣柜用于存放大量衣服。这种非集中式的衣柜收纳也使得找到想穿的衣服更加困难。
  2. 特别乱。女主人是一个爱美的女子,家中的衣服多为设计款,并不像寻常人家的衣服那样有标准形状。这种情况也进一步提高了收纳衣服的难度。
  3. 衣服和衣服之间有一些某种神奇的模式(女生也许会更加清楚,这个模式叫做穿搭风格)。小红发现女主人很喜欢的一条红色裤子,经常与一件绿色上衣穿在一起。但是有时候女主人会经常在找到了红色裤子的时候,需要再花上10分钟才能找到那件与之搭在一起的绿色上衣。女主人很苦恼这件事情。

后来小红学习了一些计算机知识,理解了一些计算机思想,她最终解决了这个困扰女主人的收纳难题。她的具体做法如下:

  1. 她将一众衣服分成了几类,分别是上衣,裤子,裙子,配饰(帽子,围巾,手套),内衣,内裤,袜子,外套等。
  2. 家中一共有3个大衣柜,她将衣柜中的衣服全部清出,按照1的分类,分成了数堆。
  3. 根据衣柜的容量,将最多的上衣放置在家中最大的A衣柜,将次之多裤子和裙子放在家中第二大衣柜B衣柜,配饰单独放在一个衣柜中。
  4. 每个衣柜中的衣服,按照颜色排布,解决了找不到绿色上衣的难题。

至此,小红解决了女主人的衣服收纳难题。

数据库的开端

数据之于数据库,就如同衣服之于衣柜。数据库是一个存储数据的地方。当然除了存储数据以外,数据库还有增删改查等基本功能。数据库的这些功能帮助用户更好地理解数据进而使用数据进行决策。

在没有数据库时的人们是如何进行数据存取的呢?上古时代,人们存储数据的方式更为朴素,结绳,壁画,石刻等方法将数字和画面存储在实体上。在有了造纸术后,人们把文字存在纸上。有了计算机,人们把数据编码成二进制形式,存到电脑里。

但是,以二进制存放在电脑中的数据虽然解决了存的问题,却又不能很好地解决取的问题。数据存储的最终目的是方便人们更好地取出数据,并产生数据的理解。一个二进制字符串存在计算机中所代表的含义往往是多种多样的。解码这个存储形式的数据内涵是一件脱离计算机的工作。而当你了解数据库的发展过程时,你会发现数据库的发展是先研究清楚数据的属性,后进行数据库的设计的(这点与小红先研究女主人衣服的特点,后产生衣服收纳策略不谋而合👀)。

数据库发展历史

关系型数据库的发展起源于数学家E.F.Codd1970年发表的数学论文《用于大型共享数据库的关系数据模型》,这篇论文中提出了关系和关系运算的概念,这奠定了关系型数据库的理论模型。在这篇论文中E.F.Codd提出了经典的全关系系统12准则。为后续商用关系型数据库的产生奠定了理论基础。
在这里插入图片描述
然后,Codd的同事DonChamberlin将Codd的论文和关系运算,转换成为比较容易理解和使用的SQL语言,并且在后面成为所有关系型数据库的标准。

有了上面的数据理论和SQL基础,LarryElision和他的同事看到商机,开发出第一个商用大型关系型数据库Oracle,Scott作为一个开发的员工,将其测试账户放在里面了。而Oracle公司作为数据库领域的巨头,现如今每年

数据库是什么——回到最初的问题

在有了一些数据库实践之后,我发现数据库视角下数据中最重要的概念是关系模式。二者在王珊和萨师煊老师的《数据库系统概论》中有明确定义:
请添加图片描述
请添加图片描述
关系模型的数据结构十分简单,在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。这种逻辑结构虽然简单,但却也能表达丰富的语义结构,解决了人们大部分的数据存储问题。换句话:数据库中存储的数据的数据结构很类似于excel的形式(当然数据库里有一些excel没有的操作,例如连接操作等等)。

你可能产生疑问,既然数据库和excel的功能如此相近,为何不直接使用excel进行数据存储呢?数据库和excel相比有许多优势,列举如下:

  1. excel存储数据有规模限制:excel表格最多存储1048576行16384列数据,这对于大数据时代显然是不够的。数据库面对的数据规模更为庞大,而当数据规模超过单一数据库的限制时,即可以通过将单一数据库扩展到分布式数据库的形式扩大存储规模。
  2. excel的功能比数据库少:excel可以用于制作各种复杂的表格文档,进行繁琐的数据计算,并能对输入的数据进行各种复杂统计运算,也可以制作彩色丰富的商业图表。数据库功能则更强大,除了可以实现excel的基本功能,还可以通过设计和使用各种窗体,进行数据查询并生成相应报表。
  3. excel的数据结构比数据库简单:excel中的表格的数据按照表格存储,没有数据库中的模式的概念,因而很难在excel中进行连接两个表格的操作。

数据库的具体应用

那么离每个人最近的数据库系统是什么呢?这里我举一个发生在每个人身上的例子——教务系统。教务系统的底层基于数据库相关技术实现。

教务系统中存储的信息包括:学生姓名,性别,学号等学生信息;课程名称,编号,授课老师等课程信息;以及学生选课信息。我们来看看数据库中的具体实现。

首先,从存储的数据出发,这里一共存储了3种类型的数据分别是:学生信息,课程信息以及选课信息。直观地,我们用三张表格就可以存储这些信息。

表1: 学生信息表

学生姓名学生学号学生性别学生出生日期
李小红0011998-01-01
王小明0021998-01-02

表2:课程信息表

课程名称课程编号授课老师课程人数
计算机组成原理001张三50
操作系统002李四50

表3: 选课信息表

学生学号选课编号
001001
001002
002001
003001

应该注意:上述数据的存储格式是基于关系数据模型产生的,如果换一个工具,我们可能会采用不同的格式。

这里的(李小红,001,女,1998-01-01)是一个关系,而这三张表之间的联系,则成为一种模式。例如在选课信息表中学生学号必须是在表1中出现过的,选课编号必须在课程信息表中出现过的,这种对于这些表格进行的强制性约束,即是模式

你可能再次产生疑问,既然三张表格就可以实现教务系统,为何我们不使用Excel进行数据存储,而非要使用数据库呢?这个问题的确是一个好问题。下面我将进行解答。

数据的存储方法依赖于数据的使用要求,例如在这个例子里,教务系统存数据并不是只是要存数据,还需要在日常生活中实现方便的取数据的功能。那考虑到许多老师需要一个上课的学生名单,那么在上述例子中张三想要查看选了自己所授课程计算机组成原理的人数。他会怎么做呢?

如果是在数据库中,他只需要输入指令:

select * from 选课信息表 where 选课编号=001;

上述指令只能返回选课学生的学号信息,如果张三老师想要更丰富的学生信息,他可以使用下条指令:

select * from 选课信息表,学生信息表 where 选课信息表.学生学号=学生信息表.学生学号 and 选课信息表.选课编号=001;

如果使用Excel进行数据维护,那么张三老师为了得到完整的信息,则需要在选课信息表中进行筛选操作,筛出选了001课程的学生编号,然后再进入学生信息表中,将对应学号的学生筛选出来。

更进一步,数据库中还有一些Excel没有的高级功能:可以对数据库中的数据进行约束。例如在这个例子中,每堂课的选课人数不得超过50人,使用数据库可以通过断言实现这种约束。

create assertion ass_on_选课 
	check (50>=(select count(*) from 选课信息表 where 选课编号=001;)

参考

[1] 关系型数据库的发展历史
[2] 在没有数据库之前,人们是怎样管理数据的呢?
[3] 数据库系统概论
[4] excel与数据库有什么不同,人们如何选用他们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值