主要内容
第1章 绪论
第2章 关系模型
第3章 结构化查询语言-SQL 第4章 并发控制 第5章 数据库设计
第1章 绪论
基本概念
数据库(Database,DB):长期储存在计算机内、有组织的、可共享的数据集合。
数据库管理系统(Database Management System,DBMS):是位于用户与操作系统之间的一层数据管理软件。常用的大型数据库管理系统包括DB2、SQL SERVER、Oracle、Sybase、Informix等。
外模式(External Schema)也称子模式或用户模式,是把现实世界中的信息按照不同用
户的观点抽象为多个逻辑数据结构,每个逻辑结构称为一个视图,描述了每个用户关心的数据,即数据库用户看见和使用的局部数据的逻辑结构和特征的描述。数据库外模式是面向用户的数据库模式。
数据库三级模式体系结构的划分,有利于保持数据库的数据独立性。 数据的逻辑独立性
1 / 7
数据库系统
数据的物理独立性
数据模型:是现实世界数据特征的抽象。
概念数据模型:按用户的观点对数据和信息建模。如:实体联系模型
逻辑数据模型:按计算机系统的观点对数据建模。如:层次模型,网状模型,关系模型 数据仓库
数据仓库是一个面向主题的、集成的、不可更新的、随时间不断变化的数据集合,用以支持企业或组织的决策分析处理。
分布式数据库系统是逻辑上属于同一系统,物理上分布在用计算机网络连接的多个场地(或叫结点)上的数据集合,且每个场地具有独立处理和自治能力,至少能参加一个全局应用,并由分布式数据库管理系统统一管理。 分布式数据库系统的特点: 数据独立性;
中和自治相结合的控制机制 可控冗余
事务管理的分布性 存取效率
第2章 关系模型
关系模型:用二维表的形式表示实体和实体间联系的数据模型
关系数据模型由关系数据结构、关系操作和完整性约束三部分组成。
数据完整性:是指保护数据库中数据的正确性、有效性和相容性,防止不合语义的
数据进入数据库。 关系模型符合1NF。
第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项。 2NF:不存在非主属性部分依赖于侯选键的关系模式 3NF :不存在非主属性传递依赖于侯选键的关系模式
超键(Superkey):在一个关系中,能唯一标识元组的属性集。
键Key(候选键candidate key):一个属性集能惟一标识元组,又不含有多余属性。 主键(primary key):关系模式中用户正在使用的候选键称主键。用作主键的列不可
以为NULL,在行记录中不可以重复,可以将几个列合并起来用作主键。 外键(Foreign Key):是指关系R中的一组属性A不是关系R的主键,但A是另一个关
系S的主键,则属性组A就是关系R的外键。 例:有一个读者关系,其主键为借书证号。另有一个借阅关系,其属性有借书证号、
总编号、借书日期等,主键为总编号,则借书证号为借阅关系的 。 关系代数:用关系的运算来表达查询要求的方式。 并、差、交 广义笛卡尔积
投影:是从关系R中选择出若干属性列组成新的关系。 选择:在关系R中选择满足给定条件的元组。
连接:从两个关系的笛卡儿积中选取属性间满足一定条件的元组。 除法
2 / 7
数据库系统
第3章 结构化查询语言-SQL
SQL(Structured Query Language)是结构化查询语言,包括查询、定义、操纵和控
制四个部分,是一种功能齐全的数据库语言。目前已成为关系数据库的标准语言。 SQL功能
数据查询DQL(Data Query Language )
关键动词 SELECT
数据定义DDL(Data Definition Language) CREATE, DROP, ALTER
数据操纵DML(Data Manipulation Language) 数据控制DCL(Data Control Language )
INSERT, UPDATE, DELETE GRANT, REVOKE
1.定义基本表
CREATE TABLE <表名>(<列名><数据类型> [列级完整性约束条件][,<列名> <数据类型>
[列级完整性约束条件]...)[,<表级完整性约束条件>]; 设有一个关系数据库,有三个基本表,表结构如下: STUDENT ( 学号 姓名 年龄 性别 学院号 )、 SC(学号 课程号 成绩)、
COURSE (课程号 课程名 学时数 课程类型) 创建COURSE表的SQL语句
Create Table COURSE(课程号 char(6) not null primary key,课程名 char(30),学时数
smallint,课程类型char(10)) 查询
SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]... FROM <表名或视图名>[,<
表名或视图名>] ... [WHERE <条件表达式>] [GROUP BY <列名1>[HAVING <条件表达式>]] [ORDER BY <列名2> [ASC|DESC]];
GROUP:将结果按<列名1>的值进行分组,该属性列值相等的元组为一个组,每个
组产生结果表中的一条记录。
如果GROUP子句带HAVING短语,则只有满足指定条件的组才予输出。 如果有ORDER子句,则结果表还要按<列名2>的值的升序或降序排序。 使用聚合函数
COUNT([DISTINCT|ALL] *) 统计元组个数
COUNT([DISTINCT|ALL] <列名>) 统计一列中值的个数 SUM([DISTINCT|ALL] <列名>) 计算一列值的总和 AVG([DISTINCT|ALL] <列名>) 计算一列值的平均值 MAX([DISTINCT|ALL] <列名>) 求一列值中的最大值 MIN([DISTINCT|ALL] <列名>) 求一列值中的最小值
3 / 7
数据库系统
客户表CUSTOMERS(cid,cname,city,discnt)
产品表PRODUCTS( pid,pname,city,quantity,price) 代理商表AGENTS(aid,aname,city,percent)
订单表ORDERS (ordno,month,cid,aid,pid,qty,dollars) 1)查询居住在纽约的客户的cid值和名字。
Select cid,cname from CUSTOMERS where city='New York'; 2)查询没有通过代理商a01订购过商品的顾客的cid值。
Select cid from customers c where not exists (select * from orders o where c.cid=o.cid and aid='a01')
客户表CUSTOMERS(cid,cname,city,discnt)
产品表PRODUCTS( pid,pname,city,quantity,price) 代理商表AGENTS(aid,aname,city,percent)
订单表ORDERS (ordno,month,cid,aid,pid,qty,dollars) 3)查询满足条件为某个代理商所订购的某种产品的总量超过500的产品ID、代理商
ID和总量。
Select pid,aid,sum(qty) as TOTAL from orders group by pid,aid having sum(qty) > 500; 更新数据 格式为:
UPDATE <表名>
SET <列名1>=<表达式1>[,<列名2>=<表达式2>][ ,...n ] [WHERE <条件>];
客户表CUSTOMERS(cid,cname,city,discnt)
产品表PRODUCTS( pid,pname,city,quantity,price) 代理商表AGENTS(aid,aname,city,percent)
订单表ORDERS (ordno,month,cid,aid,pid,qty,dollars)
例:修改表PRODUCTS的数据,把存放在城市Duluth或Dallas的所有产品的价格提
高20%。
Update products set price=1.2*price where city in ('duluth','dallas')
数据库的安全性控制是指保护数据以防止未经授权或不合法的使用造成的数据泄露、
更改或破坏。
保证数据库系统的安全性措施: 1)用户标识和身份鉴定; 2)存取控制; 3)定义视图; 4)审计; 5)数据加密。 一、授权
grant 表级权限 on {表名 | 视图名} to {用户 [,用户]… | public} [with grant option] with grant option表示获得权限的用户可以把权限再授予其它用户 回收权限
revoke 表级权限 on {表名 | 视图名} from {用户 [,用户]… | public} 例:授予用户SQLTest对数据库Sales的CUSTOMERS表的列cid、cname 的查询权限。 grant select on customers(cid,cname) to sqltest
视图是从一个或几个基本表(或视图)导出的表,它是一个虚表,只存放视图的定
4 / 7
数据库系统
义,而不存放视图对应的数据。 优点:
1)简化用户的操作;
2)使用户能从多种角度看待同一数据;
3)对重构数据库提供了一定程度的逻辑独立性; 4)能够对机密数据提供安全保护。
索引(INDEX)是对数据库表中一列或多列的值进行排序的一种结构。建立索引是加快查询速度的有效手段,用户可以根据应用环境的需要,在基本表上建立一个或多个索引,以提供多种存取路径,加快查找速度。
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,用户可以用SQL语句逐一从游标中获取记录,并赋值给主变量,交由主语言进一步处理。
一个SQL语句原则上可产生或处理一组记录,而程序语言一次只能处理一个记录,为此必须协调两种处理方式,这是通过使用游标机制来解决的。
存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数来执行它。存储过程有以下的优点: 重复使用。 提高性能。存储过程在创建的时候就进行了编译,将来使用的时候不用再重新编译。 减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
安全性。参数化的存储过程可以防止SQL注入式的攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
函数是由一个或多个 Transact-SQL 语句组成的子程序,可用于封装代码以便重新使用。
存储过程和函数的区别:
存储过程可以返回参数,而函数只能返回值或者表对象。
存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
函数在系统启动时就进行编译并加载,存储过程在调用时才加载。 触发器是一种特殊的存储过程,它可以在对一个表上进行INSERT、UPDATE和DELETE操作中的任一种或几种操作时被自动调用执行。
第4章 并发控制
日志文件是用来记录事务对数据库的更新操作的文件,在数据库恢复中其着非常重
要的作用,可以用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质恢复。 并发控制
为了充分利用数据库资源,发挥数据库共享资源的特点,应该允许多个用户并行地
存取数据库,但会产生多个用户并发存取同一数据的情况,需要对并发操作进行控制,以防止数据库的不一致性。
并发控制机制的好坏是衡量数据库管理系统性能的重要标志之一。并发控制是以事
务为单位进行的。
封锁技术 (Locking)是并发控制的主要技术,所谓封锁就是当一个事务在对某个数据
对象(可以是数据项、记录、数据集以至整个数据库)进行操作之前,先请求系统对其
5 / 7
数据库系统
加锁,成功加锁之后该事务就对该数据对象有了控制权,只有该事务对其进行解锁之后,其他的事务才能更新它。
DBMS普遍采用封锁方法保证调度的正确性。
死锁:在数据库并发控制中,两个或多个事务处于等待状态。
事务是数据库的逻辑工作单位,是用户定义的一组操作序列。在关系数据库中,一个事务可以是一组SQL语句或整个程序。事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。事务应具有原子性、一致性、隔离性和持续性。 原子性:事务必须是原子工作单元,对于其数据操作,要么全都执行,要么全都不执行。
一致性:事务的执行结果必须使数据库从一个一致性状态变到另一个一致性状态。 隔离性:一个事务的执行不能被其它事务干扰。
持续性(持久性):一旦事务成功提交,其对数据库的更新操作将永久有效,即使数据库发生故障。
并发操作带来的数据不一致性包括三类:丢失更新问题、不可重复读问题和读“脏”数据问题。 (1)丢失修改
两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。 (2)不可重复读
不可重复读是指事物T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
(3)读“脏”数据
读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。 避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。 数据库运行中可能产生三种故障:
事务故障:违反完整性约束引起事务夭折; 系统故障:软硬件错误断电引起事务夭折; 介质故障:磁盘损坏部分或全部数据丢失。
事务故障和系统故障影响事务的正常执行,介质故障破坏数据库数据。 数据库系统故障常用的恢复方法。
答:DBMS一般都使用数据转储和登录日志文件实现数据库系统的恢复功能。针对不同的故障,使用不同的恢复策略和方法。例如,对于事务故障的恢复是由DBMS自动完成的,对用户是透明的。
对于系统故障,也是由DBMS完成恢复操作,包括撤销(UNDO)故障发生时未完成的事务,重做(REDO)已完成的事务。DBA的任务是重新启动系统,系统启动后恢复操作就由DBMS来完成了。 对于介质故障,则恢复方法是由DBA重装最新的数据库后备副本和转储结束时刻的日志文件副本,然后DBA启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。
日志文件是用来记录事务对数据库的更新操作的文件,日志文件主要有2种格式:以记录为单位的日志文件和以数据块为单位的日志文件,不同数据库系统采用的日志文件格式并不相同。日志文件在数据库恢复中有着非常重要的作用,可以用来进
6 / 7
数据库系统
行事务故障恢复和系统故障恢复,并协助后备副本进行介质恢复。
第5章 数据库设计
数据库设计
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及
其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
7 / 7
数据库设计包括六个主要步骤:
1)需求分析:了解用户的数据需求、处理需求、安全性及完整性要求; 2)概念设计:通过数据抽象,设计系统概念模型,一般为E-R模型;
3)逻辑结构设计:设计系统的模式和外模式,对于关系模型主要是基本表和视图; 4)物理结构设计:设计数据的存储结构和存取方法,如索引的设计; 5)系统实施:组织数据入库、编制应用程序、试运行; 6)运行维护:系统投入运行,长期的维护工作。
因篇幅问题不能全部显示,请点此查看更多更全内容