目录
- @[TOC](目录)
- 数据库作业第七章
- (1)习题7关系模式
- (2)习题8关系模式
- 数据库作第三章
- 3
- 4
- 数据库作第二章
- 6
- 数据库作业第三章59
- 数据库作业第八章
- (1)统计离散数学的成绩分布情况,即按照各分数段统计人数。
- (2)统计任意一门课的平均成绩。
- (3)将学生选课成绩从百分制改为等级制(即A、B、C、D、E)。
- 数据库作业第十章
- 10-4
- 10-5
- 数据库作业第11章
- 11-3
- 11-4
- 11-5
- 11-6
- 数据作业第4、5章
- 4-6
- 4-7
- 5-6
- 6
- 数据库作业关系数据
- 3
- 4
- 5
- 1
- 2
- 6
- 9
- 13
- 14
- 15
- 18
- 19
- 数据库系统复习
- 1
- 2
- 3
- 4
目录
- @[TOC](目录)
- 数据库作业第七章
- (1)习题7关系模式
- (2)习题8关系模式
- 数据库作第三章
- 3
- 4
- 数据库作第二章
- 6
- 数据库作业第三章59
- 数据库作业第八章
- (1)统计离散数学的成绩分布情况,即按照各分数段统计人数。
- (2)统计任意一门课的平均成绩。
- (3)将学生选课成绩从百分制改为等级制(即A、B、C、D、E)。
- 数据库作业第十章
- 10-4
- 10-5
- 数据库作业第11章
- 11-3
- 11-4
- 11-5
- 11-6
- 数据作业第4、5章
- 4-6
- 4-7
- 5-6
- 6
- 数据库作业关系数据
- 3
- 4
- 5
- 1
- 2
- 6
- 9
- 13
- 14
- 15
- 18
- 19
- 数据库系统复习
- 1
- 2
- 3
- 4
有一些图没了 自己搜一搜
数据库作业第七章
以下是作业内容
3、习题10
(1)习题7关系模式
系(系编号,系名,学校名)
班级(班级编号,班级名,系编号)
教研室(教研室编号,教研室名,系编号)
学生(学号,姓名,学历,班级编号,导师职工号)
教员(职工号,姓名,职称,教研室编号)
课程(课程号,课程名称)
选课(学号,课程号,成绩)
(2)习题8关系模式
产品(产品号,产品名称,仓库号)
零件(零件号,零件名称)
原材料(原材料号,原材料名称,类别,仓库号,存储量)
仓库(仓库号,仓库名称)
产品组成(产品号,零件号,使用零件数量)
零件组成(零件号,原材料号,使用原材料数量)
零件储存(零件号,仓库号,存储量)
4、习题11
习题7中的关系模式都只有一个码,且都是唯一决定的因素,所以都属于BCNF。不会产生更新异常现象。
[数据库作业——第三章 关系数据库标准语言SQL.md]
数据库作第三章
以下是作业内容。
3
有两个关系S(A, B, C, D) 和 T(C, D, E, F),写出下列查询等价的SQL表达式:
(1) σ A = 10 ( S ) \sigma_{A=10} (S) σA=10(S)
select A, B, C, D from S where A = 10;
(2) Π A , B ( S ) \Pi _{A, B}(S) ΠA,B(S)
select A, B from S;
(3) S ⋈ T S \Join T S⋈T
select * from S natural join T;
(4) S ⋈ S . C = T . C T S \Join _{S.C = T.C} T S⋈S.C=T.CT (注:这里右侧下标其实应该是在正下,但是markdown的内嵌latex不支持,下同)
select * from S join T on S.C = T.C;
(5) S ⋈ A < E T S \Join _{A<E} T S⋈A<ET
select * from S join T on S.A < T.E
(6) Π C , D ( S ) × T \Pi_{C,D}(S) \times T ΠC,D(S)×T
select * from (select C, D from S) s1, T;
4
用SQL语句建立第2章习题6中的4个表;针对建立的4个表用SQL完成第2中习题6中的查询。
- 先建表
CREATE SCHEMA IF NOT EXISTS TEST;
USE TEST;
CREATE TABLE S(
SNO CHAR(2) PRIMARY KEY comment '供应商代码',
SNAME VARCHAR(3) comment '供应商姓名',
STATUS TINYINT comment '供应商状态',
CITY char(2) comment '供应商所在城市'
) comment '供应商表';
CREATE TABLE P(
PNO CHAR(2) PRIMARY KEY comment '零件代码',
PNAME VARCHAR(3) comment '零件名',
COLOR CHAR(1) comment '颜色',
WEIGHT TINYINT comment '重量'
) comment '零件表';
CREATE TABLE J(
JNO CHAR(2) PRIMARY KEY comment '工程项目代码',
JNAME VARCHAR(3) comment '工程项目名',
CITY CHAR(2) comment '工程项目所在城市'
) comment '工程项目表';
CREATE TABLE SPJ(
SNO CHAR(2) comment '供应商代码',
PNO CHAR(2) comment '零件代码',
JNO CHAR(2) comment '工程项目代码',
QTY SMALLINT comment '供应数量',
PRIMARY KEY (SNO, PNO, JNO),
FOREIGN KEY (SNO) REFERENCES S(SNO),
FOREIGN KEY (PNO) REFERENCES P(PNO),
FOREIGN KEY (JNO) REFERENCES J(JNO)
) comment '供应情况表';
- 插入数值
insert into S(SNO, SNAME, STATUS, CITY)
values ('S1', '精益', 20, '天津'),
('S2', '盛锡', 10, '北京'),
('S3', '东方红', 30, '北京'),
('S4', '丰泰盛', 20, '天津'),
('S5', '为民', 30, '上海');
insert into P(pno, pname, color, weight)
VALUES ('P1', '螺母', '红', 12),
('P2', '螺栓', '绿', 17),
('P3', '螺丝刀', '蓝', 14),
('P4', '螺丝刀', '红', 14),
('P5', '凸轮', '蓝', 40),
('P6', '齿轮', '红', 30);
# 修改JNAME
ALTER TABLE J modify JNAME varchar(4);
insert into J(JNO, JNAME, CITY)
VALUES ('J1', '三建', '北京'),
('J2', '一汽', '长春'),
('J3', '弹簧厂', '天津'),
('J4', '造船厂', '天津'),
('J5', '机车厂', '唐山'),
('J6', '无线电厂', '常州'),
('J7', '半导体厂', '南京');
insert into SPJ(SNO, PNO, JNO, QTY)
VALUES ('S1', 'P1', 'J1', 200),
('S1', 'P1', 'J3', 100),
('S1', 'P1', 'J4', 700),
('S1', 'P2', 'J2', 100),
('S2', 'P3', 'J1', 400),
('S2', 'P3', 'J2', 200),
('S2', 'P3', 'J4', 500),
('S2', 'P3', 'J5', 400),
('S2', 'P5', 'J1', 400),
('S2', 'P5', 'J2', 100),
('S3', 'P1', 'J1', 200),
('S3', 'P3', 'J1', 200),
('S4', 'P5', 'J1', 100),
('S4', 'P6', 'J3', 300),
('S4', 'P6', 'J4', 200),
('S5', 'P2', 'J4', 100),
('S5', 'P3', 'J1', 200),
('S5', 'P6', 'J2', 200),
('S5', 'P6', 'J4', 500);
- 查询
(1)求供应工程J1零件的供应商号码SNO;
select SNO from SPJ where JNO = 'J1';
(2)求供应工程J1 零件P1的供应商号码SNO;
select SNO from SPJ where JNO = 'J1' and PNO = 'P1';
(3)求供应工程J1零件为红色的供应商号码SNO;
select SNO from SPJ where JNO = 'J1' and PNO in (select PNO from P where COLOR = '红');
(4)求没有使用天津供应商生成的红色零件的工程号JNO;
SELECT DISTINCT JNO FROM SPJ
WHERE JNO NOT IN
(SELECT JNO FROM SPJ JOIN S JOIN P ON SPJ.SNO = S.SNO AND SPJ.PNO = P.PNO
AND S.CITY = '天津' AND P.COLOR = '红');
(5)求至少用了供应商S1所供应的全部零件的工程号JNO;
SELECT DISTINCT JNO FROM SPJ
WHERE NOT EXISTS(SELECT PNO
FROM (SELECT DISTINCT PNO FROM SPJ S_1
WHERE S_1.SNO = 'S1') S_2
WHERE NOT EXISTS(SELECT DISTINCT PNO FROM SPJ S_3
WHERE S_3.PNO = S_2.PNO AND SPJ.JNO = S_3.JNO));
[数据库作业——第二章关系数据库2.md]
数据库作第二章
6
设有一个SPJ数据库,包括S、P、J及SPJ四个关系模式:
S(SNO, SNAME, STATUS, CITY);
P(PNO, PNAME, COLOR, WEIGHT);
J(JNO, JNAME, CITY);
SPJ(SNO, PNO, JNO, QTY);
供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所 在城市(CITY)组成。
零件表P由了零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组 成。
工程项目表 J 由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组 成。
供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量 (QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
数据表如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WYSESR1t-1681791674080)(C:\Users\86151\AppData\Roaming\Typora\typora-user-images\image-20221013170458525.png)]
CREATE SCHEMA IF NOT EXISTS SPJ; USE SPJ; CREATE TABLE S( SNO VARCHAR(10) PRIMARY KEY, SNAME NVARCHAR(100) NOT NULL, SADDR NVARCHAR(100) ); CREATE TABLE P( PNO VARCHAR(10) PRIMARY KEY, PNAME NVARCHAR(100) NOT NULL, COLOR NCHAR(1) WEIGHT INT ); CREATE TABLE J( JNO VARCHAR(10) PRIMARY KEY, JNAME NVARCHAR(100) NOT NULL, JCITY NVARCHAR(50), BALANCE DECIMAL(10,2) ); CREATE TABLE SPJ( SNO VARCHAR(10), PNO VARCHAR(10), JNO VARCHAR(10), PRICE DECIMAL(10,2), QTY INT, PRIMARY KEY(SNO,PNO,JNO), FOREIGN KEY(SNO) REFERENCES S(SNO), FOREIGN KEY(PNO) REFERENCES P(PNO), FOREIGN KEY(JNO) REFERENCES J(JNO) );
[数据库作业第三章59.md]
数据库作业第三章59
以下是作业内容:
5.针对习题4中的4个表试用SQL语句完成以下各项操作
(1)找出所有供应商的姓名和所在城市
SELECT SNAME,CITY
FROM S;
(2) 找出所有零件的名称,颜色,重量
SELECT PNAME,COLOR,WEIGHT
FROM P;
(3)找出使用供应商S1所供应零件的工程号码
SELECT JNO
FROM SPJ
WHERE SNO='S1';
(4)找出工程项目J2使用的各种零件的名称及其数量
SELECT PNAME,QTY
FROM SPJ,P
WHERE SPJ.PNO=P.PNO AND JNO='J2';
(5)找出上海厂商供应的所有零件号码
SELECT PNO
FROM S,SPJ
WHERE SPJ.SNO AND CITY='上海';
(6)找出使用上海产的零件的工程名称
SELECT JNAME
FROM J,S,SPJ
WHERE JNO=SPJ.JNO AND SPJ.SNO=S.SNO AND S.CITY='上海';
(7)找出没有使用天津产的零件的工程号码
SELECT PNO
FROM S,SPJ
WHERE SPJ.SNO=S.SNO AND CITY!='天津';
(8)把全部红色零件颜色改为蓝色
UPDATE P
SET COLOR='蓝'
WHERE COLOR='红';
(9)由S5供给J4的零件P6改为由S3供应,作必要的修改
UPDATE SPJ
SET SNO='S3'
WHERE PNO='P6' AND JNO='J4' AND SNO='S5'
(10)从供应商关系中删除S2的记录,并从供应情况中删除相应的记录
DELETE
FROM S
WHERE SNO='S2';
DELETE
FROM SPJ
WHERE SNO='S2';
(11)请将(S2,J6,P4,200)插入供应关系情况
INSERT
INTO SPJ
VALUES('S2','P4','J6',200);
9.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)
CREATE VIEW VSPJ
AS
SELECT SNO,PNO,QTY
FROM SPJ,J
WHERE SPJ.JNO=J.JNO AND JNAME='三建'
(1)找出三建工程项目使用的各种零件代码及其数量
SELECT PNO,QTY
FROM VSPJ;
(2)找出供应商S1的供应情况
SELECT *
FROM VSPJ
WHERE SNO='S1';
[数据库作业第八章.md]
数据库作业第八章
以下是作业内容:
2.对学生-课程数据库编写存储过程, 完成下述功能:
(1)统计离散数学的成绩分布情况,即按照各分数段统计人数。
DROP PROCEDURE IF EXISTS result1;
DELIMITER $$
CREATE
PROCEDURE `student`.`result1`(IN grade_start SMALLINT, IN grade_end SMALLINT, OUT result INT)
BEGIN
SELECT COUNT(*) FROM sc
LEFT OUTER JOIN course
ON sc.cno=course.cno
WHERE course.cname='离散数学'
AND sc.grade BETWEEN grade_start AND grade_end;
END$$
DELIMITER ;
(2)统计任意一门课的平均成绩。
DROP PROCEDURE IF EXISTS result2;
DELIMITER $$
CREATE
PROCEDURE `student`.`result2`(IN cname CHAR(40),OUT result INT)
BEGIN
SELECT AVG(grade) FROM sc
WHERE cno=(
SELECT DISTINCT cno FROM course
WHERE course.cname=cname
);
END$$
DELIMITER ;
(3)将学生选课成绩从百分制改为等级制(即A、B、C、D、E)。
/*先给sc表添加一个字段grade_level,方便存储过程添加ABCDE*/
ALTER TABLE sc ADD grade_level CHAR(2);
DROP PROCEDURE IF EXISTS result3;
DELIMITER $$
CREATE
PROCEDURE `student`.`result3`()
BEGIN
UPDATE sc SET grade_level = 'A' WHERE grade BETWEEN 90 AND 100;
UPDATE sc SET grade_level = 'B' WHERE grade BETWEEN 80 AND 90;
UPDATE sc SET grade_level = 'C' WHERE grade BETWEEN 70 AND 80;
UPDATE sc SET grade_level = 'D' WHERE grade BETWEEN 60 AND 70;
UPDATE sc SET grade_level = 'E' WHERE grade BETWEEN 0 AND 60;
END$$
DELIMITER ;
CALL result3();
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KmQXUP6V-1681791674081)(C:\Users\86151\AppData\Roaming\Typora\typora-user-images\image-20221213171634676.png)]
[数据库系统2022-第10章-周二.md]
数据库作业第十章
以下是作业内容:
10-4
考虑下图所示的日志记录:
(1)如果系统故障发生在14之后,说明哪些事物需要重做,哪些事物需要回滚。
T1、T3提交,T2回滚,T4开始了但没有结束。
重做(REDO):T1,T3;
撤销(UNDO):T4。
(2)如果系统故障发生在10之后,说明哪些事物需要重做,哪些事物需要回滚。
T1提交。T2回滚,T3开始但没结束,T4未开始。
重做:T1;
撤销:T3。
(3)如果系统故障发生在9之后,说明哪些事物需要重做,哪些事物需要回滚。
T1提交,T2、T3开始但未结束,T4未开始。
重做:T1;
撤销:T2,T3.
(4)如果系统故障发生在7之后,说明哪些事物需要重做,哪些事物需要回滚。
T1提交,T2开始但未结束,T3,T4未开始。
重做:T1
撤销:T2
10-5
考虑题4所示的日志记录,假设开始时A,B,C的值都是0:
(1)如果系统故障发生在14之后,写出系统恢复后A,B,C的值;
T1,T3重做,T4撤销,
A=8,B=7,C=11。
(2)如果系统故障发生在12之后,写出系统恢复后A,B,C的值;
T1提交,T2回滚,T3,T4开始但未结束,所以T1重做,T3,T4撤销。
A=10,B=0,C=11。
(3)如果系统故障发生在10之后,写出系统恢复后A,B,C的值;
重做:T1;撤销:T3。
A=10,B=0,C=11
(4)如果系统故障发生在9之后,写出系统恢复后A,B,C的值;
T1提交。T2、T3开始但没结束,T4未开始。
T1重做,T2,T3撤销。
A=10,B=0,C=11
(5)如果系统故障发生在7之后,写出系统恢复后A,B,C的值;
T1重做,T2撤销
A=10,B=0,C=11
(6)如果系统故障发生在5之后,写出系统恢复后A,B,C的值;
T1,T2开始但未结束,T3、T4未开始。
T1、T2撤销。
A=0,B=0,C=0
[数据库系统2022-第11章-周二.md]
数据库作业第11章
11-3
什么是封锁?基本的封锁类型有几种?试述它们的含义。
(1)所谓封锁就是当一个事务在对某个数据对象进行操作之前,必须获得相应的锁,以保证数据操作的正确性和一致性。
2)基本的封锁类型有两种:排它锁和共享锁。
(1)排它锁(Exclusive Lock):排它锁又称写锁,简称为X锁,其采用的原理是禁止并发操作。当事务T对某个数据对象R实现X封锁后,其他事务要等T解除X封锁以后,才能对R进行封锁。这就保证了其他事务在T释放R上的锁之前,不能再对R进行操作。
(2)共享锁(Share Lock):共享锁又称读锁,简称为S锁,其采用的原理是允许其他用户对同一数据对象进行查询,但不能对该数据对象进行修改。当事务T对某个数据对象R实现S封锁后,其他事务只能对R加S锁,而不能加X锁,直到T释放R上的S锁。这就保证了其他事务在T释放R上的S锁之前,只能读取R,而不能再对R作任何修改。
11-4
如何用封锁机制保证数据的一致性?
DBMS在对数据进行读写操作之前首先对该数据库执行封锁操作,例如图中事务T1在对A进行修改之前先对A执行Xlock(A)即对A机上X锁。这样T2请求对A加X锁时就被拒绝,T2只能等待T1释放A上的锁后才能获得对A的X锁,这时它读到的A是T1更新后的值,再按此新的A值进行运算。这样就不会丢失T1的更新。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vtSN44CZ-1681791674082)(C:\Users\86151\AppData\Roaming\Typora\typora-user-images\image-20221228161039221.png)]
DBMS按照一定的封锁协议对并发操作进行控制,使得多个并发操作有序的执行,就可以避免丢失修改、不可重复读和读”脏“数据不一致性。
11-5
什么是活锁?试述活锁产生的原因和解决办法
如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待,T3也请求封锁R,当T1释放R上的封锁之后系统首先批准T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放R上的封锁系统批准T4的请求。T2有可能永远等待。活锁的含义是该等待事务等待时间太长,似乎被封锁住了,实际上可能被激活。
活锁产生的原因:当一系列的封锁不能按照先后顺序执行时,就可能导致一些事务无限等待某个封锁,从而导致活锁。
避免获得活锁的简单方法:采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。
11-6
什么是死锁?给出解决预防死锁的方法
如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已经封锁了R2,于是T1等待T2释放R2上的锁。接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁。
防止死锁的发生其实就是要破坏产生死锁的条件,预防死锁通常有两种方法:
- 一次封锁法
要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。 - 顺序封锁法
预先对数据对象规定一个封锁顺序,所有的事务都按照这个顺序实行封锁。
[数据库系统2022-第4章5章-周二.md]
数据作业第4、5章
以下是作业内容:
4-6
对下列两个关系模式:
学生(学号、姓名、年龄、性别、家庭住址、班级号)
班级(班级号,班级名,班主任,班长)
使用GRANT语句完成以下授权功能
首先建立实验需要的表
create table Class
(ClassNum int primary key,
ClassName char(5) unique not null,
HeadTeacher char(5) not null,
Monitor char(5)
);
create table Students
(Id char(11)primary key,
Name char(5) not null,
Age smallint check(age>0 and age<100) not null,
Sex char(2) check(sex='男' or sex='女'),
Address char(20),
ClassNum int foreign key (ClassNum) references Class(ClassNum) on delete cascade
);
①授予用户U1对两个表的所有权限,并可给其他用户授权。
GRANT ALL PRIVILEGES ON CLASS,STUDENTS TO U1 WITH GRANT OPTION;
②授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。
GRANT SELECT,UPDATE(ADDRESS) ON STUDENTS TO U2;
③将对班级表查看权限授予所有用户。
GRANT SELECT ON CLASS TO PUBLIC;
④将对学生表的查询、更新权限授予角色R1。
GRANT SELECT,UPDATE ON STUDENTS TO R1;
⑤将角色RI授予用户U1,并且U1可继续授权给其他角色。
ALTER ROLE R1 ADD MEMBER U1;
4-7
今有以下两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号)用SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能
建立实验需要的表
create table Department(
Id char(11) primary key,
Name char(5) unique not null,
Manager char(5) not null,
PhoneNumber char(11)
);
create table Employee
(Id char(11) primary key,
Name char(5) not null,
Age smallint check(Age>0 and Age<100),
Salary Money,
DepartmentId char(11) references Department(Id)
on delete cascade
);
(1)用户王明对两个表有 SELECT权限。
grant select on Employee,Department to 王明;
(2)用户李勇对两个表有 INSERT和 DELETE权限。
grant insert,delete
on Employee,Department
to 李勇;
(3)每个职工只对自己的记录有 SELECT权限
先创建相应的视图,并且把员工ID作为员工的用户名
create view Users
as
select *
from Employee
where Employee.Id=USER
创建好试图后,员工使用自己的用户名登录,直接从视图中查询,就只能看到自己的信息。
grant select
on Users
to public;
(4)用户刘星对职工表有 SELECT权限,对工资字段具有更新权限
grant select,update(Salary)
on Employee
to 刘星;
(5)用户张新具有修改这两个表的结构的权限
grant alter on Employee,Department to 张新;
(6)用户周平具有对两个表所有权限读,插,改,删数据,并具有给其他用户授权的权限
grant select,update,delete,insert on Employee,Department to 周平;
(7)用户杨兰具有从每个部门职工中 SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资
create view SalaryLevel(names,maxs,mins,avgs)
as
select Department.Name,max(Salary),min(Salary),avg(Salary)
from Department,Employee
where Department.Id=Employee.DepartmentId
group by Employee.Id,Department.Name;
grant select on SalaryLevel to 杨兰;
5-6
假设有下面两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号), 其中职工号为主码;
部门(部门号,名称,经理名,电话),其中部门号为主码。用 SQL 语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:
(1)定义每个模式的主码;
(2)定义参照完整性;
(3)定义职工年龄不得超过60岁
create table Dep
(
Dnum int primary key,
Dname char(10),
Djlname char(10),
Dtel char(20)
);
create table Staff
(
Snum char(10) primary key,
Sname char(10),
Sage int,
constraint C1 check (Sage<=60),
Swjob char(10),
Ssalary char(10),
Sdnum int
foreign key(Sdnum) references Dep(Dnum)
);
[数据库系统作业——关系代数.md]
数据库系统作业——关系代数
学生信息
学号:
作业内容:
6
试用关系运算的算式描述题目所要求的SPJ数据库的 一系列查询操作
数据库作业关系数据
3
定义并理解下列术语,说明他们的联系与区别
(1)域、笛卡尔积、关系、元祖、属性
(2)主码、候选码、外码
(3)关系模式、关系、关系数据库
(1)
域:一组具有相同数据类型的值的集合。
笛卡尔积:两个分别为n目和m目的关系R和S的笛卡尔积是一个n+m列的元组的集合
关系:D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)
元祖:关系中的每个元素是关系中的元组
属性:关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域,由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性(Attribute)
(2)
主码: 若一个关系有多个候选码,则选定其中一个为主码(Primary key)
候选码:关系中能唯一标识一个元组的某一属性组
外码:设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码
(3)
关系模式:关系的描述,它可以形式化地表示为:R(U,D,DOM,F),其中R为 关系名,U为 组成该关系的属性名集合,D为U中属性所来自的域,DOM 为属性向域的映象集合,F为属性间数据的依赖关系的集合。
关系:D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn),是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的。关系模式和关系往往笼统称为关系,通过上下文加以区别。
关系数据库:在一个给定的应用领域中,所有关系的集合构成一个关系数据库
4
举例说明关系模式和关系的区别
❖关系模式
◼ 静态的、稳定的
❖关系
◼ 动态的、随时间不断变化的
对于常见的二维表,关系模式通常指二维表的表头,即有哪些列构成,每个列的名称、类型、长度等;关系通常指的是一张表的具体内容,因为表经常被操作,关系可能不一样。
5
试述关系模型的完整性规则。在参照完整性中,什么情况下外码属性的值可以为空值?
关系的三类完整性约束:实体完整性、参照完整性、用户定义的完整性
实体完整性:若属性A是基本关系R的主属性,则属性A不能取空值
参照完整性:若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为空值(F的每个属性值均为空值)或者等于S中某个元组的主码值
用户定义完整性:针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
在参照完整性中,外码属性值可以为空,他表示尚未确定的属性值,但前提是该外码不是其所在参考关系的主属性。#
数据库系统复习
1
什么是数据库系统,以及特点
数据库(Database,简称DB)是长期储存在计算 内、有组织的、可共享的大量数据的集合。
数据库大致有以下特点:
◼ 数据结构化——DBS与FS的本质区别
◼ 共享性高 冗余度小 易扩充
◼ 数据独立性较高:程序与数据之间相互独立不受影响
物理独立性:DB数据的存储结构与存取方法与外部应用程序独立
逻辑独立性:局部逻辑数据结构与全局逻辑数据结构之间的独立性
◼ 数据由DBMS统一管理和控制
2
数据库三级模式
外模式/子模式/用户模式:数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述
——是数据库用户的数据视图
——通常是模式的子集
——通常是模式的子集
外模式与应用程序是一对多的关系;一个数据库有多个外模式
模式:定义数据的逻辑结构以及数据间的联系
——全体数据的逻辑结构特征
内模式/存储模式:对数据物理结构和存储方式的描述,是数据在数据库内部的组织方式
——一个数据库只有一个内模式
6
数据库管理系统的主要功能有哪些?
根据课本内容,数据库管理系统主要包括以下功能:
-
数据定义功能;
-
数据组织、存储和管理;
-
数据操纵功能;
-
数据库的事务管理和运行管理;
-
数据库的建立和维护功能。
-
其他功能。
9
试述数据模型的概念、数据模型的作用和数据模型的三个要素
1.概念: 数据模型是对现实世界 数据特征 的 抽象。
- 作用:
- 描述数据;
- 组织数据;
- 操作数据。
- 三要素:
- 数据结构;
- 数据操作;
- 数据的完整性。
13
试述关系模型的概念、定义并解释以下术语:
关系,属性,域,元组,码,分量,关系模式。
概念:在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
- 关系:一个关系对应通常说的一张表.
- 元组:表中的一行。
- 属性:表中的一列。
- 域:一组有相同数据类型的值的集合。属性的取值来自于某个域。
- 码:表中的某个属性组,可以唯一确定一个元组。
- 分量:元组中的一个属性值。
- 关系模式:对关系的描述。
14
试述关系数据库的特点。
由于关系数据库定义在数据库纸上,所以其基本特点同数据库
其额外特点有三:
1.建立在严格的数学概念的基础上
2.概念单一
⚫实体和各类联系都用关系来表示
⚫对数据的检索结果也是关系
3.关系模型的存取路径对用户透明
⚫具有更高的数据独立性,更好的安全保密性
⚫简化了程序员的工作和数据库开发建立的工作
15
试述数据库系统的三级模式结构,并说明这种结构的优点是什么。
- 三级模式结构:
❖模式(Schema)
❖外模式(External Schema)
❖内模式(Internal Schema) - 具有以下优点:
- 保证数据的 逻辑独立性;
- 保证数据的 物理独立性;
18
试述数据库系统的组成。
数据库系统一般有以下组成:
1. 数据库;
2. 数据库管理系统(及其应用开发工具);
3. 应用程序;
4. 数据库管理员。
19
试述数据库管理员、系统分析员、数据库设计人员、应用程序员的职责。
- 数据库管理员的职责:
决定数据库中的 信息内容 和 结构;
决定数据库的 存储结构 和 存取策略;
定义数据的安全性要求 和 完整性约束条件;
监控数据库的使用和运行;
数据库的改进和重组、重构。 - 系统分析员的职责:
应用系统的需求分析和规范说明;
和用户及DBA相结合,确定系统的软硬件配置;
参与数据库系统的概要设计。 - 数据库设计人员的职责:
确定数据库中的数据;
设计数据库各级模式;
参加用户需求调查和系统分析并进行数据库设计。 - 应用程序员的职责:
负责设计和编写应用系统的程序模块
进行调试和安装。
数据库系统复习
1
什么是数据库系统,以及特点
数据库(Database,简称DB)是长期储存在计算 内、有组织的、可共享的大量数据的集合。
数据库大致有以下特点:
◼ 数据结构化——DBS与FS的本质区别
◼ 共享性高 冗余度小 易扩充
◼ 数据独立性较高:程序与数据之间相互独立不受影响
物理独立性:DB数据的存储结构与存取方法与外部应用程序独立
逻辑独立性:局部逻辑数据结构与全局逻辑数据结构之间的独立性
◼ 数据由DBMS统一管理和控制
2
数据库三级模式
❖外模式/子模式/用户模式:数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述
——是数据库用户的数据视图
——通常是模式的子集
——外模式与应用程序是一对多的关系;一个数据库有多个外模式
❖模式:定义数据的逻辑结构以及数据间的联系
——全体数据的逻辑结构特征
——所有用户的gong’gong
❖内模式/存储模式:对数据物理结构和存储方式的描述,是数据在数据库内部的组织方式
——一个数据库只有一个内模式
3
关系型数据库基本概念(候选码,主码,外码)
候选码:某一属性组的值能唯一地标识一个元组。
主码:若一个关系有多个候选码,选定一个为主码
外部码:是属性但不是码 而是另一个关系的主码
4
自主存取控制,强制存取控制
自主存取控制:
定义用户权限——授权:
概念:用户对某一数据对象的操作权利称为权限 select/update/insert/delete
操作
数据库角色
强制存取控制
安全概念及安全措施、数据库完整性控制机制
判断4个范式(1NF-到BCNF)
完整性约束常用关键字
触发器基本语法(MySQL没有FOR EACH STATEMENT,但Oracle有,题目描述(题目指明oracle数据库),如果不是按记录的,就按照FOR EACH STATEMENT)
故障恢复原理
并发控制原理
数据库设计基本步骤P205、E-R图转换关系模式的原则P232;
安全概念及安全措施、数据库完整性控制机制P157;
事务的概念及4个特性P294。
活锁与死锁的概念及数据库系统的常见预防方法。P315