数据库系统概念学习 01. 概述

数据存储介质从打卡机、磁带、硬盘发展到网络服务的今天,数据库系统也发生了巨大变化。数据库存储的数据具有相关性和规范性,与一般的存储数据并不一样,但是最初这些关系数据就是用文件系统进行存储,这样做具体导致以下问题:

  • 数据存储高度冗余
  • 业务访问数据困难
  • 无法保证安全(即权限属性)
  • 无法进行并发操作
  • 难以保证数据的一致性和完整性

以上问题是数据库系统需要解决的问题,也正是数据库系统与文件系统的区别。由操作系统的概念知道,文件系统本身是存储介质硬件设备的抽象,向用户屏蔽了硬件丑陋接口的实现细节。与文件系统不同的是,数据库不仅需要存储关系数据,也要定义对这些关系数据的操作,然而这就是数据库管理系统(DBMS)的定义了:

DBMS is a collection of interrelated data and a set of programs to access those data.

DBMS存在的意义在于为用户提供高效方便存取修改数据信息的介质,也就是向用户屏蔽数据存储和操作的繁琐细节,暴露给用户清晰简单易用的接口,使得用户可以从各个角度认识和理解管理的数据。这个接口就是视图(View of Data),是数据抽象的最上面一层视图层。

  为了方便非计算机专业的用户理解并使用数据库系统,屏蔽实现细节,数据库的设计者们把数据库中的数据进行了分层抽象,即物理层、逻辑层和视图层。其中,物理层是使用硬件存储资源构建复杂的数据结构,向上层提供数据具体的存储单元的操作接口;逻辑层可以看作是具体实现关系代数;视图层是数据抽象的最高层,可以看作是对整个存储系统数据的抽象;当然,DBMS向用户提供的视图层通常不止一个。

  与数据抽象(Data Abstraction)类似,数据模型(Data Model)是对数据库系统的抽象。数据库具体可以抽象为: 

  • 数据(data)
  • 数据关系(data relationships)
  • 数据语义(data semantics)
  • 数据限制(data constraints)

典型的数据模型有关系模型E-R数据模型面向对象数据模型半结构数据模型,以及并不常用的网络模型分层模型(Hierarchical Model)。

  在具体的数据模型中,通过数据库语言对数据进行具体管理。数据库语言分为数据定义语言(Data Definition Language, DDL)和数据操作语言(Data Manlipulation Language, DML)。

  DDL以用户的指令为输入,输出包含元数据(metadata)的数据字典(data dictionary),这个数据字典可以视作一种特殊的表(table),但是只有系统可以进行更改,并且系统在每次修改数据之前都要核对数据字典。总而言之,DDL确定了数据库的模式(schema)、限制(constaints)和权限(authorization)。这里要说的是,存储在数据库中的数据值必须满足一致性约束(consistency constraints), 然后具体操作中,数据库更多的是测试检查数据的完整性约束(integrity constraints),禁止不合乎规范的数据进入数据库。

  DML使得用户可以访问和操作某种具体的数据模型组织的数据。DML以需要访问和操作的数据作为输入,输出对应的数据。DML具体可以分为两种,Procedual DMLs(需要指定操作方式的数据操作语言)和Declarative DMLs(无需指定操作方式的数据操作语言),后者需要系统确定具体的数据操作方式。查询(query)仅仅是DML的一个部分,但是大多被混为一谈。

  具体的数据库设计包含逻辑设计和物理设计先后两部分,具体方法有:正规化理论(Normalization Theory)和元关系建模(Entity Relationship Model)。数据库系统是复杂的系统,可以分为数据存储管理子系统和数据查询处理子系统。这些系统相互协作共同完成数据库系统的对数据的访问和操作。然而,这些相关的多个操作会构成单一的逻辑工作单元,即事务。事务具体有ACID属性(即原子性、一致性、隔离性、持久性)。为了完成这些设计需求,数据库系统通常架构较为复杂,如图所示:

    

本章节算是全书的概要,从概念到设计,一应俱全,满满干货,明天继续:)

posted @ 2016-01-22 17:45  再见悟空  阅读(392)  评论(0编辑  收藏  举报