数据库原理
Database Principles
王玉亭
数据库的重要性
数据库已经进入到很多的领域中,已经成为我们生活中必不可少的一部分。
计算机的主要应用领域:
科学计算
过程控制
数据处理(70%)
数据处理的核心机构是数据库系统。
数据库的建设规模、数据库信息量的大小和使用频度已成为衡量一个国家信息化程度的重要标志。
数据库技术的发展过程
数据库技术产生于60年代末,是数据管理的最新技术。
经历了三代演变
层次/网状数据库、关系数据库、新一代数据库。
造就了三位图灵奖得主
(73) (81) James Gray(98)
发展了一门计算机基础学科
以数据模型和DBMS为主。
形成了一个巨大的软件产业
DBMS及相关产品的开发,应用解决方案的提供。
课程内容
1. 数据库基本理论
主要集中在关系演算理论、关系数据理论等。
第一章:绪论
第二章:关系数据库★
第三章:关系数据库标准语言SQL ★
第六章:关系数据理论★
课程内容
2. 数据库管理系统
数据库管理系统(DBMS)是处于数据库和数据库用户之间的一层软件。它实现对数据库的有效组织、管理和存取。
第四章:数据库安全性★
第五章:数据库完整性
第九章:关系查询处理及查询优化
第十章:数据库恢复技术
第十一章:并发控制★
课程内容
3. 数据库设计
数据库设计的主要任务是在DBMS的支持下,按照应用的要求,为某一部门或组织设计一个结构合理、使用方便、效率较高的数据库及其应用系统。
第七章:数据库设计★
教材
数据库系统概论(第四版)
作者:王珊 萨师煊
出版社:高等教育出版社, 2006 年
评价:介绍了数据库的基本理论和技术,是使用最广的国内教材。
参考书
数据库系统概念.
Abraham Silberschatz等著,杨冬青、唐世渭等译,机械工业出版社。
参考书
数据库系统导论
著,孟小峰、王珊 等译,机械工业出版社。
上机实验
上机实验环境:
SQL Server 2005
powerdesigner(pd)
资源网站:
第一章 绪论
授课内容
数据库系统概述
数据模型
数据库系统结构
数据库系统的组成
数据库系统概述
基本概念
数据:
100、187
客观实体的属性值。例文字、声音、图片、图象等。数据经过数字化后被输入到计算机中。
信息:
数据的形式还不能表达其内容,需要经过解释;信息是对数据语义的解释。数据是信息的载体,信息是数据的内涵。
基本概念
数据库(Database或DB):
通用化、综合性的数据集合。
数据是持久的。
数据是按一定的数据模型组织、描述和存储。
数据是集成的。
数据是共享的。
基本概念
数据库管理系统(DBMS: DataBase Management System):
是处于数据库和数据库用户之间的一层软件(应用程序集合),用户利用DBMS可以创建和管理数据库。
基本概念
数据库管理系统(DBMS: DataBase Management System):
仓库
仓库管
理人员
仓库用户
DBMS
数据库用户
DB
基本概念
数据库管理系统(DBMS)的功能
数据定义功能。
数据操纵功能。
数据的安全控制。
并发控制。
数据库的建立和维护功能。
基本概念
数据库系统(Database System--DBS):
数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(Database Administrator--DBA)和用户构成。
DBS = DB + DBMS + APPLICATION + DBA +USER
基本概念
数据库系统:
教师
学生
图书管理系统
.NET
SqlServer
Windows
数据库
数据库
管理员
数据管理技术的产生和发展
什么是数据管理
对数据进行分类、组织、编码、存储、检索和维护。
自第一台计算机出现以来,数据管理技术随着计算机软硬件的发展而不断发展,经历了以下三个阶段:
人工管理阶段(40年代中--50年代中)
文件系统阶段(50年代末--60年代中)
数据库系统阶段(60年代末--现在)
数据管理技术的发展动力
应用需求的推动
计算机硬件的发展
计算机软件的发展
人工管理阶段
时期
40年代中--50年代中
应用需求
用于科学计算,如高阶方程、曲线拟和等。数据量小、结构简单。
硬件水平
外存为顺序存取存储设备, 磁带、卡片、纸带,无直接存取存储设备
软件水平
没有操作系统及数据管理软件
处理方式
批处理
人工管理阶段
特点
数据的管理者:
数据面向的对象:
数据的共享程度:
数据的独立性:
数据的结构化:
程序员根据应用程序安排数据,
数据不保存。
某一应用程序。
无共享、冗余度极大。
不独立,完全依赖于程序。
无结构。
文件系统阶段
时期
50年代末--60年代中
应用需求
计算机不但用于科学计算, 还用于数据管理。
硬件水平
磁盘、磁鼓
软件水平
有文件系统
处理方式
联机实时处理、批处理
文件系统阶段
把需要管理的数据存放在永久性的文件中,同时为了能够操纵这些文件里的数据,系统里还有针对这些文件编写的应用程序。
如银行为了保存储蓄帐户的信息
文件
包括如下应用程序:
1、创建新储蓄帐户的程序
2、对某储蓄帐户的存/取程序
3、查询某储蓄帐户余额的程序
姓名
地址
电话号码
帐号
余额
文件系统阶段
银行如何保存支票帐户的信息
随着银行业务的发展,需求不断增长,新的数据文件和应用程序就会不断地加入到系统中来。
姓名
地址
电话号码
帐号
余额
透支额
文件系统阶段
1、数据冗余和不一致
数据冗余是指相同的信息可能在不同的地方(文件)重复存储。
如某个客户的地址和电话号码既可能在由储蓄帐户记录组成的文件里出现,也可能在由支票帐户记录组成的文件中出现;
数据冗余还可能导致数据不一致,即同一数据的不同副本不一致。
如某个客户地址的更改可能只是在储蓄帐户文件里得到反映而在系统的其他文件中没有得到反映。
文件系统阶段
2、数据访问困难
由于数据使用者的要求不断变化,需要不断地增加和修改程序才能满足新的要求。
如银行的高级行政管理人员今天可能需要储蓄帐户中余额不少于1000元的客户清单,明天又可能需要所有居住地在东昌府区的客户清单。
文件系统阶段
3、数据的约束问题
例如银行储蓄帐户的余额永远不会低于某个预定的值10元。
开发者通过在不同的应用程序中加入适当的代码来体现系统中的这些约束。
但当新的约束加入系统时,很难通过修改程序来体现这些新的约束。
文件系统阶段
4、原子性问题
假设要从A帐户转5000元到B帐户,很可能从A帐户减去的5000元钱还没来得及存入B帐户,系统就死机了。
这就造成了数据的不一致。显然,为了保证数据状态的一致性,这里的借、贷两个操作要么都发生要么都不发生,也就是说,转帐这个操作必须是原子的--它要么全部发生要么根本不发生(具有不可分割性)。
文件系统阶段
特点
数据的管理者:
数据面向的对象:
数据的共享程度:
数据的独立性:
数据的结构化:
文件系统,数据可长期保存。
某一应用程序 。
共享性差、冗余度大。
独立性差,数据的逻辑结构
改变必须修改应用程序
记录内有结构,整体无结构。
数据库管理阶段
时期
60年代末以来
应用需求:
大规模数据管理,计算机管理的数据量大,数据关系复杂,数据共享性要求强
硬件水平:
大容量磁盘
软件背景
有了专门的数据管理软件—数据库管理系统(DBMS)
处理方式
联机实时处理,分布处理,批处理
数据库管理阶段
特点
数据的管理者:
数据面向的对象:
数据的共享程度:
数据的独立性:
数据的结构化:
DBMS,可以长期保存。
面向全组织,面向现实世界。
共享性高。
高度的物理独立性和一定的
逻辑独立性。
整体结构化。
数据库管理阶段
物理独立性
物理独立性指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。
逻辑独立性
逻辑独立性指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变
人工管理阶段
文件系统阶段
应用程序1
应用程序2
应用程序n
数据库系统阶段
数据1
数据2
数据n
文件
系统
物理文件1
物理文件2
物理文件n
数据库
管理系统
数据库
数据库系统的特点
特点
数据结构化。
数据的共享性高,冗余度低,易扩充。
数据的高独立性。
数据由DBMS统一管理和控制。
数据模型
模型
利用模型对事物进行描述是人们在认识改造世界过程中广泛采用的一种方法,如图纸、汽车模型、飞机模型等。
模型可更形象的更直观的揭示事物的本质特征,使人们对事物有一个更全面深入的认识,从而帮助人们更好地解决问题。
是否在开发数据库系统时也可以利用模型来帮助我们完成数据库设计工作呢?如果可以,我们利用何种模型呢?
模型
张三,李四,数学,英语,语文。张三选修了数学和语文,李四选修了数学和英语。
现实世界:客观存在的世界。一个事物可以有许多特征,现实世界中的事物及其联系由人们感官感知的。
第一次抽象
学生:学号、姓名、院系。
课程:课程号、课程名、学分。
一个学生可以选修多门课程,一门课程也可以被多个学生选修。
现实世界中的事物及其联系,经过人们头脑的分析、归纳,抽象形成为信息。对这些信息进行记录、整理、归类和格式化后就构成了信息世界。
学生
课程
选修
模型
第二次抽象
通过表的形式在计算机中存储数据
机器世界:数据化了的信息世界称之为机器世界。所谓信息的数据化,就是将信息用字符和数值表示,即转换为能用计算机处理的数据。
s01
张三
化工学院
s02
李四
机械学院
k01
数学
2
k02
语文
2
k03
英语
2
s01
k01
s01
k02
s02
k01
s02
k03
模型
客观对象的抽象过程---两步抽象
现实世界
信息世界
机器世界
概念化
形式化
用户
计算机
概念模型
数据模型
概念模型
概念模型用于信息世界的建模
为了设计一数据库系统,首先需要对这一系统所涉及到的现实世界中的各种事物及事物之间的联系有一个全面的清晰的认识。
概念模型可以帮助我们对各种事物及事物之间的联系有一个全面的清晰的认识。
概念模型的用途
是现实世界到机器世界的一个中间层次
是数据库设计的有力工具
数据库设计人员和用户之间进行交流的语言
概念模型
信息世界中的基本概念
实体:客观存在并可以相互区别的事物。
属性:实体所具有的某一特性
码:唯一标识实体的属性集
域:属性的取值范围
实体型:用实体名及其属性集来抽象和刻画同类实体。学生(学号,姓名,性别,年龄,系,入学时间)
实体集:同型实体的集合
联系:
概念模型
联系(Relationship) :
现实世界中事物内部以及事物之间的联系在信息世界中反映为实体型内部的联系和实体型之间的联系
三类联系
一对一
一对多
多对多
概念模型
一对一联系(1:1)
对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然。
男人与女人间的夫妻联系
男人
女人
夫妻
1
1
实体型A
实体型B
联系名
1
1
概念模型
一对多联系(1:n)
对于实体集A中的每一个实体,实体集B中有n个(n>=0)实体与之联系,反之,对于实体集B中的每一个实体,实体集A中至多有一个实体与之联系,则称实体集A与实体集B之间有一对多联系。
班级与学生间的隶属联系
班级
学生
隶属
1
n
实体型A
实体型B
联系名
1
n
概念模型
多对多联系(m:n)
对于实体集A中的每一个实体,实体集B中有n个(n>=0)实体与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m>=0)与之联系,则称实体集A与实体集B之间有多对多联系。
学生与课程间的选修联系
学生
课程
选修
m
n
实体型A
实体型B
联系名
m
n
概念模型
同一个实体集内部的实体之间也可以存在一对一、一对多、多对多的联系
员工与员工间的领导联系
员工
领导
1
n
概念模型
两个以上的实体型之间也存在一对一、一对多、多对多的联系。
工程(x1,x2)、供应商(g1,g2,g3)、材料(l1,l2,l3)之间的供应联系(多对多)
供应商
工程
供应
m
n
材料
p
x1
g1
l1
x1
g2
l1
x1
g1
l2
x1
g2
l2
x2
g1
l1
x2
g2
l1
x2
g1
l2
概念模型
概念模型的表示方法
实体-联系方法(E-R方法)
于1976年提出
用E-R图来描述现实世界的概念模型
E-R方法也称为E-R模型
概念模型
E-R图
用长方形表示实体型,在框内写上实体名。
用椭圆形表示实体的属性,并用无向边把实体与其属性连接起来。
用菱形表示实体间的联系,菱形框内写上联系名。
用无向边把菱形分别与有关实体连接,在无向边旁标上联系的类型。
若实体之间联系也有属性,则把属性和菱形也用无向边连接上。
学生
课程
选修
学号
姓名
性别
年龄
课号
学分
课名
成绩
m
n
概念模型
设计E-R图的过程
首先确定实体型:确定有多少个实体型及相应的实体名
确定联系:各实体型之间是否有联系,是何种联系及相应的联系名
连接实体型和联系,组合成E-R图
确定实体型和联系的属性
确定实体型的码
概念模型
在物资管理中,多个供应商为多个工程供应多种零件,一种零件可以保存在多个仓库中,一个仓库中可保存多种零件,一个仓库有多名员工值班,,一个员工只能在一个仓库中工作,一个仓库中的员工由一个员工负责管理。画出该物资管理系统的E-R图。
概念模型
供应商、项目、零件、仓库、员工
供应商
工程
零件
供应
m
n
p
仓库
库存
m
n
职工
工作
m
1
领导
1
n
供应商
项目
零件
仓库
职工
供应量
库存量
供应
存放
工作
领导
仓库号
面积
电话号
零件号
名称
规格
单价
描述
项目号
预算
开工日期
供应商号
姓名
地址
电话号码
账号
m
n
p
m
n
1
n
1
n
概念模型
一个系统的E-R图不是唯一的,强调不同的侧面作出的E-R图可能有很大不同。
模型
客观对象的抽象过程---两步抽象
现实世界
信息世界
机器世界
概念化
形式化
用户
计算机
概念模型
数据模型
数据模型
数据模型用于机器世界的建模
直接描述数据库中数据的逻辑结构,
描述数据在计算机中的物理存储方式,
同时定义如何对数据进行操作。
数据模型
数据模型的组成要素
数据结构,表达和实现实体以及实体间联系
数据操作:对数据库中的数据允许执行的操作集合,数据模型还要定义这些操作的确切含义、操作符号、操作规则(如优先级)、实现操作的语言
数据完整性约束:完整性规则的集合,规定数据库状态及状态变化所应满足的条件,以保证数据的正确性和相容性。
数据模型
目前常用的数据模型有:
层次模型(Hierarchical Model)
网状模型(Network Model)
关系模型(Relational Model)。
这三种数据模型的根区别在于用不同的方式表达实体之间联系。
层次模型用“树结构”来表示实体之间的联系;
网状模型是用“图结构”来表示实体之间的联系;
关系模型是用“二维表”来表示实体之间的联系。
关系模型
关系模型由IBM公司的于1970年在论文“大型共享系统的关系数据库的关系模型”中首次提出。
关系型数据库管理系统当前已成为数据库管理系统的主流。现在广泛使用的DBMS如Oracle、Sybase、Informix、DB2、SQL Server、Access、Fox系列数据库等都是RDBMS 。
关系模型是最重要的一种数据模型,是目前主要采用的数据模型,也是本书的重点。
关系模型的数据结构
关系模型的数据结构
关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
关系模型的数据结构
学号
姓名
性别
年龄
籍贯
9801
张明
男
20
江苏
9802
刘红
女
19
山东
9803
王明
女
20
北京
9839
张立
男
18
陕西
学生
关系名
关系
元组(行)
属性(列)
码
男
女
域
分量
学生(学号、姓名、性别、年龄、籍贯)
属性名
关系模式:
关系模型的数据结构
学生、系、系与学生之间的一对多联系:
学生(学号,姓名,系号)
系 (系号,系名,办公地点)
系
学生
属于
1
n
学号
姓名
98001
张飞
98002
李丽
系号
系名
办公地点
x01
数学
11#楼
系号
x01
x01
关系模型的数据结构
学生、课程、学生与课程之间的多对多联系:
学生(学号,姓名)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
课程号
课程名
学分
k01
数学
2
k02
化学
4
k03
物理
4
学号
课程号
成绩
98001
K01
59
98001
K02
89
98002
K01
63
98002
K03
98
学生
课程
选课
m
n
成绩
学号
姓名
98001
张飞
98002
李丽
关系模型的数据结构
关系必须是规范化的,满足一定的规范条件
最基本的规范条件:关系的每一个分量必须是一个不可分的数据项。
关系模型的数据操作
查询、插入、删除、更新
数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合
存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”
关系模型的完整性约束
实体完整性
参照完整性
用户自定义完整性
关系模型的存储结构
表以文件形式存储
有的DBMS一个表对应一个文件(MYSQL)
有的DBMS多个表对应一个文件(SQLServer)
关系模型的优缺点
优点
建立在严格的数学概念的基础上(集合论)
数据结构简单、清晰,用户易懂易用
实体和各类联系都用关系来表示。
对数据的检索结果也是关系。
关系模型的存取路径对用户不透明
具有更高的数据独立性,更好的安全保密性
简化了程序员的工作和数据库开发建立的工作
缺点
存取路径对用户不透明导致查询效率往往不如非关系数据模型
为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度
回顾
学生、系、系与学生之间的一对多的隶属联系。
学号
姓名
98001
张飞
98002
李丽
系号
系名
地点
x01
数学
11#楼
系号
x01
x01
系
学生
隶属
1
n
学号
地点
系号
姓名
系名
学号
姓名
系号
系名
地点
98001
张飞
x01
数学
11#楼
98002
李丽
x01
数学
11#楼
×
关系模式:
学生(学号,姓名,系号)
系(系号,系名,办公地点)
回顾
课程号
课程名
学分
k01
数学
2
k02
化学
4
k03
物理
4
学号
课程号
成绩
98001
K01
69
98001
K02
89
98002
K01
63
98002
K03
98
学号
姓名
98001
张飞
98002
李丽
学生
课程
选修
m
n
成绩
学号
学分
课程号
姓名
课程名
学生(学号,姓名)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
数据库系统结构
数据库系统结构
可以从多种不同的角度考查数据库系统的结构。
从数据库最终用户的角度看,数据库系统的结构分为单用户结构、主从式结构、分布式结构、客户/服务器结构、浏览器/应用服务器/数据库服务器结构,这是数据库系统外部的体系结构。
从数据库管理系统(DBMS)的角度看,数据库系统通常采用三级模式结构,这是数据库系统内部的体系结构。
外部的体系结构
单用户结构
整个数据库系统(应用程序、DBMS、数据库)装在一台计算机上,为一个用户独占,不同机器之间不能共享数据。
外部的体系结构
主从式结构
一个主机带多个终端的多用户结构
数据库系统包括应用程序、DBMS、数据库,都集中存放在主机上,所有处理任务都由主机来完成
各个用户通过主机的终端并发地存取数据库,共享数据资源
外部的体系结构
分布式结构
数据库中的数据在逻辑上是一个整体,但物理地分布在计算机网络的不同结点上。
网络中的每个结点都可以独立处理本地数据库中的数据,执行局部应用。
同时也可以处理多个异地数据库中的数据,执行全局应用。
外部的体系结构
客户/服务器结构
网络中某个(些)结点上的计算机专门用于执行DBMS功能,称为数据库服务器,简称服务器(Server)。
其他结点上的计算机安装用户的应用系统,称为客户机(Client)。
内部的体系结构(三级模式结构)
模式(Schema):
数据库中全体数据的逻辑结构和特征的描述。
实例(Instance):
模式的一个具体值称为模式的一个实例。
模式
实例
类型
值
内部的体系结构(三级模式结构)
学生
课程
选修
m
n
成绩
学号
学分
课程号
姓名
课程名
学生(学号,姓名)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
内部的体系结构(三级模式结构)
学生关系模式
课程关系模式
选修关系模式
数据库模式
SNO
SNAME
SNO
CNO
GRADE
CNO
CNAME
S01
张三
S02
李四
S03
王五
S01
C01
90
S01
C02
85
S02
C03
41
S03
C01
60
C01
语文
C02
数学
C03
英语
数据库模式实例
S(SNO, SNAME)
C(CNO, CNAME, CREDIT)
SC(SNO, CNO, GRADE)
内部的体系结构(三级模式结构)
模式反映的是数据的结构及其联系,同一个模式可以有很多实例,模式是相对稳定的;
而实例反映的是数据库某一时刻的状态,是相对变动的。
内部的体系结构(三级模式结构)
数据库的三级模式结构是指数据库系统有外模式、模式和内模式三级构成
内部的体系结构(三级模式结构)
模式(也称逻辑模式)
数据库中全体数据的逻辑结构和特征的描述
所有用户的公共数据视图,综合了所有用户的需求
一个数据库只有一个模式
部门(部门号,部门名,……)
职工(职工号,姓名,部门号,……)
产品(产品号,产品名, ……)
参与(职工号,产品号,天数)
部门
职工
属于
参与
产品
1
n
n
m
天数
内部的体系结构(三级模式结构)
模式的地位:是数据库三级模式结构的中间层
与数据的物理存储细节和硬件环境无关
与具体的应用程序、开发工具及高级程序设计语言无关
部门(部门号,部门名,……)
职工(职工号,姓名,部门号,……)
产品(产品号,产品名, ……)
参与(职工号,产品号,天数)
内部的体系结构(三级模式结构)
外模式(也称子模式或用户模式)
数据库特定用户使用的局部数据的逻辑结构和特征的描述
数据库特定用户的数据视图,是与某一应用有关的数据的逻辑表示
部门(部门号,部门名,……)
职工(职工号,姓名,部门号,……)
产品(产品号,产品名, ……)
参与(职工号,产品号,天数)
人事领导
生产领导
内部的体系结构(三级模式结构)
外模式的地位:介于模式与应用之间
模式与外模式的关系:一对多
外模式通常是模式的子集
一个数据库可以有多个外模式,反映了不同的用户的应用需求。
外模式与应用的关系:一对多
同一外模式也可以为某一用户的多个应用系统所使用,
但一个应用程序只能使用一个外模式。
内部的体系结构(三级模式结构)
内模式(也称存储模式)
是数据物理结构和存储方式的描述
记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储)
索引的组织方式
数据是否压缩存储
数据是否加密
数据存储记录结构的规定
一个数据库只有一个内模式
内部的体系结构(三级模式结构)
三级模式是对数据的三个抽象级别,二级映象在DBMS内部实现这三个抽象层次的联系和转换
外模式/模式映象
模式/内模式映像
内部的体系结构(三级模式结构)
外模式/模式映像
定义外模式与模式之间的对应关系
每一个外模式都对应一个外模式/模式映象
映象定义通常包含在各自外模式的描述中
外模式/模式映像保证了数据的逻辑独立性
当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变
应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
内部的体系结构(三级模式结构)
模式/内模式映像
模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。
数据库中模式/内模式映象是唯一的
该映象定义通常包含在模式描述中
模式/内模式映像保证了数据的物理独立性
当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变
应用程序不受影响,保证了数据与程序的物理独立性,简称数据的物理独立性。
数据库系统的组成
数据库系统的组成
数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(Database Administrator--DBA)构成。
DBS = DB + DBMS + APPLICATION + DBA