数据库原理复习.docx

上传人:b****7 文档编号:16420156 上传时间:2023-07-13 格式:DOCX 页数:29 大小:335.62KB
下载 相关 举报
数据库原理复习.docx_第1页
第1页 / 共29页
数据库原理复习.docx_第2页
第2页 / 共29页
数据库原理复习.docx_第3页
第3页 / 共29页
数据库原理复习.docx_第4页
第4页 / 共29页
数据库原理复习.docx_第5页
第5页 / 共29页
数据库原理复习.docx_第6页
第6页 / 共29页
数据库原理复习.docx_第7页
第7页 / 共29页
数据库原理复习.docx_第8页
第8页 / 共29页
数据库原理复习.docx_第9页
第9页 / 共29页
数据库原理复习.docx_第10页
第10页 / 共29页
数据库原理复习.docx_第11页
第11页 / 共29页
数据库原理复习.docx_第12页
第12页 / 共29页
数据库原理复习.docx_第13页
第13页 / 共29页
数据库原理复习.docx_第14页
第14页 / 共29页
数据库原理复习.docx_第15页
第15页 / 共29页
数据库原理复习.docx_第16页
第16页 / 共29页
数据库原理复习.docx_第17页
第17页 / 共29页
数据库原理复习.docx_第18页
第18页 / 共29页
数据库原理复习.docx_第19页
第19页 / 共29页
数据库原理复习.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库原理复习.docx

《数据库原理复习.docx》由会员分享,可在线阅读,更多相关《数据库原理复习.docx(29页珍藏版)》请在冰点文库上搜索。

数据库原理复习.docx

数据库原理复习

数据库原理

第一章绪论

一、概念与术语

1、概念

(1)数据:

能够输入计算机并能被计算机程序识别和处理的信息集合。

(2)数据库:

数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合。

(3)数据库管理系统(DBMS):

DBMS是数据库系统中对数据进行统一管理和控制的软件系统。

i.数据库定义功能

ii.数据库操纵功能

iii.数据库运行控制功能

iv.数据通信功能

v.支持存取海量数据

(4)数据库系统构成

i.数据库

ii.数据管理系统

iii.数据库应用(DatabaseApplication)

iv.数据库管理员DBA

v.计算机系统平台

2、数据管理及其发展

(1)人工管理阶段

(2)文件管理阶段

i.优点

a)数据可长期保存

b)能存储大量数据

ii.缺点

a)数据冗余度大,数据一致性、完整性难以维持

b)数据与程序缺乏高度独立性

(3)数据库系统阶段

i.数据组织结构化

ii.数据冗余度比较小,易扩充

iii.具有较高的数据与程序之间的独立性

iv.统一的数据控制

二、数据库管理系统的构成

1、DBMS的构成

(1)DBMS输入部分

(2)查询处理程序

(3)事务管理程序

(4)存储管理程序

(5)元数据、数据

2、查询处理器:

把对数据库的操作(查询、更新等)转换成对存储器处理的请求。

3、存储管理器:

控制数据的存储和数据在磁盘与主存之间移动。

4、事务管理器

(1)事务:

一个事务是访问并可能更新数据库数据的一组数据库操作。

(2)事务管理器的任务:

维护日志(logging)、并发控制(加锁Locking等技术)、故障恢复

三、数据库系统的模式结构

1、数据库的模式结构

(1)内模式:

内模式也称存贮模式或物理层。

它描述数据的实际存贮方式。

(2)模式:

模式也称逻辑模式或逻辑层。

它描述数据库所有数据及其联系。

(DBA使用)

(3)外模式:

外模式也称子模式、用户模式或视图层,面向用户。

(4)二级映像

i.外模式/模式映像:

定义了各个外模式与模式之间的对应关系。

ii.模式/内模式映像:

定义了数据逻辑结构与存贮结构之间的对应关系。

2、数据库数据的逻辑独立性和物理独立性

