一、数据库系统
数据库系统是由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。
以上这句话是对数据库系统非常严谨的定义。我这篇博客是想从自己的角度来重新认识一下数据库系统。在逐个剖析以上这些名词的含义之前先考虑一个问题:我们为什么要引入数据库系统?换句话说,引入数据库系统可以帮助我们解决什么问题?
二、引入数据库系统的必要性
数据,也叫做信息资源,已经成为各个组织最宝贵的无形财产,因此各个组织机构也都十分需要一个可以存储和处理数据的技术。尤其是进入互联网时代以来,数据量大幅度的增长,用户每天用各种终端访问各种服务器里的数据,那么数据的存储和处理技术就显得更为重要了。数据库系统由此产生,数据库系统就是存储、管理、处理和维护数据的系统。介绍完这个后就接着聊一下数据库系统的组成部分。
三、数据库系统的组成部分
数据库系统由数据库、数据库管理系统、应用程序、数据库管理员四部分组成。
1.数据库
顾名思义,数据库就是存放数据的仓库,只不过这个仓库是在计算机的存储设备上,类似于我们会将现实中的仓库中的货物按一定规律存放,数据也是按一定的格式存放在数据库中的。
2.数据库管理系统
我们有了数据库这个仓库来存放我们的数据了,那么,是不是就需要一个有效组织管理数据的工具?完成这个任务的就是数据库管理系统。
3.应用程序
用与数据库接口的高级语言开发出的应用程序。
4.数据库管理员
人员也算是数据库系统的一部分。数据库管理员负责管理和控制数据库系统。
到此,数据库系统是个什么东西我们就理解了。接下来,我们聊一聊数据库系统在计算机中处于什么位置。我们从底层往上层说,首先最底层的一定是硬件,接下来硬件上面有计算机的操作系统,然后是数据库管理系统,接下来是应用开发工具,最后是应用程序。也就是:硬件->计算机操作系统->数据库管理系统->应用开发工具->应用程序。
看到这里,我就会想起另一种数据集合的存储管理系统:文件系统。相信大家会有一个疑问产生:文件系统和数据库系统之间有什么区别?这里我先暂不详述,留待以后讨论。现在先讨论一下数据库系统的主要特点。
四、数据库系统的主要特点
1.数据结构化
如图,这里我创建了两个表,一个表用于存储学生的基本信息,另一个表用于存储学生的详细情况。有些学生的经历比较丰富,详细情况的叙述也比较长,有些同学没有详细情况的叙述。表创建好之后,直接可以用insert into插入数据。然后使用select就可以查询出我们需要的信息。看起来比较简洁明了。
如若该系统比较复杂,也是可以创建这种表与表之间的关系。那么,什么是数据结构化呢?
数据结构化是指数据库中的数据不再仅仅是面向应用的,而是面向整个组织的。不仅数据的内部具有结构,数据之间也具有联系。数据库整体是结构化的。
2.数据的高共享性、低冗余性且易于扩充
数据库数据是面向组织的,所以它可以被多个用户、多个应用使用。
数据的共享可以减少冗余,节约存储空间。
数据的共享不仅仅可以让多个应用同时使用数据库,而且可以增加新的应用。我们可以使用数据库整体的各种子集用于不同的应用系统,当需求改变,只需重新选取不同子集,或者加上一部分数据便可满足新的需求。
3.数据独立性高
数据独立性又分为物理独立性与逻辑独立性。这里不详述。好处在于减少了应用程序的维护与修改。
4.数据由数据库管理系统统一管理和控制
数据库的共享会带来数据的安全隐患,所以数据库管理系统必须提供一些管理控制功能。
五、文件系统与数据库系统的本质区别
分析完数据库系统的特点,想必文件系统与数据库系统之间的区别就出来了。实际上,它们的本质区别在于数据库系统的数据有结构化的特点,而文件系统数据内部是有结构化的,但数据整体不具备这一特点。我们可以考虑一下上面的例子,如果用文件系统来做这样的学生信息管理系统该如何做呢?显然也是可以的,不过程序员的许多精力要放在不同文件中记录之间的联系,使用fopen、fread、fwrite、fseek、fclose等调用来操作,会特别麻烦。而用拥有数据结构化特点的数据库系统只需要一个语句就可以实现这些功能。