第一章 引论(数据库系统原理)

第一章 引论

前面一半听的是浙江大学陈岭老师的课,后一半听的是中国人名大学王珊等老师的课。

1 引论(浙江大学 陈岭)
1.数据库系统目的
    数据处理和管理是计算机应用最重要的领域,数据库系统知识对于计算机学者至关重要。
2.与数据库相关的图灵奖
    1998,James Gray——事务、锁、日志和二阶段提交
    1981,Edgar F. Codd——关系数据库
    1972,Charles W. Bachman——网状数据库
3.我们将从以下三方面学习数据库相关知识:
    1.数据库模型与设计
        从现实生活中抽象出数据模型,再将其转化为适合目标的DBMS(数据库管理系统)的形式:表、视图。
    2.编程:使用数据库
        查询、更新数据(SQL)
    3.数据库管理系统实现(不重点展开)
        数据库管理系统的工作机制及设计
4.数据可以访问
    方式1:
        利用数据库管理系统提供的交互工具访问数据库
        比如:MySQL WorkBench,SQL Server查询分析器,ORACLE Sql*Plus,Work Sheet
    方式2:
        利用开发工具设计界面、处理数据,调用ODBC等接口访问数据库
        比如:ASP,JSP,VC++,PHP,PowerBuilder,Delphi
5.数据库与数据库管理系统定义
    1.数据库(DB)的定义
        定义1:与企业相关的数据集合
        定义2:具有完整性和持久性的数据集合[R. Ramakrishnan, J. Gehrhe]
        定义3:长期(常常多年)存在的信息集合[UIIman]
        定义4:长期存储在计算机内,有组织的,可共享的数据集合[萨师煊,王珊]
    2.数据库管理系统(DBMS)的定义
        数据库+一组用于访问、更新和管理这些数据的程序
6.DBMS的主要特性
    1.数据访问的高效和可扩展性
    2.缩短应用开发时间
    3.数据独立性(物理数据独立性/逻辑数据独立性,低耦合)
    4.数据完整性和安全性
    5.并访问和鲁棒性(恢复)
7.DBMS的发展历史
    1.File processing system(1950s-1960s)
    2.Network and hierarchical DBMS(1960s-1970s)
        网状数据模型、层次数据模型--网状数据库、层次数据库
        (结构更加复杂、使用更困难,但是更利于人的理解,由于现在计算机性能的发展,此类数据库又开始进入人们的视野)
    3.Relational database ststems(RDBMS)
        关系模型(1970,E.F. Codd)
        RDBMS开始发展(1970s)
        RDBMS走向市场(1980s)
        RDBMS技术成熟(1990s)
        目前的主流数据库
    4.其他数据库
        1.面向对象数据库系统:Object-oriented database system(OODBMS)
        2.对象关系数据库系统:Object-relational database systems(ORDBMS)
        3.面向应用数据库系统:Application-oriented database systems
            面向具体类型的数据库
            空间、时间、多媒体、网络数据库
        4.数据仓库(Data Warehousing)、联机分析处理(Online Analytical Processing)、
            数据挖掘(Data Mining)
8.数据库系统与文件处理系统的区别
    1.文件处理系统由传统操作系统所支持
        只要安装了操作系统,就有文件处理系统
    2.在文件处理系统中存储组织信息的主要弊端
        数据冗余和不一致
            多种文件格式、信息重复存储
        数据访问困难
            需要编写一个新程序来完成每一个新任务
        数据孤立
            多文件多格式,检索、共享数据困难
        完整性问题
            新增的约束和更改现有的约束很困难
        原子性问题
            再进行部分数据更新时,一旦发生故障,可能导致数据库处于不一致的状态
            例如:银行转账,如果使用文件处理系统,要在两个文件中修改数据,如果发生故障,只在一个文件中修改了数据,就会导致数据库不一致
                但是在数据库管理系统中,可以定义一个事务,保证这件事情的原子性
        并发访问异常
            为了提高系统的总体性能,许多系统允许并发访问
            不受控制的并发访问可能导致数据不一致
            文件处理系统可以支持同时访问,但是不支持同时修改
        安全性问题
            文件处理系统的安全权限设置不灵活
        **数据库系统位以上所有问题提供了解决方案。