在某一层次上修改该层模式定义而不影响位于上一层模式的能力叫做数据独立性。

(1)外模式/模式映象:

模式改变映象改变外模式不变(数据的逻辑独立性:

局部独立于全局)

(2)模式/内模式映象:

内模式改变映象改变模式不变(数据的物理独立性:

逻辑独立于物理)

四、计算模型

1、C/S模型:

Client-Server

2、B/S模型:

Browser-Server

3、多数据源结构:

OBDC

第二章数据库建模

一、数据库设计步骤

需求分析概念模型数据模型

二、概念模型——E-R图

1、概念建模、E-R模型的基本概念与E-R图表示

(1)实体:

现实世界一个具体或抽象的事物

(2)属性:

用于刻画现实世界事物的特性

(3)实体集:

现实世界具有相同特性事物的集合

(4)域:

属性的取值范围

(5)键码(关键字):

能够唯一识别一个实体的最小的属性集

(6)候选码、主码:

一个实体集有不止一个键码时,这些键码统称候选码

2、实体之间的联系及其表示

(1)两个实体集之间联系的类型

i.一对一

ii.一对多。

iii.多对多

(2)多个实体集之间的联系

(3)同一实体集内,各实体之间的联系

三、子类

1、一般方法

2、多重继承问题

四、弱实体集

1、弱实体集及其联系

(1)弱实体集:

组成一个实体集键码属性中的一部份(或者全部),必须来自其它实体集的键码属性,这样的实体集称为弱实体集。

(2)给弱实体集提供键码属性的实体集,与弱实体集之间的联系,必须是单值的(一对多或一对一)。

2、多元联系的连接实体集表示:

多元联系的连接实体集是一个弱实体集。

五、对约束的建模

1、约束:

现实世界的实际需求

2、约束的类型

(1)键码(或称关键字)约束

(2)单值约束

(3)参照完整性约束

(4)用户定义完整性约束

(5)域的约束

3、键码(或称关键字)约束

(1)必须保证一个实体集至少有一个键码(称为实体完整性约束!

)。

(2)若一个实体集存在多个键码,DB设计者可以任意指定一个键码做为主码。

(3)E-R图中必须标明主码。

4、单值约束

(1)属性的单值约束

i.除了构成主码的属性之外,其他属性任何时候最多有一个值(可为空)

ii.构成主码的属性任何时候必须有一个值(不为“空”)

(2)联系的单值约束(1:

1或1:

n):

E-R图中用菱形并带“箭头”的连线表示!

5、参照完整性约束:

反映现实世界不同事物之间的存在约束

(1)参照完整性:

E-R图中,对于从E到F的多对一联系的参照完整性约束,指:

对于E中当前存在的一个实体e,F上必须存在一个相对应的实体f。

(2)参照完整性的表示

六、E-R图设计原则

1、忠实性:

设计必须以现实世界为唯一依据。

2、避免冗余:

即,“一事一地”原则。

现实世界中的一个事物,在一个数据库中只表达一次。

3、尽量简单:

属性、实体集和联系能不用就不用,能合并就合并。

4、选择合适的事物类型:

仅当现实世界一个事物需要进一步刻划它的特性时,才选择实体集和属性集合表示该事物。

第三章关系数据模型

一、数据模型概述

1、数据模型三要素

(1)数据结构:

数据库数据,以及数据之间的联系。

(2)数据操作:

数据库对象允许执行操作的集合。

(3)数据的约束条件:

数据库完整性规则的集合。

i.规定数据及其联系所受到的制约。

ii.限制数据库状态,以及状态的变化,以保证数据库数据的正确、有效、相容。

2、一些主要的数据模型

层次模型、网状模型、关系模型、面向对象模型、对象-关系模型

二、关系模型的基本概念

1、术语

(1)关系:

一个关系就是一张命名的二维表。

(2)属性:

表的一列称为表的一个属性,列的名字称为属性名。

(3)域:

属性取值的范围。

(关系的属性域总是简单域。

i.简单域:

域中元素都是原子的(不可再分的)。

ii.组合域:

域中元素是可再分的。

(4)元组:

关系的一行叫一个元组。

(5)元组分量:

关系中元组的属性值。

(6)关系的键码(或称:

候选码、码)、主属性:

能够唯一标识一个元组的最少属性(或属性组),称为关系的键码,简称为码。

i.键码的特性:

唯一性、最小性

ii.当一个关系有不止一个键码时,也把键码称为候选码。

iii.构成键码(或候选码)的属性称为主属性,而其它属性称为非主属性。

(7)主码

i.主码由键码构成,一个关系必须有(且只能有)一个主码。

ii.若一个关系有多个键码,则必须指定一个键码做为关系的主码。

(8)全码:

若一个关系的键码由关系的所有属性构成,则这样的键码称为全码。

(9)超码:

一个关系中,能够唯一标识一个元组的属性(或属性组),称为该关系的超码。

2、关系模式与关系实例的概念及特点

(1)关系模式:

关系名、关系属性集合。

关系模式是对关系的描述,是关系的“框架”,相对稳定。

(2)关系实例:

一个关系的当前元组的集合,称为关系实例,相对可变化。

(真实数据)

(3)关系数据库模式:

若干个关系模式集合,构成了一个关系数据库模式。

(4)关系的性质

i.基于某一关系模式的关系是随时间变化的。

(元组数量或属性取值是可变的)

ii.一个关系中,在任何时候都不能同时出现取值相同的两个元组。

(关系是元组的集合!

iii.一个关系的不同元组,上下无序。

iv.一个关系的不同列的先后次序无关紧要。

v.元组各分量必须是不可再分的。

(属性的域必须是简单域)。

三、从概念模型(E-R图)到关系数据模型的转换

1、转换一般实体集:

把E-R图的一个实体集转换成一个关系模式,实体集的属性和主码转换成关系模式的属性和主码。

2、转换E-R图的联系

(1)一般原则:

为联系建立一个关系模式。

(2)一对一

(3)一对多

(4)多对多

(5)一元递归联系

(6)多元联系

3、子类实体集的转换

(1)E-R方法:

每个实体集对应一个关系模式。

(2)OO方法:

每一个对象类创建一个关系模式。

(3)“空”值法:

每一个实体对应关系的一个元组。

与特定实体无关的属性,置“空”值(Null)。

4、弱实体集的转换

(1)键码由自身的键码属性以及弱实体集所依赖的那些实体集的键码共同构成。

(2)联系无须处理。

第四章关系代数运算

一、关系代数运算

1、关系代数运算的特点

(1)抽象的关系操作语言

(2)运算对象和运算结果都是关系

2、关系代数运算的分类

(1)二元集合运算:

并∪、差-、交∩、笛卡尔乘积×

(2)一元运算:

选择σ、投影Π

(3)连接运算:

(4)命名运算(一元运算):

ρ

3、关系代数运算

(1)二元运算

i.并兼容:

若两个关系的属性个数相同,且对应属性的域也相同。

ii.并运算:

R∪S(关系R和S必须是并兼容的!

iii.差运算:

R-S

iv.交运算:

R∩S

v.笛卡尔乘积运算:

两个属性个数分别是m、n,元组个数分别为k1、k2的关系R和S,它们的笛卡尔乘积是一个关系,该关系属性个数为m+n、元组个数为k1·k2,记为R×S

(2)一元运算

i.选择(行):

从一个关系R中选出满足条件表达式F的元组,构成一个新关系,记为σF(R)。

ii.投影(列):

从一个关系R中选出属性(组)A,构成一个新关系,记为ПA(R)。

(3)连接运算

i.

θ

一般连接(θ-连接):

关系R和关系S的笛卡尔积中,满足AθB条件的所有元组。

R⋈S

ii.自然连接:

两个关系在同名属性上进行等值连接的运算。

记为:

R⋈S

(相同的属性列,无须添加连接条件,并且在结果中消除重复的属性列)

(4)命名运算

i.ρs(R):

把关系R名字命名为S。

(属性名不变)

ii.ρS(A1,…,An)(R):

把关系R的名字命名为S,并且把S的属性依次命名为A1,…,An

4、关系代数运算结果的保存

(1)线性符号规则

i.每一步运算结果赋予一个命名的关系模式。

ii.最后一步的运算结果必须赋予关系Answer

iii.每一步可以进行一个或几个运算

二、关系代数运算举例

第五章关系数据库语言SQL

一、SQL概述

1、SQL语言使用的三种表:

基本表、查询表、视图表

(1)基本表:

实际存在的表。

即,基本表是实表。

DBMS保存并维护基本表的数据和元数据。

(2)查询表:

用于存放查询的中间结果,以及查询结果的表。

查询表是临时表。

查询表的数据和元数据都是“临时”的。

(3)视图表:

简称:

视图。

它是由基本表或者其它视图表“导出”的表。

视图表是“虚”表。

视图本身没有独立存在的数据。

2、SQL语句概述

(1)数据定义:

创建(删除/修改)表、视图、索引

(2)查询语句

(3)数据更新:

INSERT/DELETE/UPDATE

二、数据定义

1、创建、删除与修改基本表

(1)创建基本表

CREATETABLE<表名>(

<列名><数据类型>[列完整性约束]

[,<列名><数据类型>[列完整性约束]

[,<表完整性约束>]

(2)SQL数据类型

i.INTEGER:

四个字节整数

ii.DECIMAL(p[,q])或NUMERIC(p[,q]):

十进制数共P位,小数点后占q位,5~17字节。

iii.REAL/FLOAT:

实数

iv.CHARACTER(n)或CHAR(n):

字符串

v.VARCHAR(n):

变长字符串

vi.DATETIME:

日期时间型,八个字节

(3)修改基本表——修改表结构

ALTERTABLE<表名>

ALTERCOLUMN<列名>{<新数据类型>}|

ADDCOLUMN{<新列名><数据类型>[列完整性约束]}[,...n]|

DROPCOLUMN<列名>[,...n]

(4)删除基本表

DROPTABLE<表名>

2、创建和删除索引

(1)关于数据库索引

i.能够加快给定属性值的查询响应。

ii.增加数据更新操作的系统开销。

(2)创建数据库索引

CREATE[UNIQUE][CLUSTERED]INDEX<索引名>ON<表名>(

<列名>[ASC|DESC]

[,<列名>[ASC|DESC]]...

(3)删除索引:

DROPINDEX<索引名>

三、查询

1、查询语句格式

SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]···

FROM<表名或视图名>[,<表名或视图名>]···

[WHERE<条件表达式>]

[GROUPBY<列名1>[HAVING<条件表达式>]]

[ORDERBY<列名2>[ASC|DESC][,<列名3>[ASC|DESC]]···]

2、单表查询

(1)查所有学生的所有属性值:

SELECT*FROMStudent

(2)查找学生姓名,出生年份,所在系:

SELECTSname,2006–SageASYear,SdeptFROMStudent

(3)查所有选过课的学生(“自动”消去重复的元组):

SELECTDISTINCTSnoFROMSC

(4)查找计算机系、年龄不大于19岁的学生学号,姓名,年龄

SELECTSno,Sname,SageFROMStudentWHERE(Sage<=19)AND(Sdept=‘CS’)

(5)找出年龄介于19和22的学生学号,姓名,出生年份

SELECTSno,Sname,2006–SageFROMStudentWHERESageBETWEEN19AND22

(6)找计算机系95级所有同学的学号,姓名(字符串匹配)

SELECTSno,SnameFROMStudentWHERESnoLIKE‘95%’

(7)找出姓名的第二个字是“庆”的学生学号,姓名

SELECTSno,SnameFROMStudentWHERESnameLIKE‘_庆%’

(8)找选了课,但至今没有考试成绩的学生学号,课号(空值查询)

SELECTSno,CnoFROMSCWHEREGradeISNULL

(9)找出2004年8月31日以后开课的课程号(使用日期型数据类型)

SELECTCnoFROMCourseWHERECdate>‘08/31/2004’

(10)查0305050同学的考试总分(聚集函数)

SELECTSUM(Grade)FROMSCWHERESno=’0305050’

(11)查询并统计选过课的学生人数:

SELECTCOUNT(DISTINCTSno)FROMSC

(12)查询各门课程号,以及各课程选课人数。

SELECTCno,COUNT(Sno)FROMSCGROUPBYCnoORDERBYCnoDESC

(GROUPBY要和聚合函数一起使用)

(13)查选修了3门以上课程的学生学号(使用HAVING子句)

SELECTSnoFROMSCGROUPBYSnoHAVINGCOUNT(*)>3

(首先,按照GROUP子句的要求,对查询中间结果进行“分组”。

对于

(1)中的分组结果,按照HAVING短语指定的“条件表达式”,进行“筛选”,得到查询结果。

(14)查学生“0302003”的平均考分:

SELECTAVG(Grade)FROMSCWHERESno=’0302003’

(15)查03级、1号课程的考试最高分

SELECTMAX(Grade)FROMSCWHERE(SnoLIKE‘03%’)AND(Cno=’1’)

3、多表查询与连接查询

(1)多表查询的一般方法:

找出学生基本情况和考试成绩

SELECTStudent.Sno,Sname,Sdept,GradeFROMStudent,SCWHEREStudent.Sno=SC.Sno

(2)连接表达式及其应用

i.连接表达式的一般形式:

FROMjoin_table1join_typejoin_table2[ON<连接条件表达式>]

ii.join_type

a)自然连接:

NATURALJOIN

b)内连接:

JOIN(应有ON子句)

c)笛卡尔积:

CROSSJOIN(不应有ON子句)

d)外连接

i.全外连接:

NATURALFULLOUTERJOIN

ii.左外连接:

NATURALLEFTOUTERJOIN

iii.右外连接:

NATURALRIGHTOUTERJOIN

(3)自身连接:

例:

找出每一门课的先修课的先修课

SELECTFIRST.Cno,SECOND.CpnoFROMCourseASFIRSTJOINCourseASSECONDONFIRST.Cpno=SECOND.Cno

4、嵌套查询

(1)(带IN谓词的子查询)查找与“刘晨”在同一个系的学生学号、姓名、系。

SELECTSno,Sname,SdeptFROMStudentWHERESdeptIN(

SELECTSdeptFROMStudentWHERESdept=’刘晨’

(2)(带ANY或ALL谓词的子查询)找出比IS系至少一名学生年龄小的其他系学生名单。

SELECTSname,Sage,SdeptFROMStudentWHERESage

SELECTDISTINCTSageFROMStudentWHERESdept=‘IS’

)ANDSdept<>‘IS’ORDERBYSageDESC

查询比IS系所有学生年龄都小的其他各系学生姓名,年龄,系名。

SELECTSname,Sage,SdeptFROMStudentWHERESage

SELECTSageFROMStudentWHERESdept=‘IS’

)ANDSdept<>‘IS’ORDERBYSageDESC

(3)(带EXISTS谓词的子查询——相关查询)找出选修了1号课程的所有学生姓名。

SELECTSnameFROMStudentWHEREEXISTS(

SELECT*FROMSCWHERECno=‘1’ANDSC.Sno=Student.Sno

5、集合查询:

就是对几个查询块的结果集进行并(UNION)、交(INTERSET)、差运算(EXCEPT)。

四、数据更新

1、插入数据:

在表中增加元组数据

INSERTINTO<表名>[(<属性列1>[,<属性列2>]…)VALUES(<常量1>[,<常量2>]…)

2、修改数据:

更改属性取值

UPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>]…[WHERE<条件>]

3、删除数据:

删去表的元组数据

DELETEFROM<表名>[WHERE<条件>]

五、视图(视图是虚表)

1、视图的作用

(1)简化用户的操作

(2)对重构数据库提供了一定程度的逻辑独立性

(3)对机密数据提供安全保护

2、创建视图

CREATEVIEW<视图名>[(<列名>[,<列名>]…)]AS<查询子句>

3、删除视图:

DROPVIEW<视图名>

4、查询视图:

和查普通表相同

5、视图的更新:

有的可以更新,有的不能更新

第六章SQL中的数据约束

一、SQL数据约束概述

1、数据约束的作用:

实现数据库数据的完整性、实现数据库的主动服务

2、数据完整性分类

(1)实体完整性:

键码约束、单值约束。

(2)参照完整性:

外码约束。

(3)用户定义完整性:

定义在属性、元组和关系上的约束。

二、SQL的键码约束和单值约束

1、主码和单值约束的说明

(1)主码约束:

PRIMARYKEY

(2)单值约束:

UNIQUE

2、主码约束和单值约束的维护

(1)当对表进行插入、修改操作时,DBMS将进行主码约束或单值约束的检查。

(2)主码属性任何时候不得为空。

三、SQL中的参照完整性约束

1、参照完整性约束与外码约束的说明

关系R2中,任一元组在外码FK上的取值:

或者等于R1中某一元组主码(PK1)的值,或者为空。

FOREIGNKEY(Sno)REFERENCESStudent(Sno)ONxxx[NOACTION|CASCADE|NULL]

2、参照完整性的维护:

ON[操作][方式名称]

(1)缺省策略(NOACTION):

拒绝任何破坏参照完整性的更新(删、插、改)操作

(2)级联策略(CASCADE):

系统必须“连带”地删、改参照关系中外码所在的元组或外码属性值。

(3)置空值策略(NULL):

系统把参照关系中对应外码属性的值置为“空”(NULL)。

四、SQL中基于属性和元组的约束

1、基于属性的非空约束和CHECK约束

(1)非空约束:

NOTNULL

(2)CHECK约束

2、SQL中基于元组的约束

第七章关系数据库设计理论

一、函数依赖的基本概念

1、函数依赖基本概念

(1)函数决定(XY):

不存在任意两个元组属性X的结果相同,属性Y的结果不同的情况

(2)完全函数依赖:

如果XY,且对X的任何一个真子集X’,都有X’

Y,则称Y对X完全函数依赖,记作:

X-f->Y

(3)部分函数依赖:

存在X的真子集X’,X’Y,记作:

X-p->Y

(4)传递函数依赖:

在R(U)中,如果X→Y,Y

X(Y不包含于X),Y→Z,则称Z传递函数依赖于X,记为X-t->Z

(5)非平凡的函数依赖:

若X→Y,且Y不包含于X,则称X→Y是非平凡的函数依赖。

(右侧没有左侧的内容)

(6)如果K是关系模式R(U)的一个键码,则必有:

KU

二、关系模型的规范化

1、1NF:

关系模式的各属性域是“原子”的。

(无重复的列,关系数据库都是1NF)

2、2NF:

属性完全依赖于主键[消除部分子函数依赖]

(1)定义:

若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。

(2)理解:

若R∈2NF,则R中不存在非主属性对码的部份函数依赖。

(3)结论:

所有单关键字的数据库表都符合第二范式。

3、3NF:

属性不依赖于其它非主属性[消除传递依赖]

(1)定义:

如果关系模式R(U,F)是2NF的,且不存在键码X、属性组Y以及非主属性Z(Z不包含于

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2