DCA学习-笔记01

一、数据视图

(一)数据抽象

数据库系统通过以下三个层次的抽象来屏蔽复杂性,简化交互:

  • 物理层(physical level):最低层次的抽象,描述数据如何存储。物理层详细描述复杂的底层存储结构。
  • 逻辑层(logical level):描述数据库存储什么数据,并且数据之间存在什么样的关系。即使逻辑层的实现还是需要复杂的物理层结构来实现,但逻辑层用户并不需要知道物理层的复杂性,因此称为“数据独立性”(physical data independence)。
  • 视图层(view level):数据库系统很多用户不需要知道数据库中所有信息,而是只关心数据库中的部分信息,因此视图层抽象的定义是为了该用户与系统交互简单定义的。系统可以为同一数据库提供多个视图。

     

通过程序中结构化类型的概念可以区分各层抽象见的区别:

Type instructor = record

ID:char(5);

Name:char(20);

Dept_name:char(20);

End;

以上代码定义了一个具有三个字段的新记录instructor。每个字段有一个字段名和所属类型。对于一个大学来说,可能包括几个这样的记录类型:

  • Department,包含字段dept_name,building和budget
  • Course,包含字段course_id,title,dept_name
  • Student,包含字段ID,name,dept_name和tot_cred

        从物理层方面来讲,一条Deparrtment记录可能使用一块连续的存储空间存储,但对数据库系统开发人员来讲,其无需了解底层复杂的存储结构。从逻辑层上来讲,每个记录通过类型定义进行描述,而且还需要定义这些记录类型的相互关系。

        从视图层来讲,视图层上定义了数据库的多个视图,用户看见的是这些视图,除了屏蔽逻辑层细节以外,视图还提供了防止用户访问数据库的某些部分的安全性机制。

        表如何存储在文件中,例如,一个特殊的字符(例如逗号)可以用来分割记录的不同属性,另一个特殊字符(如换行符)可以用来分割记录,对于数据库的开发者和用户,关系模型屏蔽了这些底层实现细节。

(二) 实例和模式

  • 实例(instance):特定时刻存储在数据中的信息的集合称作数据库的一个实例。
  • 模式(schema):数据库的总体设计称作数据库模式。

(三) 数据模型

数据库结构的基础是数据模型。数据模型是一个描述数据、数据关系、数据语义以及一致性约束的概念工具的集合。

数据模型可分为四类:

  • 关系模型(relational model):关系模型用表的集合来表示数据和数据间的关系。
  • 实体-联系模型(entity-relationship model):第七章详细探讨该模型。

什么是实体-联系模型

  • 基于对象的数据模型(object-based data model):该模型结合了面向对象的数据模型和关系数据模型的特征。
  • 半结构化数据类型(semistructured data model):该数据模型允许相同类型的数据项包含不同属性集的数据定义。而早先提到的数据模型中所有特定类型的数据项必须具有相同的属性集。可扩展标记语言(XML)被广泛的表示半结构化数据。

二、数据库语言

数据库系统提供数据定义语言(Data-definition language)来定义数据库模式,以及数据操纵语言(data-manipulation language)来表达数据库的查询和更新。

(一)数据操纵语言

数据操纵语言(DML)是对数据的增删改查。有两种基本的数据操纵语言:

  • 过程化DML(procedural DML):要求用户指定需要什么数据和如何获取这些数据。
  • 声明式DML(decharative DML):  只要求用户指定需要什么数据而不需要指明如何获取这些数据。

        一般情况下声明式DML比过程化DML要使用方便,但是在不指明如何获取数据的情况下,数据库系统需要找出一种访问数据的高效途径。

       抽象层次不仅可以用于定义或构造数据,还可以用于操纵数据。在物理层,必须定义能够高效访问数据的算法;在更高的抽象层次上,则强调能够有效的和系统交互,数据库系统的查询处理器部件将DML的查询语句翻译成数据库系统物理层的动作序列。

 

(二)数据定义语言

 

         数据库模式是通过一系列定义来说明的,该定义是由一种称作数据定义语言(DDL)的特殊语言表达,并且也可用于定义数据的其他特征。

         数据库系统所使用的数据存储结构访问方式是通过一系列特殊的DDL语句说明的,这些特殊的DDL称为数据存储和定义语言。这些语句定义了数据库模式的实现细节,而这些细节对用户来说通常是不可见的。

         存储在数据库中的数据必须满足一些一致性约束(consistency constraint)。例如,要求账户金额不能为负数。