9.DBMS市场
    1.关系数据库管理系统的公司
        甲骨文(Oracle)、SAP(Sybase):最大的数据库管理系统的公司
        IBM(DB2):世界上最大的DBMS供应商之一
        微软的SQL-Server以及Access:精简、相对便宜
    关系数据库公司也面临“面向对象DB”公司的挑战
    “对象-关系”系统,保留了核心的关系模型,同时允许类型扩展为面向对象的系统。
    2.其他数据库产品(百花齐放的年代,现在不存在):Ingres、Paradox、Foxbase、FoxPro、dBase,...
    3.开源数据库系统
        MySQL:是网站上小型系统最流行的开源数据库
            MySQL是LAMP(Linux,Apache,MySQL,PHP/Perl/Python)的重要组成部分,
                一个快速增长的开源企业软件栈堆
            http://www.mysql.com
        PostgreSQL:是一个高度可扩展的,开放源代码的对象关系数据库管理系统。
            最初由加州大学伯克利分销计算机系开发的“Postgres”
            http://www.postgresql.org
10.数据抽象
    如何使用数据库系统:不同的用法需要不用层次的抽象和建模
        三层结构:
        物理层:描述数据实际上怎样存储的
        逻辑层(最主要):描述数据库中存储什么数据以及这些数据间存在什么关系(最主要)
        视图层:应用程序能够隐藏数据类型的详细信息。视图也可以处于安全的目的隐藏数据信息。
11.实例和模式
    类似编程语言中的类型(types)和变量(variable)
        类型<-->模式(数据库中),变量<-->实例、
    模式(Schema):数据库的总体设计
        类似于程序中变量的类型信息
        物理模式:在物理层描述数据库的设计
        逻辑模式:在逻辑层描述数据库的设计
    实例(Instance):特定时刻存储在数据库中的信息的集合
        类似与程序中变量的值
    数据库的三级模式结构示意图

在这里插入图片描述

12.物理独立性和逻辑独立性
    修改一层的结构定义不影响更高层的结构定义
    物理数据独立性:修改物理结构而不需要改变逻辑结构的能力
        应用程序依赖于逻辑结构
        应用程序独立于数据的结构和存储
        这是使用DBMS最重要的好处
    逻辑数据独立性:数据逻辑结构的改变不影响应用程序
        逻辑数据独立性一般难以实现,因为应用程序严重依赖于数据的逻辑结构
13.数据模型
    数据模型是一个概念工具的集合,用于描述:
        数据结构
        数据关系
        数据语义
        数据约束
    数据抽象的不同层次需要不同的数据模型来描述
        实体-联系模型(对应数据库设计过程的:概念设计)
        关系模型(对应数据库设计过程的:逻辑设计)
        其他模型
            面向对象模型
            半结构化数据模型(XML)
            早期模型:网状模型和层次模型
14.数据库设计步骤
    1.需求分析
        需要什么样的数据、应用程序和业务
    2.概念数据库设计
        使用E-R模式或类似高层次数据模型,描述数据
    3.逻辑数据库设计
        将概念设计转换为某个DBMS所支持的数据模型
    4.结构优化
        关系标准化,检查冗余和相关的异常关系结构
    5.物理数据库设计
        索引,集群和数据库调优
    6.创建并初始化数据库&安全设计
        加载初始数据,测试
        识别不同的用户以及他们的角色
    示意图

在这里插入图片描述

15.实体-联系模型
    E-R(Entity-Relationship)模型
    实体(对象)
        例如:客户、账户、银行分支机构
        实体由属性描述
    联系:是几个实体之间的关联
        例如:账号A-101是由客户John拥有,联系设定存款关联客户的账户
    E-R模型在数据库设计中使用广泛
        E-R模型通常将数据库设计转化为关系模型的设计
            E-R模型很容易转化为关系模型
        最早由Peter Chen(华裔)提出
        实体用矩形来表示,实体对应的属性由椭圆表示,联系用来表示
    E-R模型示例

