张春 发表于 2024-6-15 03:38:59

数据库期末,一篇就够了!【全面】【期末测验】

1. 数据库系统概论

数据库3个特点:永世存储,有构造,可共享
数据库管理技术:

[*] 人工管理:无专门的软件,数据不共享,程序与数据不具有独立性
[*] 文件系统管理:有专门用于管理数据的应用软件(以文件的形式存储在存储装备上),程序与数据具有一定的独立性,但独立性差,数据共享性差,冗余度大
[*] 数据库系统管理
   下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是( A )。
Ⅰ.人工管理阶段 Ⅱ.文件系统阶段 Ⅲ. 数据库阶段
A. 只有Ⅰ B. Ⅰ和 Ⅱ C. 只有Ⅱ D. Ⅱ和Ⅲ
数据库系统的组成:
数据库系统(DBS)包罗:数据库(DB),数据库管理系统(DBMS),应用程序,数据库管理员(DBA),用户
数据库系统的特点:

[*] 数据结构化(数据库系统与文件系统的本质区别)
[*] 数据的共享性高,冗余度低,易扩充
[*] 数据独立性高
[*] 数据由DBMS统一管理和控制
   不是数据库系统的特点是 A 。
A.数据的二级抽象和三级独立性 B.数据共享性
C.数据的结构化 D.数据独立
https://img-blog.csdnimg.cn/direct/af5ab51744534cfba744b5e5006676c4.png
https://img-blog.csdnimg.cn/direct/57f581cbd53c47acb6d3f4b7cd0aeec6.png
2. 数据库系统结构

数据模子的组成元素:

[*]数据结构
[*]数据操纵
[*]完整性约束
数据模子的分类:

[*] 概念模子:信息天下,E-R模子
https://img-blog.csdnimg.cn/direct/69903142bd6c43708fd27108f6f4b1d9.png
实体(矩形),属性(椭圆),接洽(菱形)
接洽:一对一,一对多(班级与门生),多对多(商品与顾客,门生与课程)
[*] 逻辑模子:呆板天下,如层次模子(数据结构是一棵“有向树”),网状模子,关系模子(二维表)
[*] 物理模子:呆板天下,物理存储方式与存取方法
数据库系统的三层模式结构:

[*]外模式(又称子模式、用户模式,可有多个)
[*]概念模式(又称模式,只有一个)
   模式是数据库( C )。
A. 全局物理结构
B. 局部物理结构
C. 全局逻辑结构
D. 局部逻辑结构

[*]内模式(又称存储模式,只有一个)
数据库的二级映像:

[*]外模式/模式映像 (包管逻辑独立性)
[*]模式/内模式映像 (包管物理独立性)
   什么是数据独立性?在数据库系统体系结构中是如何体现的?
1)数据独立性:数据库系统在某一层次模式上的改变不会使它的上一层模式也发生改变
的过程。数据独立性包罗数据的逻辑独立性和物理独立性两种。
2) 一个数据库结构从逻辑上可以分别为三个层次:外部模式(External Schema),概念
模式(Conceptual Schema)和内部模式(Internal Schema),称为数据库系统的三级模式结
构。数据库的三级结构是依赖外模式/模式映像和模式/内模式映像来接洽和相互转换的。正
是这两层映像包管了数据库系统中的数据具有较高的数据独立性,此中外模式/模式映像保
证逻辑独立性,模式/内模式映像包管物理独立性。
3. 关系数据库基础

关系就是表,表不一定是关系
关系的描述称为关系模式 eg:师生关系(西席,门生)
关系数据库:

[*]元组/记载(关系中的每一行数据)
   在门生管理关系数据库中,存取一个门生信息的数据单位是(D)。 A. 文件 B. 数据库 C. 字段 D. 记载

[*]属性/字段(关系中的每一列)
[*]域 (属性的取值范围)
[*]码/关键字/键 (可以唯一表现表中的一个元组,可由一个或多个属性组成) 不能为空值,取值具有唯一性
   关系模子中,一个关键字( C )  
A.可由多个任意属性组成 
B.至多由一个属性组成  
C.可由一个或多个其值能唯一标识该关系模式中任何元组的属性组成
D.以上都不是

[*]主码/主键 (被选中的候选码)一个关系只有一个主码
[*]候选键/候选码:一个关系中的全部码构成候选码
[*]替换键/替换码 (未选中的候选码)
[*]主属性 :包罗在任何一个候选码中的属性
   候选关键字中的属性称为( B )
A.非主属性 B.主属性 C.复合属性 D.关键属性

