1.1数据库理论基础
数据库能够将数据按照特定的规律组织起来。那么,数据是如何存储的?数据库要遵守什么规则?数据库在什么地方使用?这些都是首先要了解的问题。本节将为读者介绍这些问题。
1.1.1 数据存储方式
如今数据库已经无处不在了。一个网站需要有数据库来存储数据;一个学校需要用数据库来存储学生和教师的信息;一个公司需要用数据库来存储员工的信息和公司的资料。要学习数据库,必须先要了解数据库是如何存储数据的。本小节将为读者介绍数据的存储方式。数据存储分为3个阶段即人工管理阶段、文件系统阶段和数据库系统阶段。
1.人工管理阶段
在计算机发展的早期,它的主要作用是进行科学计算。而且,计算机存储设备还没有发展起来?数据主要是存储在纸带、磁带等介质上,或者直接通过手工记录。
这个阶段,数据都是依靠人工进行整理和保存的。使用这种方式来管理数据很不方便。例如,不便于查询数据、难以共享数据和不便于保存。现在,国内的一些部门还处在人工管理数据的阶段,还需要管理大量的纸质文件。
2.文件系统阶段
随着计算机操作系统的出现和硬件的发展,可以将数据存储在计算机的磁盘上。这些数据都以文件的形式出现,然后通过文件系统来管理这些文件。文件系统通过文件的存储路径和文件名称来访问文件中的数据。
文件系统可以很好的保存文件,使用起来也很方便。相对于人工管理阶段而言,文件系统使得数据管理变得简单。至少不用为了一个文件而翻箱倒柜的查找了。但是,这些文件中的数据没有进行结构化处理,查询起来还不是很方便。
3.数据库系统阶段
随着数据量的增加和处理速度的要求,文件系统渐渐地不能满足数据管理的要求了。数据库系统阶段开始使用专门的数据库来管理数据。用户可以在数据库系统中建立数据库,然后在数据库中建立表,最后将数据存储在这些表中。
数据库是指长期存储在计算机内、有组织的和可共享的数据集合。简而言之,数据库就是一个存储数据的地方。表是数据库存储数据的基本单位。一个表由若干字段组成。例如,某个学校有个学生管理系统,其中的数据可以存储在名为student的数据库中。在student数据库中,可以为每个班级的学生建立一张表。表中包含学生的学号、姓名、性别和籍贯等信息。学号、姓名等就是这个表中的字段。可以根据这些字段来找到学生的相应信息。
数据库和表都存储在磁盘上,但用户不必关心它们在磁盘上的具体位置。用户可以直接通过数据库管理系统来查询表中的数据。现在使用最多的数据库是关系数据库。Oracle、SQL Server和MySQL等数据库都是关系数据库。关系数据库中的表都是二维表。
1.1.2 数据库泛型
数据库泛型就是数据库应该遵循的规则。数据库泛型也称为范式。目前,关系数据库最常用的4种范式分别是第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCN范式(BCNF)。本小节将为读者简单地介绍一下范式的内容。
在设计数据库时,数据库需要满足的最低要求的范式是第一范式。第一范式的要求即表中不能有重复字段,并且每个字段不能再拆分。如果一个数据库连第一范式都不能满足的话,那就不能称之为关系数据库了。只有满足了第一范式的要求,才可以在这个关系数据库中创建表。
在满足第一范式的基础上,可以将数据库中进行进一步的细化。细化后可以使数据库满足第二范式的要求。依次进行细化,可以得到第三范式、BCN范式。
说明:例如,一个学生表中有学号、院系号和院系名这3个字段。因为学号可以决定是院系名,院系号也可以决定院系名。因此,这个表不是第二范式。现在对该表进行细化,细化后生成两个表。第一个表有学号、院系号这两个字段。第二个表有院系号、院系名这两个字段。这样就满足了第二范式的要求。
通常情况下,如果一个数据库能够满足第三范式的要求,那么这个数据库就是一个很好的数据库了。当一个数据库达到第三范式的要求,数据库中基本上没有冗余的内容了。但是,有时为了满足查询速度等要求,可以有意识的让某些表有些冗余。这是为了提高整个数据库的性能。
因此,在设计数据库时,不一定要拘泥于达到第三范式或者BCN范式。只要数据库的设计能提高整个系统的性能,这就是一个合理的数据库。
1.1.3 数据库在开发中作用
现在大部分的管理系统和软件都需要使用数据库来存储数据。在开发过程中,数据库已经成为必不可少的一部分。本小节将为读者简单介绍一下数据库在开发中的作用。
在软件开发过程中,经常需要使用数据库来存储数据。例如,一个学校的学生管理系统就需要数据库来存储学生的学籍信息、考试信息、教师的信息和课程信息等。再比如,银行的管理系统也需要数据库来存储信息。用户的银行账户、存款量、存款和取款的记录等信息都是存储在数据库中的。当用户向自己的账户里存款时,管理系统会在数据库中更新该用户的存款量。
笔者曾经开发过一个驾校的学员管理系统。在这个管理系统中,笔者就使用了MySQL数据库来存储管理员的信息、驾校学员的学籍信息和学员的考试信息等。然后通过网页的应用程序查询数据库中的数据、更新数据和删除数据。例如,管理员要登录系统就必须输入用户名和密码。然后网页的应用程序将管理员输入的用户名和密码与数据库表中的数据进行比较。如果表中存在这个用户名和密码,就允许管理员登录。
笔者还为某供电局开发过一个定值单管理的软件。在这个软件中,需要存储管理员的信息、用户的信息和定值单的信息等。笔者也是选择MySQL数据库来存储这些数据的。然后通过页面的应用程序来处理数据库中的数据。
说明:数据库的使用范围非常广泛,各行各业中都已经有了数据库的应用。例如,电力行业需要数据库来存储发电量、供电量和电费等信息;石油行业需要数据库来存储有关石油的数据;金融行业需要使用数据库来存储各种金融数据。
总而言之,数据库已经成为了软件开发不可缺少的一部分。如果没有数据库,这个软件将无法获得数据,也无法将执行后的数据保存。