在这里插入图片描述

16.数据库语言
    数据库语言:
        Data Definition Language(DDL,数据定义语言)
        Data Manipulation Language(DML,数据操纵语言)
        Data Control Language(DCL,数据控制语言)
    1.数据定义语言(DDL)
        指定一个数据库模式作为一组关系模式的定义
        指定存储结构,访问方法和一致性约束
        DDL语言经过编译,得到一组存储在一个特殊文件中的表,
            特殊文件即数据字典(data dictionary),其中包含元数据(matadata)
            元数据包括:数据库模式,数据存储结构,访问方法和约束、统计信息、授权
        例如:CREATE TABLE account(account_number char(10),balance integer); //该语句创建了表account
    2.数据操作语言(DML)
        从数据库中检索数据
        插入/删除/更新数据
        即:进行增删改查操作,其中查最复杂,其他操作都建立在查的操作之上
        DML也称为查询语言
        有两类基本的数据操作语言
            1.过程化DML:要求用户指定需要什么数据,以及如何获取这些数据(C,java,Pascal,...)
            2.声明式DML:也称为非过程化DML,只要求用户指定需要什么数据,而不致命如何获取这些数据(SQL,Prolog)
    3.数据控制语言(DCL)
    4.SQL
        SQL=DDL+DML+DCL
        SQL已被广泛使用
        SQL(Structure Query Language,结构化查询语言)
            来源于1975年IBM System R中的“SEQUEL”(Structure English Query Language)
        语言使用示例
            1.根据用户的customer-id(192-83-7465)找到用户姓名(customer-name)
                SELECT customer-name
                FROM customer
                WHERE customer-id='192-83-7465'
            2.找到用户(192-83-7465)持有的所有账户的余额
                SELECT account.balance
                FROM depositor,account
                WHERE depositor.customer-id='192-83-7465' and depositor.account-number = account.account-number
        SQL是最广泛的查询语言。有三种用法;
            1.直接在交互环境中使用
                SQL Server:查询分析器
                Oracle:SQL*Plus、Work Sheet
                MySQL:命令行客户端
            2.在宿主语言中,通过ODBC(开放式数据库连接)、JDBC使用
            3.在宿主语言中使用嵌入式SQL
        数据库的使用示意图

在这里插入图片描述

17.数据库用户
    根据所期望的与数据库系统交互方式的不同,数据库系统的用户可以分为四类:
    1.无经验用户(普通用户):他们通过激活实现已经写好的应用程序同系统进行交互
        比如:人们通过网络交互、银行出纳员、文员访问数据库
    2.应用程序员:通过SQL调用与系统进行交互
    3.富有经验的用户:用数据库查询语言或数据分析软件等工具来表达他们的要求
        例如:联机分析处理(OLAP)、数据挖掘
    4.特殊用户:编写专门的,不适合于传统数据处理框架的数据库应用。
        例如:计算机辅助设计系统(CAD),知识库系统(KDB),专家系统(ES)
18.数据库管理员(DBA,Database Administrator)
    对数据库系统进行集中控制的特殊用户
        DBA拥有管理数据库的最高权限
        DBA协调数据库系统的所有活动
        DBA控制所有用户访问数据库的权限
        DBA对企业的信息资源和需求有很好的理解
    数据库管理员的工作
        1.模式定义
        2.存储结构与存取方法修改
        3.数据访问授权
        4.日常维护
19.事务管理
    并发的使用很重要,但是会带来一系列问题
    事务:数据库应用中完成单一逻辑功能的操作集合
    事务的要求:
        原子性atomicity
        一致性consistence
        隔离性isolation
        持久性durability
    事务管理组件:
        确保系统在出现故障或事务失败的情况下,数据库能保持一致性
    并发控制管理器
        控制并发事务之间的交互