[*]非主属性:不包罗在任何一个候选码中的属性
[*]组合键:多个属性组合起来才气唯一标识
[*]外码 :与所参照的主码具有相同的域,只能引用所参照主码中的值或者为空值(取值可重复)
   现有如下关系:患者(患者编号,患者姓名,性别,出生日期,所在单位),医生(医生编号,医生姓名,性别,年事,科室,职称),医疗(患者编号,医生编号,诊断日期,诊断结果)。此中,“医疗”关系中的外码有 ( C )  
A.患者编号 B.医生编号
C.患者编号和医生编号      D.医生姓名和患者姓名
    SNO 是 STUDENT 表的主码,目前 STUDENT 表有 20 条记载,则如下查询语句返回的数
量为(单选,选择最正确的答案):(A )
SELECT COUNT(DISTINCT SNO) FROM STUDENT
A:20 B:<20 C:>=20
https://img-blog.csdnimg.cn/direct/878c29b026cd4da59e6314b467851e59.png
关系的完整性:

[*]域完整性 :属性的值域
[*]实体完整性:必须有主码,且主码唯一不为空
[*]参照完整性:外码的取值
   在SQL Server中,表的外键所在列,要么是空值(NULL),要么数据泉源于其参考(引用)的表。( T )

[*]用户定义完整性:符合实际意义或业务规则
   一个人口登记系统要求登记的婴儿的出生日期不能晚于当前日期,这种约束在数据库中
属于(C ):
A:实体完整性约束 B.参照完整性约束 C.用户自定义完整性约束 D.域约束
关系操纵:

[*] 基本运算: ①并②差 ③笛卡尔积 ④投影⑤选择
[*] 传统的集合运算:并、交、差、广义笛卡尔积
并相容性:关系R与关系S属性个数相同,属性对应的域相同,对应属性名不一定相同(若不同,从前一个关系的属性名为准)
https://img-blog.csdnimg.cn/direct/45c84ffc45064b48974d35ca8c90dd2c.png
https://img-blog.csdnimg.cn/direct/a2b737f53aae45199cee17a5e8ce20a1.png
[*] 专门的关系运算:选择、投影、毗连、除
https://img-blog.csdnimg.cn/direct/3f8923bba4b74d21952f967187cdd7f1.png
选择:选符合的行
投影:选符合的列https://img-blog.csdnimg.cn/direct/32545649cb724457860c4802111395c0.png
毗连:在笛卡儿积的结果中选择符合毗连条件的
​ eg: 等值毗连(同名的属性不会归并),自然毗连(同名的属性会归并)
https://img-blog.csdnimg.cn/direct/38a843135e13456299a24398407b0677.png
   关系代数的毗连操纵相当于:(A )
A:先笛卡尔积,再选择 B:先笛卡尔积,再投影 C:先选择,再投影 D:先投影,再
    设有关系R(A,B,C)和S(A,D),与自然毗连R*S等价的关系代数表达式是( A )
A.∏B,C,S.A,D(σR.A=S.A(R×S))
B.σ(R.A=S.A)(R×S)
C. σR.A=S.A (∏B,C,S.A,D (R×S))
D.∏R.A,B,C,D(R×S)
    当一个查询中具有选择和毗连时,查询优化的方法是先实行选择、后实行毗连,因为选择可以先过滤掉无关行,提高服从。( T )
    关于关系代数运算,下面说法错误的是( D )。
A.选择运算是从行的角度进行的运算
B.投影运算是从列的角度进行的运算
C.两个关系分别有 m 个和 n 个属性,两个关系进行笛卡尔积得到的关系有 m+n 个属性
D.关系不能与自己进行笛卡尔积运算
4. 关系数据库标准语言SQL

SQL方言:

[*]SQL Server 的T-SQL
[*]Oracle的PL/SQL
   SQL Server中的编程语言的简称为PL/SQL,也就是Procedural Language SQL的简写。( F )
SQL的功能组件:

[*] DDL:definition定义 create,drop
[*] DML: manipulation操纵 select ,update, delete,insert
[*] DCL: control 控制 grant,revoke,deny
   数据库管理系统能实现对数据库中数据的查询、插入、修改和删除等操纵,这种功能称
为 C 。
A.数据定义功能 B.数据管理功能 C.数据操纵功能 D.数据控制功能
以下面为例解说SQL语法:
留意事项:

[*]sql不区分大小写
[*]sql中全部用单引号,不用双引号
[*]必须切换到英文输入法
--创建学生数据库:
create database 学生

--使用学生数据库
use 学生

--创建学生数据库中的Student表
CREATE TABLE Student (
    --格式:列名 数据类型(长度) 约束,
        Sno char (7) PRIMARY KEY,
        Sname char (10)NOT NULL ,
        Ssex char (2) check(ssex in('男','女')) ,
        Sage tinyint,
        Sdept char (20)
)
--常用数据类型:
--1. char(n)固定长度为n
--2. varchar(n) 可变长度,允许最大长度为n
--3. int 占四个字节
--4 tinyint0~255 占一个字节
--5. float
--6. datetime 日期+时间 eg:1988年1月1日19:23:59

