数据库原理与应用——引言(一)
一、什么是数据库(Database)?
- 大规模的集成的数据集合。(面向一个企业或应用单位的相关数据的集合,支持这个企业的各种应用开发的相关数据集合)
- 对现实世界中一个企业或应用单位的建模。现在都是用计算机做信息化管理,用计算机管理一个企事业单位的日常行政事务,在现实世界中,这样的一个企业应该怎么用计算机描述呢?在计算机里对它建模,数据库就是建模的结果,以数据形式存下来。
在数据库中有两类重要的数据:
- 实体(Entities):有形的——学校:学生,老师,资产(桌椅板凳);无形的——课程,科研项目
- 联系(Relationships):客观世界中实体之间的联系,比如学校中,老师——学生:教学关系,某个学生是某个老师的学生,某个老师教很多学生;学生——课程:选课关系,某个学生选了几门课程,某个课程被某些学生选。现实世界中实体与实体之间存在大量的联系,这些联系也要以数据的形式存储在数据库里。
我们把现实世界中这些企业或应用单位的实体,以及实体之间的联系用一个合适的方式描述清楚,以数据的形式存储起来,就形成了一个数据集,这就是数据库。
数据模型:就是对现实世界建模的方法,用什么方法描述现实世界中的实体以及实体之间的联系,采用不同的方法就是用的不同的数据模型。
二、什么是数据库管理系统(DBMS)?
- A Databse Management System
- 一个用来存储和管理数据库的系统软件。
三、文件(Files) VS. 数据库(Databases)
数据库是用来作数据管理的,学操作系统和C++语言的时候,我们用过文件,文件也可以存很多数据,给企业作数据管理,为什么不能用文件来存储,而要用数据库呢?两者有什么关系呢?
两者都可以存数据,但是文件是操作系统提供的最简单最基本的存储数据的机制,在操作系统中文件是没有结构的 ,在文件中存的数据都是平滑的字符流,没有结构。文件的功能:创建一个文件(create),打开一个文件(open),在打开的文件中读几个字节(read),往一个文件中写几个字节(write),调整文件的读写指针(lseek),将文件的读写指针往前跳几个字节,往后跳几个字节,跳到指定位置读写,仅此而已。如果用文件进行数据管理,在实际应用中有复杂数据管理需求的时候,文件的管理功能是很初级很弱的,如:
- 内外存交换、数据缓冲、面向物理块的存取、寻址;
- 编写特定的查询代码,只要文件结构有一点差别,原来的程序就不能用了;
- 在多并发用户同时访问数据时,无法做到保证数据的一致性;
- 故障恢复:一旦系统运行过程中,硬件故障或停电,导致存储的数据被破坏,传统的文件系统没有这个能力,而DBMS会自动恢复。
- 安全和访问控制:有些数据是敏感的,未经授权的用户不能访问,文件管理系统在这方面的力度很弱,数据库管理系统可以做更加精细的权限访问。
以上这些DBMS都可以帮我们做,做这些底层的基础工作,DBMS提供了很强很方便的数据管理功能,很多事情都不用自己去管。用文件的话,它只提供一些简单功能,很多事情都需要应用层自己去做。
数据库系统建立在操作系统的文件系统之上,早期没有数据库的时候只能在文件上进行数据管理。现在有数据库了,我们就可以用数据库实现更复杂的数据管理。
四、为什么要使用数据库管理系统(DBMS)?
- 支持数据的独立性和对数据的有效访问
- 减少应用开发的时间:大量的基础的共性的事情,DBMS帮我们做了,在DBMS上开发应用比在文件上花的代价要小的多,快捷方便的多。
- 支持对数据完整性和安全性的控制
- 支持对数据的统一管理
- 支持并发访问、故障恢复
五、为什么要学习研究数据库(Databases)
- 现在是信息社会,计算机技术已经由单纯的科学计算发展到对信息的管理,如果用计算机做信息管理,就会牵涉大量数据管理问题,日常企事业单位的信息管理,如高校课程管理、学籍管理等基本管理;
低端:互联网上存在各种各样、五花八门、杂乱无章的数据,如果任其泛滥就是垃圾,会对用户带来困扰,这样的数据需要我们进行有效管理。
高端:科学应用——天文、核能…,检测信息产生海量数据,科研人员做数据分析,寻找规律和奥秘 - 随着应用领域的拓展,数据集的种类和规模急剧膨胀。日常规范数据、多媒体数据、数字图书馆数据、音像数据、人类基因组数据…,数据量非常大(由七八十年代的几十M到现在的几百G,T),对数据管理需求是爆炸性增长。
- DBMS的实现包含了计算机技术发展的绝大部分成果:从我们大一进来到现在学了很多课程,这些课程怎么综合起来融会贯通的解决一个复杂问题?DBMS是一个很好的范例,它的实现要用到操作系统、编译、多媒体(自然语言,语音识别转成标准SQL)、人工智能、逻辑,到目前为止,我们学过的很多计算机课程,在DBMS的实现中都用到了,学习过程中我们要把它当成一个范例。
六、数据(Data)、数据模型(Data Model)、数据模式(Data Schema)
- 数据是用来描述现实世界事物的一种符号,如桌子(用材质、颜色、长宽高来描述),数据是信息存在的形式。古代:爱尔兰人在石头上刻符号描述事物,通过不同符号表示不同含义;中国人在牛角、竹简上刻符号。
- 数据模型是用来描述数据的一组概念和定义。可理解为数据结构,用来描述现实世界事物的方法。层次模型、网状模型、关系模型…,用不同方法描述现实世界事物。
- 数据模式是用一种给定的数据模型对一个特定企业进行描述所产生的一个结果。如果用程序设计语言的概念来说,可以把数据模型看做C语言或者C++,数据模式就是用这种语言编写出来的程序。
关系数据模型,是现在使用的主流数据模型,1970年提出,在关系数据模型中基本的数据结构就是关系(relation),实际上就是表,把现实世界中的实体以及实体之间的联系全部用表来表示,二维表,行和列,行称为元组,列称为属性,关系型数据库中有很多张表,每个表的结构不一样,schema就描述了这张表属性的情况,如学生基本信息表:由姓名、学号、年龄、家庭地址等属性组成,这些属性的类型是长度为x的字符串、整型。