20.数据库体系结构
    1.存储管理器
        在底层数据存储与应用程序及查询之间,提供接口
        对数据库中的数据进行高效存储,检索与更新
        包括
            1.事务管理
            2.授权和完整性管理
            3.文件管理
                管理文件系统与数据系统,数据字典,索引文件之间的交互
            4.缓存管理
    2.查询处理器
        接收数据库语言输入,经过解析、优化、执行,输出相应结果给用户
        包括
            1.解析和翻译
            2.优化
            3.执行
        查询处理优化
            执行给定查询操作的方法:
                等价表达式
                每个操作有不同的实现算法
            不同执行方法之间的开销差可能是巨大的
            需要预估操作的开销
                关键取决于数据库中维持信息的统计信息
                需要预估中间结果的统计信息,这些统计信息将用于复杂表达式的开销
    数据库体系结构示意图

在这里插入图片描述

    SQL Server体系结构

在这里插入图片描述

21.应用程序体系结构
    1.两层体系结构
        像ODBC、JDBC这样的应用程序接口标准被用于进行客户端和服务器的交互
    2.三层体系结构
        如基于Web的应用程序及采用“中间件”构建的应用程序
    3.示意图

在这里插入图片描述

22.总结
    1.数据库管理系统用于维护和查询大量的数据集
    2.拥有故障恢复、并发访问、快速应用开发以及数据集成和数据安全的优点
    3.抽象使得数据具有独立性
    4.E-R模型,关系模型
    5.DDL、DML、SQL
    6.数据库管理员的职责
    7.DBS经典体系架构
    8.DBMS R&D(research and development)是计算机科学领域一个最广泛,令人兴奋的领域
1.3 数据库系统的结构(中国人民大学 王珊等)
1.从数据库应用开发人员的角度看
    数据库系统采用三级模式结构,是数据库系统内部的系统结构
2.从数据库最终用户角度看
    数据库系统的结构有
    1.单用户结构
    2.主从式结构
    3.分布式结构
    4.客户-服务器
    5.浏览器-应用服务器/数据库服务器

1.3.1数据库系统模式的概念
    1.模式(Schema)
        是对数据库逻辑结构和特征的描述
        是对型的描述,不涉及具体值
        模式是相对稳定的
    2.实例(Instance)
        数据库某一时刻的状态--模式的一个具体值
        同一个模式可以有很多实例
1.3.2数据库系统的三级模式结构

在这里插入图片描述

    1.模式(Schema)
        1.模式(也称逻辑模式)
            数据库中所有数据的逻辑结构和特征描述
            所有用户的公共数据视图
        2.一般,某个应用的数据库有一个模式
        3.模式是数据库系统模式结构的中心
            与数据的物理存储细节和硬件环境无关
            与具体的应用程序、开发工具及高级程序设计语言无关
        4.定义模式
            DDL定义数据的逻辑结构,以某种数据模型为基础
                定义数据记录由哪些数据项构成,数据项的名字、类型、取值范围
            定义数据之间的联系
            定义与数据有关的安全性、完整性要求
    2.外模式(External Schema)
        1.外模式(也称子模式或用户模式)
            数据库用户使用的局部数据的逻辑结构和特征描述
            数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
        2.外模式与模式的关系
            外模式通常是模式的子集、一个模式可以有多个外模式
                反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求
            对模式中某一数据,在不同的外模式中结构、类型、长度、保密级别等都可以不同
        3.外模式与应用的关系
            一个外模式可以为多个应用系统所使用,一个应用程序只能使用一个外模式
        4.外模式的用途
            每个用户只能看见和访问所对应的外模式中的数据,简化用户视图
            保证数据库安全性的一个有力措施
    3.内模式(Internal Schema)
        1.内模式(也称存储模式)
            是数据物理结构和存储方式的描述
            是数据在数据库内部的表示方法
                记录的存储方式
                    例如,顺序存储,对存储,按hash方法存储等
                索引的组织方式(B+树,Bitmap,Hash)
                数据是否压缩存储
                数据是否加密
                数据存储记录结构的规定——如定长/变长,记录是否可以跨页存放
        2.一个数据库只有一个外模式