--约束分为:
--1. 主键约束 primary key
--2. 非空约束 not null
--3. check约束
--4. 默认约束 default
--5. 唯一约束 unique
--6. 外键约束 foreign key XX references 表名(xx)


CREATE TABLE Course (
        Cno char (10) PRIMARY KEY ,
        Cname char (20)NOT NULL ,
        Ccredit tinyint,
        Semester tinyint,
)

CREATE TABLE sc (
        sno char (7) NOT NULL ,
        cno char (10) NOT NULL ,
        grade smallint,
        XKLB char (6),
       PRIMARY KEY(sno,cno),
       FOREIGN KEY (cno) REFERENCES Course (Cno),
       FOREIGN KEY (sno) REFERENCES Student (Sno),
       CHECK (grade >= 0 and grade <= 100)
)

go

--向Student表中插入数据:
insert student values('9512101','李勇','男',19,'计算机系')
insert student values('9512102','刘晨','男',20,'计算机系')
insert student values('9512103','王敏','女',20,'计算机系')
insert student values('9521101','张立','男',22,'信息系')
insert student values('9521102','吴宾','女',21,'信息系')
insert student values('9521103','张海','男',20,'信息系')
insert student values('9531101','钱小平','女',18,'数学系')       
insert student values('9531102','王大力','男',19,'数学系')       

insert course values('c01','计算机文化学',3,1)       
insert course values('c02','VB',2,3)
insert course values('c03','计算机网络',4,7)
insert course values('c04','数据库基础',6,6)
insert course values('c05','高等数学',8,2)
insert course values('c06','数据结构',5,4)

