什么是数据库?
在大二大二学期时,选公选课的时候,我在列表中看到了《Access数据库程序设计》这个名字,这也是我第一次在课程名称中看到“数据库”三个字。
此前,虽然在各个地方或多或少地都看到过“数据库”一词,但却从未认真去了解,这到底是怎样的一个东西。
(如果没记错的话)在高中的时候,一提到“数据库”,脑海中就会浮现出一个保险柜。
而到了大学后,随着与Excel的越来越多的接触,便渐渐地开始认为,数据库就是Excel表格。
因此,在大二的时候选择这门公选,本意也只是想学习如何更好地管理数据、存放数据(当时以为Access就是专业版的Excel)。结果……一进去后才发现,自己成功地又触发了一个隐藏剧情。
在《Access数据库程序设计》这门课中,第一次接触到了E-R图、关系数据库、SQL语言等概念,同时也认为关系数据库的特点在于,可以分出很多相互之间有关联的表格(而不是像Excel那样通常只用一个表格)来存储数据,并使用Access对其进行管理。
而在大三第二学期的《软件工程》课程中,涉及到了mysql的使用。直到那时,才第一次知道,SQL语言是关系数据库的一种通用语言。
一直到了大三结束后的暑假,才开始意识到,数据库绝不只是Access、mysql软件操作这么简单的事情。在这些简单的事情背后,必然是有什么理论支撑着它的。因此,《数据库系统》支线剧情,便在大四第一学期启动了。
第一节课,老师便放出了“完整”的数据库系统图(这也在之前的《数据库系统-学习记录1》一文中贴了出来):
当时看到这张图的时候,整个人都懵了:不是SQL语言吗?不是怎么划分关系吗?怎么这里全都是“硬件”?What…The…?在懵逼了好一阵后,才开始意识到:对啊,如果数据库没有硬件,怎么可能存放得了数据……
随后便开始逐步接触到了关系代数、各种范式、关系设计理论、E-R模型、UML模型等关系设计的相关理论。在这些理论接触的差不多的时候,便是对SQL的学习了:SQL的基本语法、多表和嵌套查询、约束和触发器的定义、SQL语句的递归、将SQL嵌入到其他语言中使用……《数据库系统基础教程》的后半部分几乎就都是围绕着SQL语句进行了。
眼看着飙车越来越快,不到半学期,《数据库系统基础教程》就已经被讲完了(除半结构化数据外)。在前半学期的最后一节课上,老师讲完了这本书,随即说道:“接下来,我们将要使用下一本书,那本书将会更加地难以理解”……听完这句话后,内心简直是崩溃的。毕竟前半本书的节奏已经够呛了,完全没法想象剩下半个学期还要学更厚更难理解的另一本书。
第二本书名为《数据库系统实现》,是《数据库系统基础教程》的续集。第一本书主要是在讲如何使用数据库,而第二本书则主要是在讲如何实现能让用户使用第一本书中的方式来操作的数据库。
《数据库系统实现》分别从很多个方面来阐述了实现方法:磁盘的设计、存储结构的组织、SQL语句编译及优化、从故障中恢复数据、并发控制……从物理实现到算法设计,这些过程的大致描述都有所涉及。
关于具体的内容,我是打算到时候给这个专栏写目录的时候再详细介绍。这里主要是结课感言,所以还是想多提一点课程学习的感受。
开学的时候,看着不薄不厚的《数据库系统基础教程》,觉得节奏和进度应该都会特别地稳,所以那段时间整个人都非常地悠闲,上课也非常地愉快。
然而在上完数据库的基本设计理论后,进度就突然开始“失控”了起来:每周3个课时都会像飙车一样地赶进度,像SQL语句的全部基本用法、触发器与嵌套这些内容,基本上全都是3个课时就能解决(对应书上的几十上百页)。在这样的进度下,压力突然就提升了百倍。不过还好后面的那些内容还是比较容易理解的,因此就这样又苟了几周。
当半个学期结束后,老师提醒要开始第二本书的学习的时候,最后一道防线崩溃了。第二本书讲的进度比第一本更快,一周就能讲完好几十页的内容。那时,每周一上午上完课后,第一件事就是跑去图书馆。然后从那开始,一直到晚上图书馆闭馆,花上剩下的十二个小时去看书,尝试跟上进度。但无奈英文书实在是太长,阅读起来不可能跟的上,而中文书则是像绕口令一样。所以即便是花上十几个小时,也难以跟上进度(最多是勉强看完一大半,剩下一小半只能一笔带过)。
这门课再加上其他的三门硬核课程,使得大四上的后半学期时间过得异常地快。不知不觉中,这门课也就结课了。在紧张的期末只许带英文书的开卷考试结束后,这门课也就结束了。
此外,此课程还有一个附带的实验,感觉这反倒是最好玩的一个地方了。
从最开始的“认真品味”,到中期的“根本听不过来”,再到后期的“赶进度”,最开始的那种愉快而又悠闲的感觉也渐渐地消散得无影无踪。关注的重点,也不知不觉地从“这个理论是怎么一回事”转移到了“作业怎么写不动,又查不到参考答案”和“怎么写对了又没分”上。看着自己渐渐违背了选课的初衷,而又无法改变的时候,内心也是非常地无奈的。尽管最后还是学到了不少的东西,但这个过程实在是……不堪回首……如果这是门一年的课程,那还是挺开心的。
在这样的“光速进度”的要求下,即便是带着兴趣来学习的“求知者”,最终也不得不沦为追求功利的“求60分不挂者”。
第一次感受到,兴趣与功利,看似相隔甚远的两个东西,却又如此地接近。