数据库复习档案
第一章
1. 数据时存储在某种媒体上能够被识别的物理符号,包括数据内容和数据形式两方面。
2. 信息时已经加工处理成特定形式的数据。
3. 数据处理分为三类:数据管理、数据加工、数据传播。
4. 数据库(DB)是一个按数据结构来存储和管理数据的计算机软件系统。
5. 数据库方法与文件方法相比,具有两个明显的进步特征:数据库中的数据具有数据整体性、数据库中的数据具有数据共享性。
6. 数据库管理系统(DBMS)是专门用来管理数据库的计算机系统软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作,并完成对数据完整性、安全性进行控制的功能。
7. 数据库应用系统(DBAS)、数据库管理员(DBA)、数据库系统(DBS)
8. 数据库发展:
| 存储器 | 软件 | 程序与数据关系 | 特点 |
人工管理 | 无可随机访问和存储设备 | 无系统的数据管理软件 | 无独立性是个整体 | 存在大量重复数据 |
文件管理 | 有可随机访问和存储设备 | 文件系统可直接管理数据 | 具有一定的独立性 | 数据保存在外存可多次存储 |
数据库系统 | 有可随机访问可存数设备 | 数据库系统管理文件和数据 | 高度独立性和安全性 | 数据独立共享便于管理 |
9. 数据库中最小的存取单位是数据项。
10. 数据的安全性控制:指保护数据库,以防止不合法的使用造成的数据泄漏和破坏和更改。
11. 数据的完整性控制:指为保护数据的正确性、有效性和相容性,防止不符合语义的输入或输出所采用的控制机制。
12. 一个数据库系统包括:计算机硬件、数据库、数据库管理系统、应用程序系统和数据库管理员。(简单:硬件、软件、人员)
13. 数据定义:DDL 数据操纵功能:DML(宿主型、自主型)
14. 数据库的三级模式:
逻辑模式:也称模式,对数据的整体逻辑结构和特征的描述。一个数据库只有一个模式。
外模式:也称子模式,对各个用户或程序所涉及到的数据的逻辑结构和数据特征的描述。外模式可有多个。子模式DDL用来描述局部逻辑结构。
内模式:也称存储模式或物理模式,是对数据的内部表示或底层描述。
15. 二级映像技术:
外模式/模式:定义并保证了外模式和数据模式之间的对应关系,保证了数据的逻辑独立性。
模式/内模式:定义并保证数据的逻辑模式与内模式之间的对应关系,保证了数据的物理独立性。
第二章
16. 概念模型是对信息世界的管理对象、属性以及联系等信息的描述形式。概念模型不依赖计算机以及数据库管理系统。也称信息模型。
17. 概念模型基本概念:
对象和实例:对象是实体集遵循其实体型抽象的结果,对象中的每一个具体的尸体的抽象称为该对象的实例。
属性:实体的某一个方面特征的表示。
码、主码、次码:码也称关键字,能够唯一标识一个实体。码可以是属性或属性组。实体集中不能唯一标示试题属性的叫次码。
域:属性的取值范围。
18. 实体集之间的联系可分为三种:
一对一联系(1:1)、一对多(1:n)、多对多(n:n)
19. E-R模型的表示方法:矩形-实体、椭圆-属性、菱形-实体之间的联系、直线-连接实体和属性,实体和联系。
20. 数据模型具有数据结构、数据操作和完整性约束三个要素。
21. 常见的数据模型有:
层次模型:结构分明,查找方便。拓展性小,冗余度高,代表:IBM的IMS。
网状模型:描述显示世界的关系很直观容易,存储效率高,但是过于复杂。代表:DBTG。
关系模型:在关系模型中,数据的结构式一张二维表,它由行和列组成。
元组:表中的一行称为一个元组,或记录。
属性:表中的一列称为一个属性。
22. 关系的完整性包括:实体完整性、参照完整性和用户定义的完整性。
23. 关系模型中的数据联系时靠数据冗余实现的,不可能完全消除数据冗余。
第三章
24. 数据库设计的基本方法:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护阶段。
25. 系统需求分析:(自顶向下,逐层分解)。
26. 数据字典是各项数据描述的集合,它是进行详细的数据收集和数据分析后所获得的主要成果。
27. 概念结构的设计:第一部是抽象数据,并设计局部视图。第二步是集成局部视图,得到全局的概念结构。
28. 数据抽象方法:分类、聚集和概括。
第四章
29. 关系数据库中的关系可以分为三种:
基本表:关系数据库中世纪存在的表,是实际存储数据的逻辑表示。
视图表:由基本表或其他视图表导出的表,视图表是为了数据查询方便、数据处理简便及数据安全要求而设计的数据虚表,不对应实际存储的数据。
查询表:是指查询结果表或查询中生成的临时表。一般不再重复使用,可以认为是关系数据库的派生表。
30. 关系操作包括
数据查询:数据检索、统计、排序、分组、以及用户对信息的需求等。
数据维护:数据增加、删除、修改等数据自身更新的功能。
数据控制:是为保证数据的安全性和完整性而采用的数据存取控制以及并发控制等。
31. 五种基本运算:并、差、选择、投影和乘积。
32. 关系模型中的三种完整性约束:实体完整性、参照完整性、用户定义完整性。
33. 关系代数的运算对象是关系,运算结果也是关系。关系代数使用的运算符有四类:
集合运算符:并、差、交、广义笛卡尔积
专门的关系运算符:选择、投影、连接、除。
比较运算符:大于、大于等于、小于、小于等于、等于、不等于。
逻辑运算符:非、与、或
第五章
34. SQL:结构化查询语言,是关系数据库的标准语言。
35. 按实现的功能来分SQL:
数据定义语句:CREATE/DROP/ALTER
数据操纵语句:SELECT/INSERT/UPDATE/DELETE
数据控制语句:GRANT/REVOKE
36. SQL中一个关系对应一个基本表;一个或多个表对应一个存储文件;一个表可以带若干个索引,索引页可以存放在存储文件中。
37. 用SQL建立一个学生课程表:
CREATE TABLE 学生 (
学号 CHAR(5) NOT NULL UNIQUE,
姓名 CHAR(8) NOT NULL,
年龄 SMALLINT,
性别 CHAR(2),
所在系 CHAR (20),
DEFAULT C1 20 FOR 年龄,
CONSTRAINT C2 CHECK (性别 IN (‘男’,’女’))
);
CREATE TABLE 课程(
课程号 CHAR(5) PRIMARY KEY,
课程名 CHAR(20),
先行课 CHAR(5)
);
CREATRE TABLE 选课(
学号 CHARE(5) ,
课程名 CHAR(20),
成绩 SMALLINT,
CONSTRAINT C3 CHECK(成绩 BETWEEN 0 AND 100),
CONSTRAINT C4 PRIMARY KEY (学号,课程号),
CONSTRAINT C5 FOREIGN KEY (学号) REFERENCES 学生(学号),
CONSTRAINT C6 FOREIGN KEY (课程号) REFERENCES 课程 (课程号)
);
38. 列级完整性的约束条件:
NOT NULL/NULL;
UNIQUE约束,唯一性约束
DEFAULT约束 默认值约束 DEFAULT<约束名><默认值>FOR<列名>
CHECK约束 检查约束 CONSTRAINT <约束名>CHECK(<约束条件表达式>)
39. 列级完整性约束条件
UNIQUE约束:唯一性约束。要求列组中不能有重复值时使用。
PRIMARY KEY约束: 实体完整性约束。 CONSTRAINT<约束名>PRIMARY KEY[CLUSTERED](<列组>) 其中CLUSTERED为建立<列组>聚簇。
FOREIGN KEY约束:外码和参照表约束。 CONSTRAINT <约束名>FOREIGN KEY(<外码>) REFERENCES <被参照表>(<与外码对应的主码名>)
40. 修改基本表:
ALTER TABLE <表名>
[ADD (<新列名><数据类型>[完整性约束][,…]n)]
[DROP < 完整性约束>]
例如:ALTER TABLE 课程 ADD 学时 SMALLINT;
ALTER TABLE 学生 DROP C1;
41. 删除基本表 DROP TABLE <表名>
42. 索引:CREATE [ UNIQUE] [CLUSTER] INDEX <索引名>
ON<表名> (<列名> [<次序>])
CREATE CLUSTER INDEX 学生姓名 ON 学生 (姓名);
CREATE UNIQUE INDEX 课程号 ON 选课 (学号ASC,课程号 DESC);
删除索引: DROP INDEX<索引名>; DROP INDEX 学生姓名
43. 视图:视图能简化用户的操作、视图机制可以使用户以不同的方式看待同一数据、提供了一定程度上的逻辑独立性。
CREATE VIEW 学生(学号,姓名,性别,年龄,所在系)
AS SELECT SX.学号, SX.姓名, SX.性别, SY.年龄, SY.所在系
FROM SX,SY
WHERE SX.学号 = SY.学号;
视图删除: DROP VIEW 学生
44. 数据查询:
1)求数学系学生的学号和姓名:
SELECT 学号,姓名
FROM 学生
WHERE 所在系 = ‘数学系’;
2)求选修C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列。如果成绩相同则按学号。
SELECT 学号,成绩
FROM 选课
WHERE 课程号 = ‘C1’
ORDER BY 成绩 DESC, 学号 ASC;
3)查询选修C1且成绩在80~90之间的学生学号和成绩。并将成绩乘上系数0.8输出。
SELECT 学号, 成绩*0.8
FROM 选课
WHERE 课程号 = ‘C1’ AND 成绩 BETWEEN 80 AND 90;
4)求数学系或计算机系姓“张”的学生的信息
SELECT *
FROM 学生
WHERE 所在系 IN(‘数学系’,’计算机系’) AND 姓名 LIKE ‘张%’;
45. 连接查询
1) 求选修C1课程且成绩为90分以上的学生学号、姓名成绩
SELECT 学生.学号,姓名,成绩
FROM 学生,选课
WHERE 学生.学号 = 选课.学号 AND 课程号= ‘C1’ AND 成绩>90;
嵌套查询
第七章
46. 1NF的定义:关系模式R,其所有的属性均为简单属性,即每一个属性都是不可再分的,则称R属于第一范式。
47. 2NF的定义:R属于第一范式,且每一个非主属性完全依赖于码,则称R属于第二范式。
48. 3NF的定义:每一个非主属性既不部分函数依赖于码,也不传递函数依赖于码。是一个可用的关系模式应满足的最低范式。
49. BCNF的定义:所有的非主属性对每一个码都完全函数依赖、所有的主属性对每一个不包含它的码也是完全依赖、没有任何属性完全函数依赖于非码的任何一组属性。如果R属于BCNF,R一定属于3NF,但是R属于3NF,R未必属于BCNF。
50. 平凡多值依赖和非平凡的多值依赖
若X→→Y,而Z=φ,则称X→→Y为平凡的多值依赖,否则称X→→Y为非平凡的多值依赖。
多值依赖的性质:
(1)多值依赖具有对称性,若X→→Y,则X→→Z,其中Z=U-X-Y,
(2)多值依赖具有传递性 若X→→Y,Y→→Z, 则X→→Z-Y
(3)函数依赖是多值依赖的特殊情况。若X→Y,则X→→Y。
(4)若X→→Y,X→→Z,则X→→Y≤Z。
(5)若X→→Y,X→→Z,则X→→Y∩Z。
(6)若X→→Y,X→→Z,则X→→Y-Z,X→→Z -Y。
多值依赖与函数依赖的区别:
(1) 有效性
多值依赖的有效性与属性集的范围有关,若X→→Y在U上成立,则在W(X Y≤W≤U)上一定成立;反之则不然,即X→→Y在W(W≤U)上成立,在U上并不一定成立。多值依赖的定义中不仅涉及属性组 X和 Y,而且涉及U中其余属性Z。一般地,在R(U)上若有X→→Y在W(W≤U)上成立,则称X→→Y为R(U)的嵌入型多值依赖。
(2) 若函数依赖X→Y在R(U)上成立,则对于任何Y'∈Y均有X→Y' 成立。多值依赖X→→Y若在R(U)上成立,不能断言对于任何Y'≤Y有X→→Y' 成立。
建立学生选课数据库:
1. 建立学生选课库:
CREATE DATABASE 学生选课库
ON PRIMARY (NAME=学生选课库,
FILENAME = ‘C:/MSSQL/DATA/学生选课.mdf’,
SIZE = 4MB,
MAXSIZE = 6MB,
FILEROWHT = 2MB)
GO
2. 建立学生、课程和选课表
CREATE TABLE 学生(学号 CHAR(10) PRIMARY KEY CLUSTERED,
姓名 CHAR(8),
性别 CHAR(2),
年龄 SMALLINT,
所在系 VARCHAR (50));
CREATE TABLE 课程(课程号 CHAR(10) PRIMARY KEY CLUSTERED,
课程名 VARCHAR(50),
先行课 VARCHAR (50)
);
CREATE TABLE 选课(学号 CHAR(10),
课程号 VARCHAR(50),
成绩 SMALLINT,
CONSTRAINT C1 PRIMARY KEY(学号,课程号),
CONSTRAINT C2 FOREIGN KEY(学号) REFERENCES 学生(学号)
);
3. 建立索引:
CREATE INDEX student_ind ON 学生(学号);
CREATE INDEX class_ind ON 课程(课程号);
CREATE INDEX select_ind ON 选课(学号,课程号);
4. 建立性别规则,默认性别为男,绑定到学生表上。
CREATE RULE value_rule AS @VALUE IN (‘男’,’女’);
CREATE DEFAULT 性别缺省 AS ‘男’;
EXEC sp_bindrule ‘value_rule’,’学生.性别’;
EXEC sp_binddefault ‘性别缺省’,’学生.性别’;
5. 参照完整性约束INSERT和UPDATE触发器
CREATE TRIGGER sc_insert ON 选课
FOR INSERT
AS IF(SELECT COUNT(*)
FROM 学生,inserted,课程
WHERE 学生.学号=inserted.学号 AND 课程.课程号=inserted.课程号)=0
ROLLBACK TRANSACTION;
CREATE TRIGGER sc_update ON 选课
FOR UPDATE
AS IF(SELECT(*)
FROM 学生,updated,课程
WHERE 学生.学号 = updated.学号 AND 课程.课程号=updated.课程号)=0
ROLLBACK TRANSACTION;
6. 建立删除学生记录时,同时也相应删除选课记录的触发器
CREATE TRIGGER delete_all ON 学生
FOR DELETE
AS DELETE
FROM 选课
WHERE 选课.学号 = deleted.学号;
7. 查询各系及学生数,求出多少系,多少学生
SELECT 所在系,COUNT(学号)
FROM 学生
GROUP BY 学生.所在系
COMPUTE COUNT (DISTINCT(所在系))
COMPUTE COUNT (学号) BY所在系;
8. 将学生表和选课表进行内连接,左外连接和右外连接
SELECT *
FROM 学生 INNER JOIN 课程;
SELECT*
FROM 学生 LEFT OUTER JOIN 课程;
SELECT*
FROM 学生 RIGHT OUTER JOIN 课程;
9. 列出学生学号、姓名及学些情况。
SELECT 选课.学号,学生.姓名,
学习情况=CASE
WHEN AVG(成绩)>= 85 THEN ‘好’
WHEN AVG(成绩)>= 70 AND AVG(成绩)<85 THEN ‘较好’
WHEN AVG(成绩)>= 60 AND AVG(成绩)<70 THEN ‘一般’
WHEN AVG(成绩)< 60 THEN ‘较差’
END
FROM 学生选课
WHERE 学生.学号 = 选课.学号
GROUP BY 选课.学号;