第1章 数据库系统概述

1.1. DBMS系统结构组成

数据库、DBMS、数据库系统等基本概念

数据

  • 数据(Data)是数据库中存储的基本对象
  • 数据的定义
    • 人们用来反映客观世界而记录下来的可以鉴别的符号
  • 数据的种类
    • 数值数据:0-9
    • 非数值数据:字符、文字、声音、图形、图像等
  • 数据的特点
    • 数据与其语义是不可分的
  • 例子1:93是一个数据
    • 语义1:学生某门课的成绩
    • 语义2:某人的体重
    • 语义3:计算机学院2016级学生人数
  • 例子2:学生档案记录(李明,197205,中国科大,1990)
    • 语义1:学生,出生年月,所在学校,毕业年份
    • 语义2: 学生,出生年月,录取大学,入学时间

数据库

  • 数据库的定义 数据库(Database,简称DB)是长期储存在计算机内、有 组织的、可共享的大量数据的集合
  • 数据库的基本特征
    • 数据按一定的数据模型组织、描述和储存
    • 可为各种用户共享
    • 数据间联系密切,具有最小的冗余度和较高的独立性
    • 服务于某个特定的应用
  • 例:图书馆的图书数据库、机场的航班数据库、银行数据库……

数据库模式 (Schema)

数据库模式是数据库中全体数据的逻辑结构和特征的描述 ![[Pasted image 20240108110812.png]]

数据库管理系统

DBMS(Database Management System),是计算机程序的集 合,用于创建和维护数据库 ![[Pasted image 20240108110347.png]]

  • 位于操作系统和用户应用之间
  • 总是基于某种数据模型
  • 数据库厂商的产品通常指DBMS,如Oracle11g、Microsoft SQL Server 2008、DB2、MySQL等

DBMS一般架构

![[Pasted image 20240108210938.png]]

数据库系统

  • DBS(DataBase System),指在计算机系统中引入了数据库后的系统,即采用了数据库技术的计算机系统

数据库设计问题

  • 如何设计和实现一个DBMS来高效的组织和管理数据库?——DBMS实现问题 研究生课程内容
  • 如何针对特定应用的需求设计一个合理的数据库结构?——数据库设计问题 本科课程内容
  • 应用程序如何有效地存取数据库中的数据?——数据库存取问题 本科课程内容

DBMS实现问题

1、一个虚拟的DBMS:Megatron2000

  • UNIX下的关系型DBMS,支持SQL
  • 实现细节
    • 关系通过文件(ASCII)存储,e.g. R存储在/usr/db/R中
  Smith # 123 # CS
  Jones # 522 # EE
 - 数据库模式存储在特定的文件(ASCII)中
	R1 # A # INT # B # STR …
	R2 # C # STR # A # INT …

Megatron 2000如何执行查询? 执行 “select * from R where condition”:

  • 读数据字典获取R的属性
  • 读R对应的文件,对于每一行数据:
    • 检查条件
    • 如果条件满足,则输出

执行”select A,B from R,S where condition”:

  • 读数据字典获取R和S的属性
  • 读R文件,对于每一行数据:
    • 读S文件,对于每一行数据:
      • 生成连接元组
      • 检查条件
      • 若条件满足,则输出

Megatron 2000功能总结

  • 可以定义表
  • 可以进行数据操作
    • 数据更新
    • 数据查询

Megatron 2000 存在什么问题?

  • 元组平铺在磁盘上

    • 将 ’EE’改为 ’ECON’,需要重写整个文件
    • ASCII存储过于昂贵
    • 删除操作同样代价很高
  • 低级的查询处理

    • 例,select *from Student S,SC where S.sno = SC.sno and SC.credit > 3
    • 先做连接比先做选择效率要低
    • 未考虑更高效的连接算法
  • 没有缓冲区管理

    • 数据直接从磁盘存取,磁盘I/O的代价昂贵
    • 需要Buffer来加速数据存取效率
  • 没有并发控制

    • 多用户同时存取数据时数据一致性得不到保证
  • 没有索引;数据查询效率低

    • 不能快速地根据给定键值查询元组
    • 总是要读入整个关系
  • 没有可靠性

    • 发生数据库系统故障时没有恢复机制
    • 易出现数据不一致的情形
  • 没有应用程序编程接口(API)

    • 应用如何存取数据库?
  • 糟糕的数据字典组织