insert sc values('9512101','c01',90,'必修')
insert sc values('9512101','c02',86,'选修')
insert sc values('9512101','c06',NULL,'必修')
insert sc values('9512102','c02',78,'选修')
insert sc values('9512102','c04',66,'必修')
insert sc values('9521102','c01',82,'选修')
insert sc values('9521102','c02',75,'选修')
insert sc values('9521102','c04',92,'必修')
insert sc values('9521102','c05',50,'必修')
insert sc values('9521103','c02',68,'选修')
insert sc values('9521103','c06',NULL,'必修')
insert sc values('9531101','c01',80,'选修')
insert sc values('9531101','c05',95,'必修')
insert sc values('9531102','c05',85,'必修')
go
```
https://img-blog.csdnimg.cn/direct/0086e4f364d14e2c9e952a548d2e9e18.png
关系是关系模式在某一个时刻的状态或者内容,关系模式是静态的,稳固的,而关系是动态的,随时间不断变化的,因为关系操纵在不断地更新着数据库中的数据。
https://img-blog.csdnimg.cn/direct/401542e5d5a144e188f2deb93ede782c.png
https://img-blog.csdnimg.cn/direct/b3c032a40e29477a85cf9aedae9174c2.png
https://img-blog.csdnimg.cn/direct/711aa1c3a1224df5857b9639f532e25e.png
https://img-blog.csdnimg.cn/direct/050c929dee0e46ee8d37e5920156d08a.png
https://img-blog.csdnimg.cn/direct/0c62f54a164744c3998c14dda6369bc4.png
https://img-blog.csdnimg.cn/direct/904b754921894b869e0c517f6dcba10a.png
   为在查询结果中去掉重复元组,要在SELECT语句中使用保存字( C )
A.UNIQUE B.COUNT C. DISTINCT D.UNION
    SNAME 为门生姓名,SSEX 为门生性别,SAGE 为门生年事,假设 SAGE 不允许为空且数
据类型为整型,实行下列语句将返回:(D )
SELECT SNAME,SSEX,COUNT(SAGE) FROM STUDENT GROUP BY SSEX
A:各个性别的门生人数 B:各个性别的门生姓名,性别及人数
C:各个性别的门生姓名,性别及年事之和 D:错误消息
    下面哪些 SQL 子句是在正确判断 GRADE 属性取值不为空:(B )
①GRADE !=NULL ②GRADE IS NOT NULL ③NOT GRADE IS NULL ④GRADE NOT IS
NULL
A. ①② B.②③ C.②③④ D.②
https://img-blog.csdnimg.cn/direct/bbdc447a0c9548e0875284fe534a25e3.png
单表查询:select * from 表名
多表查询:

[*]内毗连 innner join (inner可省略)
[*]外毗连 left join, right join , full join
嵌套查询:

[*] 使用in的子查询
https://img-blog.csdnimg.cn/direct/bf10643bf08c49bda301466772921215.png
[*] 使用any ,some,all的查询
https://img-blog.csdnimg.cn/direct/364b4e8e637d4c50a58c778adfe76785.png
[*] 使用exists 的子查询
数据更新:

[*]插入数据
[*]更新数据
[*]删除数据
   若用如下的SQL语句创建了一个表SC:
CREATE TABLE SC
( Sno char(10) NOT NULL,
Cno char(10) NOT NULL,
Score int,
Note char(10))
向SC表实行如下语句时,( B )可以正确被插入。
A. insert into SC values(‘201009’,’111’,60,必修)
B. insert into SC values (‘200823’,’101’,NULL,NULL)
C. insert into SC values (NULL,’103’,80,’选修’)
D. insert into SC values (‘201132’,NULL,86,‘ ’)
获取时间:可用Getdate()
比方
select Sname,Year(getdate())-Sage as 出生年份 from Student
https://img-blog.csdnimg.cn/direct/ffb89e726813452fb983eb0d23f84ca4.png
https://img-blog.csdnimg.cn/direct/596e9bec16234d40ba755ac378c36abc.png
https://img-blog.csdnimg.cn/direct/4bef673ee3104df5a8bff302460d2caa.png
https://img-blog.csdnimg.cn/direct/0b325f2d2f9f47ab80d06f3481256dc6.png
https://img-blog.csdnimg.cn/direct/c09db142555348768baa58b96e3e36a6.png
https://img-blog.csdnimg.cn/direct/c606d249695a4642b482ec4968e057bf.png
视图:删除用drop
   什么是基本表?什么是视图?两者的区别和接洽是什么?采用视图是否能加速查询速度?
为什么?
答案:
基本表是数据库中独立存在的表,在 SQL 中一个关系就对应一张表。
视图是一种数据库对象,是从一个或多个基表或视图中导出的虚表,其本质就是 SQL 查询。
两者的区别在于,基表是实际保存数据的实体,一个(或多个)基本表对应一个存储文件;
视图自己并不存放数据,只存放视图的定义,因此视图只是一个虚表。
两者的接洽在于,视图时在基表之上创建的,它的结构和内容都来自于基表;一个视图可以
对应多个基表,一个基表也可以创建多个视图。视图是基表在逻辑上创建的新的关系。
采用视图不能加速查询速度,因为对视图的查询都将转换成对基表的查询,这一过程称为视
图消解,这个过程会耗费时间,因此相对于对基本的查询,其速度更慢。
create view 视图名
as
https://img-blog.csdnimg.cn/direct/691252576ba7485ca939881e79440730.png
   下面关于视图的说法中,不正确的是( B )
A.视图是外模式
B.使用视图可以加速查询语句的实行速度
C.使用视图可以简化查询语句的编写
D.视图是虚表
    下面关于视图的说法,正确的是:(C )
A.通过视图查询数据比直接使用 SQL 语句从基表查询数据服从更高
B.视图必须基于基表创建,不能基于视图创建视图
C.视图定义中含有 GROUP BY 子句时,不能通过该视图更新数据
D.删除视图的 DDL 语句为:DELETE VIEW 视图
https://img-blog.csdnimg.cn/direct/5d2bf0dfa6564c7082e5e74e4a51c4c9.png
https://img-blog.csdnimg.cn/direct/892314c2c0be4be08d5fde54338e6dd0.png
索引:

[*] 经常用,考虑创建索引
[*] 对于频仍更新的表,索引不能定义太多
[*] 聚集索引一个表只有一个,非聚集索引一个表可以有多个
https://img-blog.csdnimg.cn/direct/a386131c2e634506bcac06e60e49e00c.png
[*] 删除索引用drop
https://img-blog.csdnimg.cn/direct/dff644e3f52745ba8b71fff53acdd40c.png
https://img-blog.csdnimg.cn/direct/890ee7976cef41ccb82e454aea55e2d8.png
https://img-blog.csdnimg.cn/direct/8e66afe4f14c46a8ba5666b11d77bb54.png
https://img-blog.csdnimg.cn/direct/718d074d1cea4b8ca29e7baac6e21153.png
标题:
https://img-blog.csdnimg.cn/direct/b415840ddcc347eea47300d2ea3a4a78.png
   1.查询“计算机科学学院”使用126邮箱(邮箱名末尾为“@126.com”)的门生信息。
解:SELECT *
FROM Student
WHERE Sdept=’计算机科学学院’ and Email LIKE ‘%@126.com’
    2、利用多表毗连技术查询各个院系的门生均匀结果。
解:SELECT Sdept, AVG(Grade)
FROM Student JOIN SC ON Student.Sno=SC.Sno
GROUP BY Sdept
    3、查询 “数据库原理及应用”课程结果精良(大于等于90)的门生学号、姓名,要求使用子查询实现,结果显示门生学号、姓名。
解:SELECT Sno, Sname FROM Student
WHERE Sno IN(SELECT Sno FROM SC WHERE Grade>=90 AND Cno=
(SELECE Cno FROM Course WHERE Cname=’数据库原理及应用’))
    4、将“程序计划基础“课程的学分加1。
解:UPDATE Course
SET Ccredit=Ccredit+1
WHERE Cname=’程序计划基础’
    创建一个名为vwStu的视图,包罗每个门生的学号、姓名及其目前已选修课程的总学分。
解:CREATE VIEW vwStu(学号,姓名,总学分)
AS
SELECT Student.Sno,Sname,sum(Ccredit)
FROM Student JOIN SC ON Student.Sno=SC.Sno
JOIN Course ON Course.Cno=SC.Cno
GROUP BY Student.Sno,Sname
https://img-blog.csdnimg.cn/direct/de9738eda6564bd6b1e93efee250999b.png
5. 关系数据库计划理论

数据依赖的影响:数据冗余度大,更新异常,插入异常,删除异常,但不会查询异常
   关系规范中的删除异常是指
*不该删除的数据被删除*
插入异常是指
*应该插入的数据未被插入*
更新异常:
该更新的数据没有被完全更新
    关系模式中如果存在非主属性对码的部门函数依赖,将导致很多标题,除了:(A )
A.查询异常 B.插入异常 C.删除异常 D.修改异常
https://img-blog.csdnimg.cn/direct/1cf8148d1f234609853c5531a312862b.png

[*] 第一范式(1NF):给的一个关系最基本会满意1NF
[*] 第二范式(2NF): 不存在非主属性部门函数依赖于码
   第二范式是在第一范式的基础上,消除了非主属性对码的部门函数依赖。因此,如果满意码是单个属性,不是组合的属性,那么此时的第一范式,就已经满意第二范式的要求了。( T )
https://img-blog.csdnimg.cn/direct/45217340c7c44b0883f3326d3302b512.png
https://img-blog.csdnimg.cn/direct/e5108f136d7a4bb3aadd95f34bb03c42.png

[*] 第三范式(3NF): 不存在非主属性传递函数依赖于码
[*] BC范式:不存在主属性对非所在码(不包罗本属性的码)的传递与部门依赖(一般有2个及以上候选码时才考虑)
https://img-blog.csdnimg.cn/direct/5e5d9e6216cb4f07a980f292ec4eaefd.png
[*] 第四范式(4NF): 属性之间没有非寻常且非函数依赖的多值依赖
在做这类标题时,找对主码很重要,比方:
https://img-blog.csdnimg.cn/direct/e84b8cff3746444db6a9d9cc6c24f98d.png
   当关系模式R(A,B)已属于3NF,下列说法正确的是( B )
A.它一定消除了插入和删除异常
B.仍存在一定的插入和删除异常
C.一定属于BCNF
D.A和C都是
    门生关系表为Student(学号, 姓名, 年事, 所在学院, 学院所在, 学院电话),主码:学号,此中存在的数据依赖为:(学号)→(姓名, 年事, 所在学院),(所在学院)→(学院所在, 学院电话)。请分析student关系是否满意3NF,如果不满意,其将其优化以满意3NF。
解:
student关系不满意3NF,因为存在传递函数依赖(学号)→(所在学院)→(学院所在,学院电话)
分解为两张表:
门生(学号, 姓名, 年事, 所在学院);学院(学院, 所在, 电话)。
    设有关系模式 R (职工 ID,职工名,项目 ID,项目名,工资)
职工 ID 和项目 ID 具有唯一性,职工 ID 可决定职工名,项目 ID 可决定项目
名,每个职工可参加多个项目,各领一份工资。请分析 R 是否满意第三范式,
并阐明原因;如果不满意第三范式,请将其规范化到满意第三范式。
【参考答案】
(1)上面关系存在如下函数依赖:
职工 ID→职工名,项目 ID→项目名,(职工 ID,项目 ID)→工资
以是关系的主码是(职工 ID,项目 ID),不存在非主属性对码的传递
函数依赖,单存在非主属性对主码的部门函数依赖,因此不满意第二范
式,也就不满意第三范式。
(2)将 R 通过分解为成如下三个关系模式:
R1= (职工 ID,项目 ID, 工资),主码(职工 ID,项目 ID)
R2= (职工 ID,职工名),主码职工 ID
R3= (项目 ID,项目名),主码项目 ID
以上三个关系模式不存在非主属性对码的部门或传递函数依赖,满意第三范式
关系模式的规范化:并不是规范化程度越高越好,偶尔候会适当反规范化来增加冗余,以此来提高查询服从
   在关系数据库的实际应用中,一般认为,规范化程度越高,关系模式就越好。( F )
6. 数据库计划

基本步骤:

[*]需求分析:数据流图
[*]概念结构计划:系统阐明书,E-R图,实体接洽图
[*]逻辑结构计划:系统结构图(模块结构图),关系模子
[*]物理结构计划:确定存取方法:索引方法,聚簇方法,Hash方法
[*]数据库实施
[*]数据库运行与维护
此中,
概念结构计划中局部E-R模子的归并过程中会产生三种辩论:

[*]属性辩论 :类型,取值范围不同
[*]定名辩论:同名异义,异名同义
[*]结构辩论
   在归并E-R图时发现“部门”在一个局部应用中被当作实体,而在另一个局部应用中被当作属性,这种现象称为( C )辩论。
A.属性 B.定名 C.结构 D.语法
逻辑结构计划中把概念模子(E-R图)转化为关系数据模子是重点
   从E-R模子向关系模子转换时,一个M∶N(多对多)接洽转换为关系模子时,应该 C 。
A.M 端实体的主码纳入 N 端实体对应的关系做外码
B.N 端实体的主码纳入 M 端实体对应的关系做外码
C.产生一个新的关系,M 端实体的主码和 N 端实体的主码在此中做外码
D.产生一个新的关系,该关系一定是 M 端实体的主码和 N 端实体的主码联合做主
https://img-blog.csdnimg.cn/direct/2de0087f5b524da3a14759b558fba074.png
解析:10个实体就有10个关系,再加上5个m:n接洽,会产生5个关系。故为15个
https://img-blog.csdnimg.cn/direct/17371a7c792748c3bc2aaaa146a31d89.png
聚簇:一个数据库可有多个聚簇,一个关系只能有一个聚簇
   以下说法错误的是(B )。
A.对于更新频仍的表,索引不能定义太多
B.一个数据库最多只能创建一个聚簇
C.一个关系最多只能创建一个聚簇
D.应选择值相对稳固,且经常被访问或使用的属性(组)作为聚簇码
https://img-blog.csdnimg.cn/direct/4919155a778a49cfb28b15ccdfb3efa5.png
https://img-blog.csdnimg.cn/direct/849edb7fef8a495aab16dcc0a0212967.png
解析:可以从两个角度来明白

[*]创建外模式就是创建用户视图,而视图是不会提高查询服从的,
[*]系统时间服从是内模式该考虑的标题,好比适当引入索引或创建聚簇
7. 数据库掩护

数据库的掩护:

[*]并发控制
[*]数据规复
[*]安全性控制
[*]完整性控制
https://img-blog.csdnimg.cn/direct/b4d13161d3314638977ed5042146717b.png
事务:数据库应用程序的最小逻辑工作单位。
或者定义为:是用户定义的一个数据操纵序列,这些操纵要么全部实行,要么全部不实行,是一个不可分割的工作单元。
https://img-blog.csdnimg.cn/direct/77558da0b2644a2d9a81e7c3b648d378.png
解析:
事务通常由begin tansaction开始
以 commit或rollback竣事
事务的特性:(ACID特性)

[*]原子性
[*]一致性
[*]隔离性
[*]持久性
https://img-blog.csdnimg.cn/direct/c7b6bd0d7f794a2ab559f644c3cd4da3.png
并发操纵引起的标题:
5. 丢失修改
6. 读”脏“数据 rollback回滚
7. 不可重复读 同一事务两次读取同一个数据项
   对并发操纵若不加以控制,可能会带来( A )标题。
A.数据不一致 B.不安全 C.死锁 D.死机
https://img-blog.csdnimg.cn/direct/12ac2c4a101944cb80daf962fbf59c02.png
   设有两个事务 T1、T2,其并发操纵如下所示,下面评价正确的是 B 。
A.该操纵不存在标题 B.该操纵丢失修改
C.该操纵不能重复读 D.该操纵读“脏”数据
https://img-blog.csdnimg.cn/direct/e704ff64de934505b73d6a69a993d391.png
https://img-blog.csdnimg.cn/direct/41eb1e86d6ce44da998ac055321c8ba1.png
对于以上的标题,采取封锁技术
基本的封锁类型:

[*]排他锁/写锁/X锁
[*]共享锁/读锁/S锁
此中,在一个事务加了S锁后只能再加S锁,在一个事务加了T锁后不能再加任何锁
   若事务 T 对数据 R 已经加 X 锁,则其他事务对数据 R D。
A.可以加 S 锁不能加 X 锁 B.不能加 S 锁可以加 X 锁
C.可以加 S 锁也可以加 X 锁 D.不能加任何
https://img-blog.csdnimg.cn/direct/7973cb854bb449ec9e18380456009111.png
留意,只管叫写锁,但是除了写也是可以读的!
封锁协议:

[*]一级封锁协议:包管 丢失修改
[*]二级封锁协议:包管 丢失修改 和 读”脏“数据
[*]三级封锁协议:包管 丢失修改 和 读”脏“数据 和 不可重复读
   并发操纵会产生几种不一致环境?用什么方法避免各种不一致的环境?
答:
并发操纵可能会产生丢失修改,不能重复读和读”脏”数据这三种不一致环境,采用封锁机制来进行并发控制,可避各种不一致环境。一级封锁协议可以避免丢失修改,二级封锁协议可以避免丢失修改和读”脏”数据,三级封锁协议可以避免丢失修改、不能重复读和读”脏”数据。
死锁:
https://img-blog.csdnimg.cn/direct/b6b69dc2912f4a67861d8060d0f1b2ff.png
预防死锁:

[*]一次封锁法
[*]顺序封锁法
诊断死锁:

[*]超时法
[*]事务期待法
并发调理的可串行性:

[*]可串行化是并发事务正确性的准则:即只有可串行化,才认为是正确的调理
   多个事务的并发实行顺序有很多种,不同实行顺序得到的结果不一定相同。这些结果( D )。
A.都一定正确
B.只有一个是正确的
C.都不正确
D.如果与按某一顺序的事务串行实行的结果相同,就是正确的。

[*]两段锁协议包管可串行性
例题:
https://img-blog.csdnimg.cn/direct/90816cbbf3f8461f9ce3ecf55330db58.png
数据规复:

[*]创建冗余:数据转储,登岸日志文件
[*]实施数据库的规复
此中,
数据转储可分为

[*]静态转储:系统无运行事务时进行的转储操纵。得到的一定是一个数据一致的副本。低落了数据库的可用性
[*]动态转储:不用期待正在运行的用户事务竣事,也不影响新事务的运行。并不能包管数据正确有效。
数据转储也可分为

[*]海量转储:每次转储全部数据库
[*]增量转储:每次只转储上一次转储后更新过的数据,适合较大的数据库
   以下说法正确的是( C )。
A.静态转储不能够包管得到的一定是个数据一致的副本
B.动态转储会低落数据库的可用性
C.动态转储不能包管副本中数据的正确有效性,它需要联合日志文件,才气把数据库规复到某一时刻的正确状态
D.如果数据库很大,更新操纵又十分频仍,采用海量转储更有服从
登岸日志文件必须遵循的两个原则:

[*]登记的次序严格按照并发事务的时间实行
[*]必须先写日志文件,后写数据库
https://img-blog.csdnimg.cn/direct/0209e7c5a733431e9b7045c497faa30f.png
数据库故障:事务内部故障,系统故障,介质故障,计算机病毒
https://img-blog.csdnimg.cn/direct/b04706434a094c0185472225330b3af8.png
8. 安全管理

https://img-blog.csdnimg.cn/direct/abb3a0002e024c499def7af38e4444d8.png
角色分为系统预定义的固定角色和用户根据自己的需要定义的用户角色
https://img-blog.csdnimg.cn/direct/8831a6af8277482f9cfb57ef685bb607.png
https://img-blog.csdnimg.cn/direct/117a92bc9bd74b55b63b322acb1791c4.png
https://img-blog.csdnimg.cn/direct/cf1624d139284d08b0337cf8e1619422.png
https://img-blog.csdnimg.cn/direct/635363e9925a4e8bbe2e6e639a3c1bff.png
https://img-blog.csdnimg.cn/direct/348ffb5e574c42ad8ba0c51323e5e61d.png
SQL Server提供的安全控制:

[*]确认用户是否是数据库服务器的合法用户(具有登录账号)
[*]确认用户是否是特定数据的合法用户(具有访问数据库的权限)
[*]确认用户是否具有合适的操纵权限(具有操纵数据库数据的权限)
https://img-blog.csdnimg.cn/direct/be1814a4963d4fc8947953ad16cce3d6.png
   为数据库用户user1授予查询和修改Student表的权限。
解:GRANT SELECT,UPDATE ON Student TO user1
    现有一无任何权限的访客User1试图查询和更新门生数据库中的student表,请简述SQL Server提供的安全控制的3个步骤,并请以DBA身份为其完成该3步授权,写出用到的SQL语句。
解:
第一步:创建数据库服务器登录名;
第二步:确认该用户是否为门生数据库的合法用户
第三步:确认用户是否具有对student表的操纵权限
对应这3个步骤的语句如下:
第一步:create login User1 with password=‘123456’
第二步:create user User1 for login User1
第三步:grant select,update on student to user1
    下列 SQL 语句中,能够实现“收回用户 ZHAO 对门生表(STUD)中学号(XH)的修
改权”这一功能的是 C
A.revoke UPDATE(XH) ON TABLE FROM ZHAO
B.revoke update(XH) ON TABLE FROM PUBLIC
C.revoke UPDATE(XH) ON STUD FROM ZHAO
D.revoke update(XH) ON STUD FROM PUBLIC
https://img-blog.csdnimg.cn/direct/994d3d860ac54123848938753bb510e3.png
9. 备份与规复数据库

https://img-blog.csdnimg.cn/direct/65ff3dbe805540dfb9c0dd546afecd85.png
备份方法:

[*]完整备份:不适合频仍备份
[*]差异备份 :在完整备份的基础上
[*]事务日志备份:在上一次备份的基础上
   SQL SERVER 规复数据库时,对规复的顺序有什么要求?
解答:规复数据库时必须要遵守严格的顺序。规复数据库的顺序为:
1)规复近来的完全数据库备份。
2)规复完全备份之后的近来的差异数据库备份(如果有的话)。
3)按日志备份的先后顺序规复自完毕或差异备份之后的全部日志备份。
https://img-blog.csdnimg.cn/direct/04143f0c778f4556bb3e54643ff2d8b5.png
https://img-blog.csdnimg.cn/direct/94eaad969e97419587ef16a0776c0055.png
10. 存储过程与触发器

T-SQL语法变量:
Declare @name varchar(10)
set @name=‘张三’
print @name
   以下代码的运行结果为( D )
declare @cname varchar(20)
set @cname=‘数据库原理及应用’
go
print @cname
A.’数据库原理及应用’ B.数据库原理及应用
C.@cname D.报错,没有运行结果
    题解:因为局部变量的作用范围是从声明开始到批处理go竣事为止
存储过程:
create procedure XX
as
begin

end
实行:execute XX
   编写一个存储过程prcFindByCno,吸收课程号作为参数,通过输出参数返回该课程目前已选修人数。已知在表中课程号定义为char(10)。
解:CREATE PROC prcFindByCno @cno char(10),@total int output
AS
SELECT @total=count(*) from SC where Cno=@cno
https://img-blog.csdnimg.cn/direct/f8d181866f21417783f0a379495b55b6.png
触发器:
   某个服装批发商系统会在每个事务发生时自动更新所需的表格。向“订单”表格添加新的行后,“产物”表格中的iQuantityOnHand属性必须相应地减少。应该创建以下哪个触发器来确保以上更新?( C )
A.“产物”表格上的插入触发器 B.“订单”表格上的更新触发器
C.“订单”表格上的插入触发器 D.“产物”表格上的更新触发器
11. 数据库新技术与其他知识点

NoSQL:一种非关系型数据库
分为:

[*]键-值存储数据库:redis
[*]列存储数据库:HBase
[*]文档型数据库:MongoDB
[*]图形数据库:InfoGrid
   MongoDB是( C )。
A.键-值存储数据库 B.列存储数据库
C.文档型数据库 D.图形数据库
    什么叫NoSQL数据库?NoSQL数据库实用哪些场合?
解:NoSQL数据库就是非关系数据库(2分)。
NoSQL数据库在以下几种环境下实用:
1) 需要灵活性更强的IT系统;
2)数据模子比力简单;
2) 对数据库性能要求更高;
4) 不需要高度的数据一致性;
5)给定键Key,比力容易映射复杂值的环境。
必考大题:
   某水果外卖平台为了实现对其经营水果的管理,拟开发一个数据库系统,提出的要求如下:
①全部水果的单位均为公斤,水果种类很多,每种水果都有自己独有的编号,还有水果名和
基准售价;
②水果每次采购回来时都要有入库记载,记载入库的数量,入库时间和成本价,同一入库时
间可能入库多种水果,但一种水果每次入库的入库时间肯定不一样;
③客户可以通过网上下单订购水果,一个客户可以多次下单购买,但一个订单只能是一个客
户下单;
④需要记载客户的电话,姓名和所在,客户电话具有唯一性;
⑤还需要记载订单的订单编号,下单时间;
⑥一个订单中可以订购多种水果,需要记载订购每种水果的数量及单价,并需要知道订单总
价。
(1)请根据以上需求计划 E-R 图
(2)将上面 E-R 图转换为等价的关系模式(需要注明每个关系模式的主码,每个外码及其所参照的主码)
https://img-blog.csdnimg.cn/direct/6048c57fcef34fa5a7c1580154cfddc6.png
感谢关注点赞
页: [1]
查看完整版本: 数据库期末,一篇就够了!【全面】【期末测验】