对于数据的完整性约束,具有以下几种:

  • 域约束(domain constraint)
  • 参照完整性(referential integrity)
  • 断言(assertion):一个断言就是数据库需要时刻满足的某一条件。域约束和参照完整性是断言的特殊表现形式,然而还有很多种表达,例如每一学期每一个系开设的课程不能少于5门,必须表达成一个断言。断言创建以后,系统会检测其丫头小型,如果有效则以后只有不破坏断言的数据库更新会被执行。
  • 授权(authorization):授予用户拥有增删改查的部分或全部权限。

 

          DDL的输出会放在数据字典(data dictionary)中,数据字典包含了元数据(metadata),元数据是关于数据的数据,可以将数据字典看做成一个特殊的表,这种表只能由数据库系统本身(不是常规的用户)来访问和修改。在读取和修改实际的数据前,数据库系统先要参考数据字典。

 

  • 数据字典详细解释

     在Oracle数据库中,数据字典是只读类型表的集合,该表用于提供数据库的信息。

     一个数据字典中包括:数据库对象所有的框架对象的定义(表、视图、索引、集群、同义词、序列、过程、函数、包、触发器等)。框架对象如何分配和使用空间、列的默认值、完整性约束信息、Oracle用户的名称、每个用户所授予的权限和角色、审计信息、数据库的其他信息。

     数据字典的结构是表和视图,一个给定数据库的所有数据字典,其表和视图都存储在数据库的SYSTEM表空间中。可以使用SQL语句访问数据字典。

    一个数据字典包括基表,即为存储相关数据库的信息的表,只有Oracle才能写和读取这些表,用户很少能直接访问,大多数数据以加密格式存储。用户可以访问视图(总结和显示数据字典基表的信息的视图)。

   数据字典包含以下主要的用途:

  • Oracle访问数据字典发现关于用户、框架对象和存储结构的信息。当执行DDL语言的时候,Oracle修改数据字典。任何Oracle用户都能使用数据字典获取数据库的信息。
  • 数据库操作过程中,Oracle读取数据字典,保证框架对象存在,用户能够访问他们。Oracle更新数据字典,反应数据库结构、审计、授权和数据的变化情况。例如,用户CUCO创建了一个一个表:PARTS,Oracle将会添加新的行到数据字典中,反映新的表、列、段、盘区和权限情况。这些信息在下一次数据字典视图被查询的时候是可见的。Oracle会在多个数据字典视图上创建公共同步,使得用户能够方便访问它们。

      许多数据字典的信息都缓存在SGA中,因为Oracle在数据库操作过程中会不断访问数据字典,验证框架对象的状态,所有信息都是通过LRU算法存储在内存中。

      数据字典时系统中各类数据描述的集合,时进行详细的数据收集和数据分析所获得的主要成功,其可能包含的信息:

  • 数据库设计资料:数据库中所有模式对象的信息,如表、视图、簇、及索引等;
  • 储存的SQL程序
  • 用户权限
  • 用户统计
  • 数据库的过程中的信息
  • 数据库增长统计、性能统计

每当访问某个表时,就会根据表的名称等在数据字典中进行查询,找到该表在物理存储空间的地址,然后获取信息。

三、数据存储和查询

   (一)存储管理器

      存储管理器是数据库系统中负责在数据库中存储的低层数据与应用程序以及向系统提交的查询之间提供接口的部件。存储管

理器负责与文件管理器进行交互。原始数据通过操作系统提供的文件系统存储在磁盘上。存储管理器将各种DML语句翻译为底层

文件系统命令,因此,存储管理器负责数据库中数据的存储、检索和更新。

存储管理部件包括:

  • 权限及完整性管理器(authorization and integrity manager),它检测是否满足完整性约束,并检查试图访问数据的用户权限。
  • 事务管理器(transaction manager),它保证即使发生了故障,数据库也保持在一致的状态,并保证并发事务的执行不发生冲突。
  • 文件管理器(file manager),它管理磁盘存储空间的分配,管理用于表示磁盘上所存储信息的数据结构。
  • 缓冲区管理器(buffer manager),它负责将数据从磁盘上取到内存,并决定哪些数据应被缓冲存储在内存中。存储管理器实现了几种数据结构,作为系统物理实现的一部分:
  • 数据文件(data files):存储数据库自身;
  • 数据字典:存储关于数据库结构的元数据,尤其是数据库模式;
  • 索引(index):提供对数据项的快速访问。

(二)查询处理器

 

查询处理器组件包括:

  • DDL解释器(DDL interpreter):它解释DDL语句并将这些定义记录在数据字典中。
  • DML编译器(DML compiler):将查询语言中的DML语句翻译为一个执行方案,包括一系列查询执行引擎能理解的低级指令。

       一个查询通常可被翻译成多种等价的具有相同结果的执行方案的一种。DML编译器还进行查询优化,也就是从几种方案中选择最优方案。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值