1.3.3数据库的二级映像功能与数据独立性
    三级模式是对数据的三个抽象级别
    数据库管理系统内部提供二级映像
        1.外模式/模式映像
        2.模式/内模式映像
    三个抽象层次的联系和转换
    1.外模式/模式映像
        1.对每一个外模式,有一个外模式/模式映像
            定义外模式与模式之间的对应关系
            映像定义通常包含在各外模式的描述中
        2.保证数据的逻辑独立性 
            当模式改变时,数据库管理员对外模式/模式映像作相应改变,使外模式保持不变
            应用程序使根据数据的外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
    2.模式/内模式映像
        1.模式/内模式映像定义了数据全局逻辑结构与存储结构之间的对应关系。
            如,说明某个逻辑记录对应何种存储结构
        2.数据库中模式/内模式映像是唯一的
            该映像定义通常包含在模式描述中
        3.保证数据的物理独立性
            当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映像,使模式保持不变
            模式不变,则应用程序不变。保证了数据与程序的物理独立性,简称数据的物理独立性。
保证了应用程序的稳定性
    除非应用需求本身发生变化,否则应用程序一般不需要修改
从程序为中心——发展为以数据为中心
    具有了数据与程序之间的独立性,使得数据的定义与描述可以从应用程序中分离出去
数据的存取由数据库管理系统管理
    简化了应用程序的编制
    大大减少了应用程序的维护和修改
1.4 数据库系统的组成
数据库
数据库管理系统(及开发工具)
应用程序
数据库管理员

1.硬件平台及数据库
    数据库系统对硬件资源的要求
        1.足够大的内存
        2.足够大的磁盘或磁盘阵列等外部设备
        3.较高的通道能力,提高数据传输率
2.软件
    数据库管理系统
    支持数据库管理系统运行的操作系统
    与数据库接口的高级语言及其编译器
    以数据库管理系统为核心的应用开发工具
    为特定应用环境开发的数据库应用系统
3.人员
    1.数据库管理员
        1.参与确定数据库中的信息内容和结构
        2.参与数据库的存储结构和存取策略的设计
        3.参与确定数据安全性要求和完整性约束条件
        4.监控数据库的使用和运行
            1.周期性转储数据库
                数据文件
                日志文件
            2.系统故障恢复
            3.介质故障恢复
            4.监事审计文件
        5.数据库的改进和重组
            1.性能监控和调优
            2.定期对数据库进行重组织,以提高系统的性能
            3.需求增加和改变时,数据库需要重构造
    2.系统分析员和数据库设计人员
        系统分析员
            负责应用系统的需求分析和规范说明
            与用户及数据库管理员结合,确定系统的软硬件配置
            参与数据库管理系统的概要设计
        数据库设计人员
            参与用户需求调查和系统分析
            确定数据库中的数据
            设计数据库各级模式
    3.应用程序员
        设计和编写应用系统的程序模块
        进行调试和安装
    4.最终用户
        他们通过应用系统的用户接口使用数据库
        1.偶然用户
            不经常访问数据库,但每次访问数据库时往往需要不同的数据库信息
            企业或组织机构的中高级管理人员
        2.简单用户
            主要工作是查询和更新数据库
            银行的职员、机票预定人员、旅馆总台服务员
        3.复杂用户
            工程师、科学家、经济学家、科技工作者
            直接使用数据库语言访问数据库,甚至能够基于数据库管理系统的应用程序接口编织自己的程序应用
    **不同的人员涉及不同的数据抽象级别,具有不同的数据视图
    各种人员的数据视图

在这里插入图片描述

第一章小结
1.重点
    牢记高年模型的基本概念;数据模型的3个组成要素(数据结构、数据操作、数据的完整性约束条件)
    数据库系统三级模式和两层映像的体系结构
    数据库系统的逻辑独立性和物理独立性
2.难点
    介绍了大量的基本概念
    数据模型及数据库系统的体系结构也会本章的难点
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值