以前听到数据库, 就头大, 直到用过数据库后, 才知道数据库是个什么玩意儿。下面让我们一起走入数据库的世界。
我的理解:
数据库: 本质就是一个文件, 用来存放数据, 只不过文件中的数据有一定的组织, 不松散。
数据库管理系统: 本质是一个软件, 作用是对数据库进行操作管理, 包括管理功能的implemention部分和interface部分, 其中, implemetion部分是数据库管理系统软件厂商实现的,interface主要是提供给客户用, 这里是指应用程序, 当然, 你也可以说是程序猿。
下面来看看维基百科怎么说:
Formally, "database" refers to the data themselves and supporting data structures(数据库本质就是文件数据). Databases are created to operate large quantities of information by inputting, storing, retrieving and managing that information(有组织性, 便于操作). Databases are set up so that one set of software programs provides all users with access to all the data(为应用程序服务).
A "database management system" (DBMS) is a suite of computer software providing the interface between users and a database or databases(数据库管理系统本质是软件). Because they are so closely related, the term "database" when used casually often refers to both a DBMS and the data it manipulates.
为什么要用数据库管理系统呢? 让我们看看数据库管理系统的前世今生吧:
这种方式够直接的, 越是直接具体, 就越低级, 通用性就越差。 本科毕业的同学, 一般就处于这个阶段, 直接对数据进行操作。 我们期待着间接抽象, 提升自己的品味, 于是有了:
我们可以看到, 进步很多了, 可以使用文件操作函数来操作文件了, 但是, 程序猿仍然很费心思, 需要关心怎么存放数据, 怎么去索取, 怎么在文件中检索, 搞得程序猿本人一头包包, 麻烦死了。以前, 自己平时做实验的时候, 经常用一个进程生成数据, 放到一个文件里面,另外一个进程去读取这些数据, 然后进行处理。
给一个典型的例子吧, 做多媒体方面研究工作, 经常需要用C/C++来编解码, 生成有用的中间数据, 并细心地保存在文件中。 然后利用matlab软件对中间的实验数据进行分析和可视化等操作。 在这个过程中, 文件起到了很重要的作用。 亲们, 有没有注意到:需要自己去考虑数据如何存放, 如何读取? 麻烦啊? 当然, 在学校里面, 这种现象还是很正常很普遍很实用的。
然而, 你终将离开学校, 走向公司, 那就是另外一回事了, 我们期待着让程序员更轻松点, 实现不同层次不同模块的分工, 于是有了: