第一章
1.①数据(Data):是数据库中存储的基本对象②数据库(Database,简称DB):是长期储存在计算机内、有组织的、可共享的大量数据的集合。③数据库管理系统(DBMS)
:位于用户与操作系统之间的一层数据管理软件。
是基础软件,是一个大型复杂的软件系统
④数据库系统(Database System,简称DBS):在计算机系统中引入数据库后的系统构成
2.数据模型的组成要素:①数据结构
②数据操作
③完整性约束条件
3.最常用的数据模型:①层次模型②网状模型③关系模型
4.Ⅰ关系模型:关系数据库系统采用关系模型作为数据的组织方式在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
Ⅱ关系数据模型的数据结构:①关系:
一个关系对应通常说的一张表②元组:
表中的一行即为一个元组
③属性:表中的一列即为一个属性,给每一个属性起一个名称即属性名④主码:
表中的某个属性组,它可以唯一确定一个元组
⑤域:
属性的取值范围。
分量
元组中的一个属性值。
Ⅲ关系模式
:对关系的描述关系名(属性1,属性2,…,属性n)
学生(学号,姓名,年龄,性别,系,年级)关系必须是规范化的,满足一定规范条件
最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,
Ⅳ关系数据模型的操纵与完整性约束数据操作是集合操作,操作对象和操作结果都是关系
查询、插入、删除、更新
数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合
存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”关系的完整性约束条件
实体完整性
参照完整性
用户定义的完整性
Ⅴ关系数据模型的优缺点①优点
建立在严格的数学概念的基础上:集合代数。概念单一
实体和各类联系都用关系来表示
对数据的检索结果也是关系
关系模型的存取路径对用户透明
具有更高的数据独立性,更好的安全保密性
简化了程序员的工作和数据库开发建立的工作②缺点
存取路径对用户透明导致查询效率往往不如非
关系数据模型
为提高性能,必须对用户的查询请求进行优化
增加了开发DBMS的难度
5.数据库系统的三级模式结构:①模式(也称逻辑模式)
数据库中全体数据的逻辑结构和特征的描述
所有用户的公共数据视图,综合了所有用户的需求②外模式(也称子模式或用户模式)
数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
数据库用户的数据视图,是与某一应用有关的数据的逻辑表示③内模式(也称存储模式)
是数据物理结构和存储方式的描述
是数据在数据库内部的表示方式
6.二级映像:①外模式/模式映像:模式:描述的是数据的全局逻辑结构
外模式:描述的是数据的局部逻辑结构
②模式/内模式映像:
模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。
7.数据库系统的组成:①硬件平台
②软件:包括数据库管理系统应用程序
③数据库
④人员:包括数据库管理员、程序员和一般用户
第二章
1.关系模式的含义:关系模式是型
,关系是值
,关系模式是对关系的描述
定义关系模式关系模式可以形式化地表示为:
R(U,D,DOM,F)
R 关系名
U 组成该关系的属性名集合
D 属性组U中属性所来自的域
DOM 属性向域的映象集合
F 属性间的数据依赖关系集合
一般情况下,简写为R(U)
2.基本的关系操作:①并(Union)
设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为R∪S。形式定义如下:
R∪S≡{t | t∈R ∨t∈S},t是元组变量,R和S的元数相同。
两个关系R和S若进行并运算,则它们必须是相容的:
关系R和S必须是同元的,即它们的属性数目必须相同。
对?i,R的第i个属性的域必须和S的第i个属性的域相同。
②交(intersection)
定义
所有同时出现在两个关系中的元组集合。
R∩S ={ r | r∈R ∧r∈S }
交运算可以通过差运算来重写:
R∩S = R -(R -S)
R和S必须同类型(属性集相同、次序相同,但属性名可以不同)3.关系的三类完整性约束的含义:①实体完整性规则
若属性A是基本关系R的主属性,则属性A不能取空值
例:
SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE) POSTGRADUATE:
主码(假设研究生不会重名)
不能取空值②参照完整性规则
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R 中每个元组在F上的值必须为:
或者取空值(F的每个属性值均为空值)
或者等于S中某个元组的主码值
③用户定义的完整性:针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能
4.(53页)㈠传统的集合运算:并,差,交,笛卡尔积
①差:R和S
具有相同的目n
相应的属性取自同一个域R - S
仍为n目关系,由属于R而不属于S的所有元组组成
?R -S = { t|t?R∧t?S }
②笛卡尔积:严格地讲应该是广义的笛卡尔积
R: n目关系,k1个元组
S: m目关系,k2个元组
R×S
列:(n+m)列元组的集合
元组的前n列是关系R的一个元组
后m列是关系S的一个元组
行:k1×k2个元组
R×S = {tr ts |tr ?R ∧ts?S }㈡专门的关系运算:自然连接是一种特殊的等值连接
两个关系中进行比较的分量必须是相同的属性组
在结果中把重复的属性列去掉
自然连接的含义
R和S具有相同的属性组B
R ∞S = { tr⌒ts | tr ∈R∧ts∈S∧tr[B] = ts[B] }
一般的连接操作是从行的角度进行运算。
自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。
第三章
1.SQL的特点:①综合统一②高度非过程化③面向集合的操作方式
④以同一种语法结构提供多种使用方式⑤语言简洁,易学易用
2.基本表的定义和删除
㈠定义基本表
CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ] …
[,<表级完整性约束条件> ] );
如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。
㈡删除基本表DROP TABLE <表名>[RESTRICT| CASCADE];RESTRICT:删除表是有限制的。
欲删除的基本表不能被其他表的约束所引用
如果存在依赖该表的对象,则此表不能被删除
CASCADE:删除该表没有限制。
在删除基本表的同时,相关的依赖对象一起删除
3.索引的建立:㈠建立索引的目的:加快查询速度
谁可以建立索引
DBA 或表的属主(即建立表的人)
DBMS一般会自动建立以下列上的索引
PRIMARY KEY
UNIQUE
谁维护索引
DBMS自动完成?
使用索引
DBMS自动选择是否使用索引以及使用哪些索引语句格式CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
[例14]为学生-课程数据库中的Student,Course,SC三个表建立索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
Student表按学号升序建唯一索引
Course表按课程号升序建唯一索引
SC表按学号升序和课程号降序建唯一索引
4.Ⅰ插入数据:两种插入数据方式①插入元组②插入子查询结果可以一次插入多个元组
㈠插入元组:语句格式
INSERT
INTO <表名> [(<属性列1>[,<属性列2 >…)]
V ALUES (<常量1> [,<常量2>] …)
功能
将新元组插入指定表中INTO子句
属性列的顺序可与表定义中的顺序不一致
没有指定属性列
指定部分属性列
V ALUES子句
提供的值必须与INTO子句匹配
值的个数
值的类型
[例1]将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。
INSERT
INTO Student (Sno,Sname,Ssex,Sdept,Sage)
V ALUES ('200215128','陈冬','男','IS',18);
[例2]将学生张成民的信息插入到Student表中。
INSERT
INTO Student
V ALUES (‘200215126’,‘张成民’,‘男’,18,'CS'); ㈡插入子查询结果语句格式
INSERT
INTO <表名> [(<属性列1> [,<属性列2>…)]
子查询;
功能
将子查询结果插入指定表中
INTO子句(与插入元组类似)
子查询
SELECT子句目标列必须与INTO子句匹配
值的个数
值的类型
[例4] 对每一个系,求学生的平均年龄,并把结果存入数据库。
第一步:建表
CREA TE TABLE Dept_age
(Sdept CHAR(15) /* 系名*/
Avg_age SMALLINT);/*学生平均年龄*/
第二步:插入数据
INSERT
INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,A VG(Sage)
FROM Student
GROUP BY Sdept;
Ⅱ修改数据:语句格式
UPDA TE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]…
[WHERE <条件>];
功能
修改指定表中满足WHERE子句条件的元组SET子句
指定修改方式
要修改的列
修改后取值
WHERE子句
指定要修改的元组
缺省表示要修改表中的所有元组三种修改方式
1. 修改某一个元组的值
2. 修改多个元组的值
3. 带子查询的修改语句
[例5] 将学生200215121的年龄改为22岁
UPDA TE Student
SET Sage=22
WHERE Sno=' 200215121 ';
[例6] 将所有学生的年龄增加1岁
UPDA TE Student
SET Sage= Sage+1;
[例7] 将计算机科学系全体学生的成绩置零。
UPDA TE SC
SET Grade=0
WHERE 'CS'=
(SELETE Sdept
FROM Student
WHERE Student.Sno = SC.Sno);
Ⅲ删除数据:语句格式
DELETE
FROM <表名>
[WHERE <条件>];
功能
删除指定表中满足WHERE子句条件的元组
WHERE子句
指定要删除的元组
缺省表示要删除表中的全部元组,表的定义仍在字典中三种删除方式
1. 删除某一个元组的值
2. 删除多个元组的值
3. 带子查询的删除语句
例8] 删除学号为200215128的学生记录。
DELETE
FROM Student
WHERE Sno= 200215128 ';
例9] 删除所有的学生选课记录。
DELETE
FROM SC;
[例10] 删除计算机科学系所有学生的选课记录。
DELETE
FROM SC
WHERE 'CS'=
(SELETE Sdept
FROM Student
WHERE Student.Sno=SC.Sno);
5.定义视图:㈠建立视图[例2]建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= 'IS'
WITH CHECK OPTION;
对IS_Student视图的更新操作:
修改操作:自动加上Sdept= 'IS'的条件
删除操作:自动加上Sdept= 'IS'的条件
插入操作:自动检查Sdept属性值是否为'IS'
如果不是,则拒绝该插入操作
如果没有提供Sdept属性值,则自动定义Sdept为'IS'
基于多个基表的视图
[例3] 建立信息系选修了1号课程的学生视图。
CREATE VIEW IS_S1(Sno,Sname,Grade)
AS
SELECT Student.Sno,Sname,Grade
FROM Student,SC
WHERE Sdept= 'IS' AND
Student.Sno=SC.Sno AND
https://www.sodocs.net/doc/df17249502.html,o= '1';基于视图的视图
[例4] 建立信息系选修了1号课程且成绩在90分以上的学生的视图。
CREA TE VIEW IS_S2
AS
SELECT Sno,Sname,Grade
FROM IS_S1
WHERE Grade>=90;带表达式的视图
[例5] 定义一个反映学生出生年份的视图。
CREATE VIEW BT_S(Sno,Sname,Sbirth)
AS
SELECT Sno,Sname,2000-Sage
FROM Student;
分组视图
[例6] 将学生的学号及他的平均成绩定义为一个视图假设SC表中“成绩”列Grade为数字型
CREAT VIEW S_G(Sno,Gavg)
AS
SELECT Sno,A VG(Grade)
FROM SC
GROUP BY Sno;不指定属性列
[例7]将Student表中所有女生记录定义为一个视图
CREATE VIEW F_Student(F_Sno,name,sex,age,dept)
AS
SELECT *
FROM Student
WHERE Ssex=‘女’;
缺点:
修改基表Student的结构后,Student表与F_Student视图的映象关系被破坏,导致该视图不能正确工作。
㈡删除视图
语句的格式:
DROP VIEW <视图名>;
该语句从数据字典中删除指定的视图定义
如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除
删除基表时,由该基表导出的所有视图定义都必须显式地使用DROP VIEW语句删除
[例8]删除视图BT_S:DROP VIEW BT_S;
删除视图IS_S1:DROP VIEW IS_S1;
拒绝执行
级联删除:
DROP VIEW IS_S1 CASCADE;
6.更新视图:[例12] 将信息系学生视图IS_Student中学号200215122的学生姓名改为“刘辰”。
UPDA TE IS_Student
SET Sname= '刘辰'
WHERE Sno= ' 200215122 ';
转换后的语句:
UPDA TE Student
SET Sname= '刘辰'
WHERE Sno= ' 200215122 ' AND Sdept= 'IS';
[例13] 向信息系学生视图IS_S中插入一个新的学生记录:200215129,赵新,20岁INSERT
INTO IS_Student
V ALUES(‘95029’,‘赵新’,20);转换为对基本表的更新:INSERT
INTO Student(Sno,Sname,Sage,Sdept)
V ALUES(‘200215129 ','赵新',20,'IS' );
[例14]删除信息系学生视图IS_Student中学号为200215129的记录DELETE
FROM IS_Student
WHERE Sno= ' 200215129 ';转换为对基本表的更新:DELETE
FROM Student
WHERE Sno= ' 200215129 ' AND Sdept= 'IS';
更新视图的限制:一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新
例:视图S_G为不可更新视图。
UPDA TE S_G
SET Gavg=90
WHERE Sno= ‘200215121’;
这个对视图的更新无法转换成对基本表SC的更新允许对行列子集视图进行更新
对其他类型视图的更新不同系统有不同限制
7.视图的作用:①视图能够简化用户的操作:能够为复杂的查询构造视图;能够隐藏数据的复杂性;而有效地简化查询操作
②视图使用户能以多种角度看待同一数据
③视图对重构数据库提供了一定程度的逻辑独立性:通过构造视图,能够在用户和应用程序与实际的基本表之间提供更好的数据独立性.④视图能够对机密数据提供安全保护:能够将对数据库的访问限制在一定的范围内;有利于数据的保密⑤适当的利用视图可以更清晰的表达查询第四章
计算机系统的三类安全性问题:①技术安全类:采用一定安全的硬件、软件来实现对数据的保护②
管理安全类:管理不善造成的问题③
政策法律类:建立相关的法律。
第六章
1.函数依赖的含义:设R(U)是一个属性集U上的关系模式,X 和Y是U的子集。
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。
2.范式:符合某一种级别的关系模式的集合