主要讲了数据的发展历史和分类,以及未来的趋势
- DBMS数据库管理系统,一种管理和存储数据库的软件;
- 数据库,按照数据结构来组织、存储和管理数据的仓库。大规模的集成的数据集合。可以表示成现实的企业或事物通过合适的数据模型在计算机上的表示成各种数据的集合,这个集合就是数据库。
- 现实企业的一个模型(model real world enterprise) 又包括
- 【实体】人/财/物等有形,无形(课程,项目,基金等)的东西;
- 【关系】如学生与课程的关系,学生与学院的关系,教师与项目的关系等。
- 企业的实体和其之间的关系用一个合适的方式描述清楚存储在计算机里面数据库里面,这个就是数据库,数据模型就是对现实世界的实体以及实体之间的联系的描述。
- 文件是操作系统提供的一种最简单最基本的存储机制。文件没有结构,就是一个字符流,只有简单的操作如creat、open、read、write、delete、Lseck等,没有提供高级管理功能。查询麻烦,如果文件结构稍微改变一下,查询算法可能需要更新。DBMS已经做好了。
- 多用户访问导致的数据产生的不一致,文件没有这个能力来解决,只能通过应用层想办法,DBMS已经做好
- 故障恢复,文件系统没这个能力
- 安全与访问控制,文件可以提供很弱的权限管理,linux下也就提供,游客,用户,系统管理员三个级别的权限设置;DBMS拥有丰富的权限管理与控制
- 早期确实使用文件系统,但是随着数据的复杂和控制难度的增加,文件系统已经无法满足需求,从而引入数据库,数据库是建立在操作系统文件系统之上的,只是把很多底层的细节屏蔽掉了。
- 数据独立与有效的访问
- 减少应用开发时间
- 数据完整性与安全性控制
- 统一管理(格式化的数据)
- 并发控制和故障恢复
- 计算机科学从单纯的计算发展到对信息的管理,信息管理又分为低端和高端的
- 低端(混乱的):微博信息的管理,日常博客信息的管理
- 高端:科学应用,天文,核能等
- 数据的种类和规模急剧膨胀如人类基因组计划、视频流、EOS-Project(这个我也不知道是干嘛用的)总之就是数据已经不是当初那个数据了。
- DBMS实现了计算机科学的大部分成果,或者DBMS用到了计算机科学(CS【computer science】)大部分的研究成果
- OS 操作系统,需要用到操作系统的编译内容,查询语句需要编译、语言 SQL处理、AI、多媒体如语音识别和自然语言查询接口、逻辑,基于关系的演算一阶逻辑(果然有高阶逻辑。。。)、理论。
- DBMS是一个集大成这,需要利用自己所学去开法一个大的软件--DBMS。
- 数据data 用来描述现实世界的符号,数据是信息存在的模式。例如描述桌子的长宽高等等的数据。描述现实世界中的各种事物的符号,古代爱尔兰人,在大石头上刻字,中国的甲骨文或者竹简等等,用符号在描述现实世界。这个符号就是数据。
- 数据模型data models 用来描述数据的一组概念与模型。可以理解为一种数据结构,不同的方法来描述现实世界。(层次、网状、关系型等等)
- 数据模式data schema 用一个具体的数据模型来描述现实世界的结果,如对一个企业描述的结果
- 可以理解model为一种语言,schema为用这种语言写的程序或者软件。
- 基本数据结构只有一个Table(关系、表)
- 把二维表中的行称为元祖,列称为属性
- 每个表又是由具体的数据模式(schema)来描述。可以理解为schema就是数据对象的一个集合。一般一个用户对用一个schema
- 物理模式:数据在磁盘上怎么存用什么结构,每个表可能有不同的存储结构,比如链表,hash之类的存储方法。
- 概念模式(基表):关系数据模型中,有多少表,表的结构,每张表的属性及长度,逻辑的描述。真正存储在磁盘上的。
- 视图(view):外模式,最终用户看到的样式,用户可以看到什么,只是概念的一部分。数据库全貌由DBMS控制。
- 物理与概念是一对一模式,概念视图是一对多。
Conceptual schema:(概念模式): 学生表Students(sid:string,name:string,login:string,age:integer,gpa:real) 课程表Courses(cid:string,cname;string,credites:integer) 登记表:Enrolled(sid;string,cid;string,grade:integer)学生与课程的关系
Physical schema(物理模式): 上面的三种基表在物理磁盘上怎么存放? 1、 比如用没排序的堆文件存储 2、 同时在学生这张表的学生这个属性上建立一个索引
View(视图,External Schema):
针对不同用户需求分配不同的view,course_info(cid:string,enrollment:integer)
通过概念模式的三张表映射计算出的一个全新的表。也就是视图。
- 应用程序不需要去管数据的具体结构和存储模式
- 逻辑数据独立,在数据基础上开发的应用可以不受数据库逻辑变化的影响,逻辑层可以修改只要保证用户最终的视图不变,也就是逻辑层修改之后可以计算(映射)出不变的表就行。最终给用户接口的是视图。
- 物理数据独立,这个更容易理解,物理结构的改变不影响应用数据,类似于数据库在一个机房,之后改成好几个机房,只要最终的视图不变,就不会影响用户接口。
- 对于DBMS来说非常的有用,也是其重要的优点之一。
- 1960年之前 无管理状态,主要用于科学计算,无需永久的保存,多为美国高校,基本只需要运算结果,没必要保存大量的数据。
- 1960年之后 文件系统出现,简单的数据管理,计算机的非数值应用
- 1964年 第一个DBMS出现General Electric Company(通用电气GE)开发的IDS 网状数据模型
- 1969年 IBM第一个商用DBMS 层次数据模型
- 1970年 埃德加·科德(E.F.Codd,IBM)于1970年首先提出,关系型数据库,一个封闭的系统可以新建一个代数系统,从而使数据库的研究可以用到数学的方法从而上升到理论层次,具有划时代的意义。因此也成就了数据库巨头甲骨文(Oracle)真是造化弄人啊。
- 现在 面向对象数据库,演绎数据库(这个很早就出现,几乎和关系型数据库同时出现,没有得到很好的发展,现在又兴起了,可能后续会讲到),XML等等,希望弥补关系型数据库的缺点。