数据库系统概述
数据库系统组成
数据库系统(Database System),主要由数据库、数据库用户、计算机硬件系统和计算机软件系统组成。
数据库
数据库是按照数据结构来组织、存储和管理数据的仓库。它有两个特点:
- 集成性。数据库中的数据是相关联的,它们之间存在着某种联系,这种联系可以是逻辑联系,也可以是物理联系。
- 共享性。数据库中的数据可以被多个用户共享。
数据库用户
数据库用户有三类:
- 应用程序员。他们设计和编写应用程序,使用数据库系统来存储和管理数据。
- 数据库管理员。数据库管理员是数据库系统的管理者,他们负责数据库系统的建立、维护和管理。
- 数据库应用用户。数据库应用用户是数据库系统的最终用户,他们通过应用程序来访问数据库系统。
数据库管理员(Database Administrator)在大型项目中极为重要,他们负责数据库系统的建立、维护和管理。数据库管理员的主要工作包括:
- 数据库设计。数据库设计是数据库系统的核心工作,它包括数据库的逻辑设计和物理设计。
- 数据库实现。数据库实现是将数据库设计转换为数据库系统的过程。
- 数据库运行和维护。数据库运行和维护是保证数据库系统正常运行的重要工作。
- 数据库安全。数据库安全是保证数据库系统的安全的重要工作。
- 帮助用户使用数据库系统。帮助用户使用数据库系统是数据库管理员的重要工作。
计算机硬件系统
计算机硬件系统是数据库系统的基础,它包括计算机系统、存储系统和通信系统。
计算机软件系统
软件系统主要包括数据库管理系统(Database Management System,简称DBMS)和操作系统(Operating System,简称OS)。
数据库系统的内部体系结构
三级结构
数据库系统的内部体系结构是三级结构,它包括:
- 模式,又称概念模式,它描述了数据库中全体数据的逻辑结构和特征。处于三级模式的中间层,不涉及 数据的物理存储细节和硬件环境,与所使用的开发工具或者语言无关。一个数据库只有一个模式,它是数据库的逻辑结构的描述,是数据库的蓝图。
- 外模式 (外部模式,或用户模式,或子模式)。它是三级结构的最外层,使用户能够看到和使用数据库中的数据。外模式是数据库的逻辑结构的子集,它是数据库的实际使用者看到的部分,是数据库用户的数据视图或者用户视图。外模式一般是 内模式的子集。一个数据库可以有多个外模式。
- 内模式 。内模式又称存储模式或者物理模式。是三级结构的最内层,它描述了数据库中数据的物理结构和存储方式。内模式是数据库的逻辑结构的实现,是数据库的实际存储结构。一个数据库只有一个内模式。它可能记录以什么方式存储数据(比如顺序存储或者索引存储),以及数据的物理存储位置,又或者是否进行压缩。
二级映像
DBMS在三级模式之间建立了二级映像,它们之间的映像关系如下:
- 模式映像到外模式。例如,在学生的逻辑结构中添加新的属性,如“学生的爱好”,这个属性就会映像到外模式中,即用户可以看到这个属性。
- 外模式映像到内模式。当采取了更加先进的存储技术时,只要保持其模式不变化,就可以把存储结构的变化限制在模式之下,这使数据的存储结构和存储方式都高度独立于应用程序。
数据库的外部体系结构
单用户的数据库
单用户的数据库是指只有一个用户使用的数据库。不能实现多用户共享,因此只能用于个人使用。
主从数据库
主从数据库是指一个数据库系统中有一个主数据库和多个从数据库。是一个单个大型主机带终端的数据库。
分布式数据库
分布式数据库是指多个数据库系统共同组成一个数据库系统。是多个计算机共同组成的数据库系统。
客户机/服务器数据库
在这个结构的数据库中,DBMS和数据库存放在数据库服务器上,应用程序和相关的开发工具安装在客户机上。(富客户端)
十分不方便,每次维护升级都需要重新安装客户端,而且客户端的安装包很大,很多时候还需要重新安装操作系统。
浏览器/服务器数据库
客户端只安装通用的浏览器软件,应用程序不安装在客户端,而是安装在介于客户端和数据库服务器之间的应用服务器上。(瘦客户端)
数据库管理系统
数据库管理系统即DBMS,是一种软件系统,它是数据库系统的核心部分。DBMS就是把抽象的数据处理成计算机中具体的物理数据的软件。 主要包括数据定义功能、数据操纵功能、数据库运行管理功能、数据库的建立和维护功能、数据通信接口及组织、存储和管理功能。
数据定义功能
DBMS提供数据定义语言(Data Definition Language,DDL)来定义数据库的结模式、外模式和内模式三级结构。
数据操纵功能
DBMS提供数据操纵语言(Data Manipulation Language,DML)来操纵数据库中的数据。例如,SQL语言提供查询语句(SELECT)、插入语句(INSERT)、更新语句(UPDATE)和删除语句(DELETE)等。
数据库的运行管理功能
DBMS提供数据库的运行管理功能,包括数据库的安全管理、备份和恢复、并发控制、完整性控制。
数据库的建立和维护功能
DBMS提供数据库的建立和维护功能,数据库的维护包括数据库的转储、恢复、重构造、系统性能监视和分析等。
数据通信接口
DBMS提供数据通信接口,使用户可以通过这些接口与数据库进行通信。
组织、存储和管理功能
DBMS提供组织、存储和管理功能,包括数据的存储管理、索引管理、文件管理、存储空间管理、缓冲管理、重组管理、安全管理、完整性管理、并发管理、恢复管理、事务管理等。
DBMS的组成
语言编译处理程序
语言编译处理程序是DBMS的核心部分,它负责把用户的数据操纵语言(DML)转换成数据库系统能够识别的语言,然后把这些语言转换成数据库系统能够执行的语言。
系统运行控制程序
DBMS提供一系列运行控制程序,负责数据库系统运行过程中的控制和管理,主要包括下面几部分:
- 系统总控程序。用于协调和控制各程序的活动。它是DBMS的核心。
- 安全性控制程序。
- 完整性控制程序。
- 并发控制程序。
- 数据存取和更新程序。
- 通信控制程序。
系统建立和维护程序
包括装备程序、重组程序以及系统的恢复程序。
数据字典
数据字典是描述数据库信息的数据目录。
四种数据模型
层次模型
数据库的层次模型是类似一个树形结构,在这种层次结构模型中,每一个节点表示一个记录型,每个记录型又包含多个字段。
网状模型
网状模型采用类似图的形式来描述。
关系模型
关系模型是最常用的数据模型,它是一种二维表结构,每个表都有一个名字,每个表都由若干个字段组成,每个字段都有一个名字,每个字段都有一个数据类型。关系模型的数据结构是规范化的二维表,它由表名、表头和表体组成。表名即表的名称,如(T1、T2、T3)。表头即表的属性。表体即表的记录。
如一张教师表(T):
Tno | Tname | Tsex | Ttitle | Tdept |
---|---|---|---|---|
1 | 张三 | 男 | 讲师 | 计算机系 |
2 | 李四 | 男 | 副教授 | 计算机系 |
3 | 王五 | 男 | 教授 | 网工 |
4 | 赵六 | 女 | 讲师 | 计算机系 |
5 | 钱七 | 女 | 副教授 | 数媒 |
学生表(S):
Sno | Sname | Ssex | Sage | Sdept |
---|---|---|---|---|
1 | 张三 | 男 | 20 | 计算机系 |
2 | 李四 | 男 | 21 | 计算机系 |
3 | 王五 | 男 | 22 | 计算机系 |
4 | 赵六 | 女 | 23 | 计算机系 |
5 | 钱七 | 女 | 24 | 数媒 |
课程关系表(C):
Cno | Cname | Ccredit | Tno |
---|---|---|---|
1 | 数据库 | 4 | 1 |
2 | 网络 | 4 | 3 |
3 | 数学 | 4 | 2 |
4 | 英语 | 4 | 4 |
5 | 体育 | 4 | 5 |
选课关系表(SC):
Sno | Cno | Grade |
---|---|---|
1 | 1 | 90 |
1 | 2 | 80 |
1 | 3 | 70 |
1 | 4 | 60 |
1 | 5 | 50 |
2 | 1 | 90 |
2 | 2 | 80 |
2 | 3 | 70 |
2 | 4 | 60 |
2 | 5 | 50 |
3 | 1 | 90 |
3 | 2 | 80 |
3 | 3 | 70 |
3 | 4 | 60 |
3 | 5 | 50 |
4 | 1 | 90 |
4 | 2 | 80 |
4 | 3 | 70 |
4 | 4 | 60 |
4 | 5 | 50 |
5 | 1 | 90 |
5 | 2 | 80 |
5 | 3 | 70 |
5 | 4 | 60 |
5 | 5 | 50 |
授课关系表(TC):
Tno | Cno |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
1 | 4 |
1 | 5 |
2 | 1 |
2 | 2 |
2 | 3 |
2 | 4 |
2 | 5 |
3 | 1 |
3 | 2 |
3 | 3 |
3 | 4 |
3 | 5 |
4 | 1 |
4 | 2 |
4 | 3 |
4 | 4 |
4 | 5 |
5 | 1 |
5 | 2 |
5 | 3 |
5 | 4 |
5 | 5 |
- 关系与关系实例。一个关系实例就是一个由行和列组成的二维表。如上面就有五个关系实例,分别是教师表、学生表、课程关系表、选课关系表和授课关系表。
- 元组。元组是关系中的一行,它是一个不可分割的整体。如上面的教师表中的一行就是一个元组,如(1、张三、男、讲师、计算机系)。
- 属性。属性是关系中的一列,它是一个不可分割的整体。如上面的教师表中的一列就是一个属性,如(Tno、Tname、Tsex、Ttitle、Tdept)。
- 域。域是属性的取值范围。如上面的教师表中的Tsex属性的域是 {男、女} ,Ttitle属性的域是{讲师、副教授、教授},Tdept属性的域是 {计算机系、网工、数媒} 。
- 分量。分量是元组中的一个值。如上面的教师表中的一行(1、张三、男、讲师、计算机系)中的张三就是一个分量。
- 候选码。候选码是一个或多个属性的集合,它能唯一地标识关系中的每一个元组。如上面的教师表中的Tno属性就是一个候选码,因为它能唯一地标识关系中的每一个元组。
- 主码。主码是候选码中的一个,它是关系中的一个属性或属性组,它能唯一地标识关系中的每一个元组。如上面的教师表中的Tno属性就是一个主码,因为它能唯一地标识关系中的每一个元组。
- 关系模式。关系模式是关系的一个描述,它由关系的名称和属性组成。如上面的教师表的关系模式是(Tno、Tname、Tsex、Ttitle、Tdept)。
- 关系实例。关系实例是关系的一个具体的值,它由关系的名称和元组组成。如上面的教师表的关系实例是(Tno、Tname、Tsex、Ttitle、Tdept)和(1、张三、男、讲师、计算机系)。
面向对象模型
对象是现实世界中实体的模型化。如一个学生、一门课程和考试记录都可以看成对象。