Oracle学习总结(二)——数据库基础

一、数据管理

数据管理的历史

数据管理工作至今的发展经过了三个阶段:

1)人工管理阶段

20世纪50年代中期以前是人工管理阶段,那是对于计算机来说,存储信息的设备没有磁盘,只有磁带、卡片等存储设备;计算机中也没有操作系统和管理软件;处理数据的方式只有批处理方式。在人工管理阶段,主要负责管理的都是人。这一阶段主要由以下4个特点

  • 不能长期保存数据。
  • 对管理数据的人工作量和工作质量要求都很高
  • 数据不能共享,数据都是面向特定程序的
  • 数据不具有独立性。修改程序就会影响数据的结构带来工作量

2)文件系统阶段

20世纪50年代后期到60年代中期,计算机开始应用与数据管理方面。此时开始由磁盘存储数据。文件系统由三部分组成:与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。这一时期的数据就是以文件的形式储存,由操作系统统一处理。文件系统阶段也是数据库发展的初级阶段,使用文件系统存储数据有以下四个特点:

  • 可以长期保存数据
  • 有简单的数据管理功能
  • 数据共享能力依然较差
  • 数据依然没有独立性
    从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的系统。

3)数据库系统阶段

从20世纪60年代后期开始进入了数据库系统阶段。此时在文件系统的基础上就开始有了数据库技术。最早的数据库管理系统是在1961年由通用电气公司开发的。在数据库管理系统阶段管理数据具有以下4个特点:

  • 实现了数据共享
  • 数据具有了独立性
  • 数据实现了集中控制
  • 故障恢复

二、数据库的模型

数据库技术出现至今一共有3种比较通用的模型,目前比较通用的是关系型数据模型。

  1. 结构层次模型,局限性较大
    Oracle学习总结(二)——数据库基础_第1张图片
  2. 网状结构模型,逐渐能适应多种关系。
    Oracle学习总结(二)——数据库基础_第2张图片
  3. 关系结构模型
    Oracle学习总结(二)——数据库基础_第3张图片

三、数据库的三级模式

美国皇家标准学会(ANSI)的数据管理系统研究小组于1978年提出的标准化的建议。

参考资料:http://baike.baidu.com/view/1186644.htm

1)外模式

外模式又称子模式或用户模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言(Data Manipulation Language,DML)对这些数据记录进行。外模式反映了数据库的用户观。

2)概念模式

模式又称概念模式或逻辑模式,对应于概念级。它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。它是由数据库管理系统提供的数据模式描述语言(Data Description Language,DDL)来描述、定义的,体现、反映了数据库系统的整体观。

3)内模式

内模式又称存储模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义,它是数据库的存储观。

在一个数据库系统中,只有唯一的数据库, 因而作为定义 、描述数据库存储结构的内模式和定义、描述数据库逻辑结构的模式,也是唯一的,但建立在数据库系统之上的应用则是非常广泛、多样的,所以对应的外模式不是唯一的,也不可能是唯一的。

四、相关术语

1)表

数据库中存放数据的数据表,此处不再赘述。

2)视图

视图是数据库中的虚拟表,存放的是从数据库表中查询出来的记录,用于方便信息查询,缩短查询数据时间。

3)存储过程

存储过程是由SQL语句和控制流语句组成的语句块。存储过程存储在数据库内,可由程序通过存储过程的名称调用执行。

4)触发器

触发器是特殊的存储过程。也是由SQL语句和程序控制语句组成的。但是触发器在数据库中是不需调用而自动执行的。例如,在触发器中可以定义在修改某张表后执行触发器中的内容。

5)约束

参考资料:http://baike.baidu.com/subview/152173/11233465.htm

  • 主键约束(Primary Key constraint):要求主键列数据唯一,并且不允许为空。

  • 唯一约束(Unique constraint):要求该列唯一,允许为空,但只能出现一个空值。

  • 检查约束(Check constraint):某列取值范围限制,格式限制等,如有关年龄、邮箱(必须有@)的约束。

  • 默认约束(Default constraint):某列的默认值,如在数据库里有一项数据很多重复,可以设为默认值。

  • 外键约束(Foreign Key constraint):用于在两个表之间建立关系,需要指定引用主表的哪一列。

  • 此外还应该有一项:
    非空(not null)约束:约束该列不能为空

约束是为了保证数据库的完整性。ORCALE涉及的完整性主要有三种:

  1. 实体完整性:实体完整性要求表中的主键字段都不能为空或者重复的值。
  2. 区域完整性:区域完整性是保证输入到数据库中的数据是在有效范围内的。如邮箱字段必须包含@等。
  3. 参照完整性:参照完整性可以保证数据库中相关联的表里面数据的正确性。避免误删和错删数据。例如如学生已经选了某门课程,那么管理员就不能吧该门课程删除。

五、数据库范式

范式是设计关系型数据库的准则。
数据库范式是程序员在设计数据库时必须要理解的原则,如果不采用的话后期会产生大量的修改及维护成本。

  1. 第一范式(1NF):数据库表中的字段都是单一属性,不可再分。
  2. 第二范式(2NF):在数据库中不存在非关键字段对任一候选字段的部分函数依赖。
    容易理解的说法是:第二范式的规则是要求数据表里的所有数据都要和该数据表的主键有完全依赖关系;如果有哪些数据只和主键的一部份(组合主键中的某一个主键)有关的话,它就不符合第二范式。同时可以得出:如果一个数据表的主键只有单一一个字段的话,它就一定符合第二范式(前提是该数据表符合第一范式)。
    如果不按照第二范式的要求设计表就会出现以下问题:
    (假设一个购物信息表,字段包括:客户编号、产品名、产品数量、产品类型、产品价格、客户类型,使用客户编号和产品名称作为组合主键)

    • 数据冗余:同一个产品N个人购买,“产品类型”就会重复N-1次;同一个用户购买多件产品也会记录多次顾客的个人信息。
    • 更新异常:若调整了某个产品的类型,数据表中的所有行的“产品类型”都需要更新,否则会出现同一产品不同类型的情况。
    • 插入异常:假设新进了一个产品,暂时还没有人购买,产品名称和类型也无法记录到数据库中。
    • 删除异常:假设一批顾客已经把购买完的产品退货,这些产品信息就从数据表中删除了。但是,同时产品名称和产品类型等信息也被删除了。
      为了消除这些问题可以把现有表拆分成3张表。
      3)第三范式(3NF):每个非关键字列都独立于其他非关键字列,并依赖于关键字,第三范式指数据库中不能存在传递函数依赖关系。

参考资料: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。

六、绘制E—R图设计数据库

E—R图又叫实体—联系图,是描述现实世界的概念模型。构成E—R图的基本要素是实体、属性和联系。
下面是几个例子。
Oracle学习总结(二)——数据库基础_第4张图片
这里写图片描述
这里写图片描述
这里写图片描述
Oracle学习总结(二)——数据库基础_第5张图片

你可能感兴趣的:(Oracle,oracle,数据库)