数据管理工作至今的发展经过了三个阶段:
20世纪50年代中期以前是人工管理阶段,那是对于计算机来说,存储信息的设备没有磁盘,只有磁带、卡片等存储设备;计算机中也没有操作系统和管理软件;处理数据的方式只有批处理方式。在人工管理阶段,主要负责管理的都是人。这一阶段主要由以下4个特点
20世纪50年代后期到60年代中期,计算机开始应用与数据管理方面。此时开始由磁盘存储数据。文件系统由三部分组成:与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。这一时期的数据就是以文件的形式储存,由操作系统统一处理。文件系统阶段也是数据库发展的初级阶段,使用文件系统存储数据有以下四个特点:
从20世纪60年代后期开始进入了数据库系统阶段。此时在文件系统的基础上就开始有了数据库技术。最早的数据库管理系统是在1961年由通用电气公司开发的。在数据库管理系统阶段管理数据具有以下4个特点:
数据库技术出现至今一共有3种比较通用的模型,目前比较通用的是关系型数据模型。
美国皇家标准学会(ANSI)的数据管理系统研究小组于1978年提出的标准化的建议。
参考资料:http://baike.baidu.com/view/1186644.htm
外模式又称子模式或用户模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言(Data Manipulation Language,DML)对这些数据记录进行。外模式反映了数据库的用户观。
模式又称概念模式或逻辑模式,对应于概念级。它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。它是由数据库管理系统提供的数据模式描述语言(Data Description Language,DDL)来描述、定义的,体现、反映了数据库系统的整体观。
内模式又称存储模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义,它是数据库的存储观。
在一个数据库系统中,只有唯一的数据库, 因而作为定义 、描述数据库存储结构的内模式和定义、描述数据库逻辑结构的模式,也是唯一的,但建立在数据库系统之上的应用则是非常广泛、多样的,所以对应的外模式不是唯一的,也不可能是唯一的。
数据库中存放数据的数据表,此处不再赘述。
视图是数据库中的虚拟表,存放的是从数据库表中查询出来的记录,用于方便信息查询,缩短查询数据时间。
存储过程是由SQL语句和控制流语句组成的语句块。存储过程存储在数据库内,可由程序通过存储过程的名称调用执行。
触发器是特殊的存储过程。也是由SQL语句和程序控制语句组成的。但是触发器在数据库中是不需调用而自动执行的。例如,在触发器中可以定义在修改某张表后执行触发器中的内容。
参考资料:http://baike.baidu.com/subview/152173/11233465.htm
主键约束(Primary Key constraint):要求主键列数据唯一,并且不允许为空。
唯一约束(Unique constraint):要求该列唯一,允许为空,但只能出现一个空值。
检查约束(Check constraint):某列取值范围限制,格式限制等,如有关年龄、邮箱(必须有@)的约束。
默认约束(Default constraint):某列的默认值,如在数据库里有一项数据很多重复,可以设为默认值。
外键约束(Foreign Key constraint):用于在两个表之间建立关系,需要指定引用主表的哪一列。
此外还应该有一项:
非空(not null)约束:约束该列不能为空
约束是为了保证数据库的完整性。ORCALE涉及的完整性主要有三种:
范式是设计关系型数据库的准则。
数据库范式是程序员在设计数据库时必须要理解的原则,如果不采用的话后期会产生大量的修改及维护成本。
第二范式(2NF):在数据库中不存在非关键字段对任一候选字段的部分函数依赖。
容易理解的说法是:第二范式的规则是要求数据表里的所有数据都要和该数据表的主键有完全依赖关系;如果有哪些数据只和主键的一部份(组合主键中的某一个主键)有关的话,它就不符合第二范式。同时可以得出:如果一个数据表的主键只有单一一个字段的话,它就一定符合第二范式(前提是该数据表符合第一范式)。
如果不按照第二范式的要求设计表就会出现以下问题:
(假设一个购物信息表,字段包括:客户编号、产品名、产品数量、产品类型、产品价格、客户类型,使用客户编号和产品名称作为组合主键)
参考资料:http://baike.baidu.com/view/176738.htm
例:如S1(SNO,SNAME,DNO,DNAME,LOCATION) 各属性分别代表学号,姓名,所在系,系名称,系地址。
关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。
原因:关系中存在传递依赖造成的。即SNO -> DNO。 而DNO -> SNO却不存在,DNO -> LOCATION, 因此关键字 SNO 对 LOCATION 函数决定是通过传递依赖 DNO -> LOCATION 实现的。也就是说,SNO不直接决定非主属性LOCATION。