数据库期末复习
分析题
1
(1)使用数据库系统可以大大提高应用开发的效率,方便用户的使用减轻数据库系统管理人员维护的负担,请回答数据库系统有哪些部分组成?什么是数据库管理系统,其主要功能包括哪些方而?(5分)
数据库系统一般由以下四个部分组成:
DB:数据库,长期存储在计算机内部,有组织,可以共享的大量数据的集合
DBMS:位于用户与操作系统之间的一层数据管理软件
DBA:数据库管理员是负责数据库的建立、使用和维护的人员。
硬件和软件:数据库系统还需要相应的硬件和软件支持。
数据库管理系统(DBMS):是一种软件工具或系统,用于管理和操作数据库。
-
数据定义语言(DDL):用于定义数据库结构、模式和数据类型。允许用户创建、修改和删除数据库对象,如视图、索引等。
-
数据操作语言(DML):用于执行数据操作,如插入、更新、删除和查询数据。用户可以使用查询语言(如SQL)编写和执行复杂的查询。
-
数据库安全和权限管理:提供安全和权限管理机制,以控制对数据库的访问和操作。允许管理员分配用户角色、权限和访问级别。
-
数据完整性和约束::支持定义数据完整性规则和约束条件,以确保数据库中的数据符合预期的规范。
2
(2)从数据库管理系统角度看,数据库系统中有哪三层模式结构?采用三层模式结构有什么好处?(5分)
数据库系统中有哪三层模式结构?
-
外模式
-
模式(逻辑模式)
-
内模式
好处?
-
保证了数据的独立性
-
概念模式和内模式分开,保证数据的物理独立性。
-
把外模式和概念模式分开,保证数据逻辑的独立性。
-
-
有利于数据共享
-
所有用户使用统一概念模式导出的不同外模式,减少数据冗余,有利于多种应用程序间共享数据。
-
-
有利于数据安全保密
-
每个用户只能操作属于自己的外模式数据视图,不能对数据库其他部分进行修改,保证了数据安全性。
-
-
三层模式结构还有利于数据库的设计、开发和维护,提高了数据库的灵活性和可扩展性。
4
(4)数据库的完整性是数据库管理系统的重要要求之一,根据您对数据库完整性的理解,请说明数据库的三类完整性是什么?并列出这三类完整性约束在SQL语句中关键词?(5分)
数据库的三类完整性:
-
实体完整性
-
定义:确保表中每一行数据的唯一性,通常通过主键实现。
-
SQL关键词:
PRIMARY KEY
-
-
域(用户定义)完整性
-
定义:确保表中数据的准确性和有效性,包括数据类型、非空约束、默认值、取值范围等。
-
SQL关键词:
NOT NULL
、DEFAULT
、CHECK
-
-
参照完整性
-
定义:确保表间数据的一致性,通过外键约束实现。
-
SQL关键词:
FOREIGN KEY
-
5
(5)DBA是从事管理和维护数据库管理系统的相关工作人员的统称,属于运维工程师的一个分支,请根据所学知识回答,DBA的主要职责是什么?(5分)
DBA的主要职责是什么
-
数据库备份与恢复: 制定并执行数据库备份计划,确保数据的安全性。在数据丢失或损坏时,能够迅速恢复数据,减少业务中断时间。
-
数据库设计,安装,配置 : 负责设计数据库架构,选择合适的数据库管理系统,并进行安装和配置,确保数据库系统能够稳定运行。
-
数据库安全管理 :负责数据库的安全管理工作,包括设置用户权限、审计数据库操作、防止安全威胁等,确保数据库系统的安全稳定运行。
-
数据库监控和维护 :定期监控数据库的运行状态,包括磁盘空间、内存使用、连接数等关键指标,及时发现并解决潜在问题。
-
数据迁移和升级 :随着业务的发展,负责数据库系统的迁移或升级工作,确保数据的完整性和业务的连续性。
设计题
(1)某商店管理涉及商店、商品和职工三个实体,它们分别具有下列属性:
商店:商店编号,店名,店址,店经理
**商品:商品编号,商品名,单价,产地
职工:职工编号,职工名,性别,工资
这些实体间的联系如下:百货公司管辖若干个连领商店,每家商店经营若干商品,每家商店有若干职工,但每个职工只能服务于一家商店。
职工参加某商店工作有开始时间:商店销售商品的有月销售量。
1
(1). 请画出商店、商品和职工的ER图。(7分)
确定实体和属性:
-
商店(Store):商店编号(StoreID)、店名(StoreName)、店址(StoreAddress)、店经理(StoreManager)
-
商品(Product):商品编号(ProductID)、商品名(ProductName)、单价(UnitPrice)、产地(Origin)
-
职工(Employee):职工编号(EmployeeID)、职工名(EmployeeName)、性别(Gender)、工资(Salary)
确定实体之间的关系:
-
商店与商品之间是一对多关系:每个商店经营若干商品。
-
商店与职工之间是一对多关系:每个商店有若干职工,但每个职工只能服务于一家商店。
-
商店销售商品的月销售量。
-
职工参加某商店工作的开始时间。
2
(2)数据库设计是将数据库系统与现实世界进行密切的、有机的、协调一致的结合的过程。假设需要设计某个信息管理系统的数据库,按照结构化系统设计的方法,请播述数据库的设计过程?(10分)
数据库的设计过程?
1+3+1+1=6
1分析+3设计+1实施+1运行和维护
应用题
使用SQL语句完成以下操作
(1)创建Srudent表(需要包含相应的约束)。(3分)
数据类型约束说明:
Sno(学号)
数据类型:字符(8)
约束:主键
含义:每个学生都有一个唯一的学号,长度为8个字符。
作用:确保学号的唯一性,以便准确标识每个学生。
默认值:无(主键通常没有默认值)
Sname(姓名)
数据类型:字符(12)
约束:非空
含义:学生的名字,长度为12个字符。
作用:确保每个学生都有一个名字。
默认值:无(姓名通常没有默认值)
Ssex(性别)
数据类型:字符(2)
约束:取“男”或“女”
含义:学生的性别,只能是“男”或“女”。
作用:标识学生的性别。
默认值:“男”
Sage(年龄)
数据类型:整型
约束:取值范围15~36,默认值22
含义:学生的年龄,必须是15到36之间的整数。
作用:记录学生的年龄信息。
默认值:22(当没有指定年龄时,默认年龄为22)
Sdept(院系)
数据类型:字符(20)
约束:默认值“计算机系”
含义:学生所属的院系,长度最多为20个字符。
作用:标识学生所在的院系。
默认值:“计算机系”(当没有指定院系时,默认院系为“计算机系”)
CREATE TABLE Student ( Sno CHAR(8) PRIMARY KEY, Sname CHAR(12) NOT NULL, Ssex CHAR(2) CHECK (Ssex IN ('男', '女')) DEFAULT '男', Sage INT CHECK (Sage BETWEEN 15 AND 36) DEFAULT 22, Sdept CHAR(20) DEFAULT '计算机系' ); --------------------------------------------------------------------------------- CREATE TABLE Course ( Cno CHAR(8) PRIMARY KEY, Cname CHAR(8) NOT NULL, Teacher CHAR(10) UNIQUE ); CREATE TABLE SC ( Sno CHAR(8), Cno CHAR(8), Grade SMALLINT CHECK (Grade BETWEEN 0 AND 100), PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (Cno) REFERENCES Course(Cno) ON UPDATE CASCADE ON DELETE RESTRICT );
(2)检索课程名以"DB“开头,且倒数第3个字符为k的课程的详细情况。(3分)
INSERT INTO Course (Cno, Cname, Teacher) VALUES ('C001', 'DB高等kad', 'John Doe'); select * from Course where rtrim(Cname) like 'DB_%K__';
(3)向学生选修课程表中插入元组“学生S10选修课程号C4”。(3分)
INSERT INTO SC (Sno, Cno) VALUES ('S10', 'C4');
要确保
student和course里有对应查找s10和C4的数据没有就插入
尝试在 SC
表中插入的学生编号 Sno
或课程编号 Cno
在相应的 Student
或 Course
表中不存在。这违反了外键约束。确保在插入数据之前,这些外键在相关表中存在。
(4)删除选课成绩在55分以下的学生记录。(3分)
模拟对应的数据再查找
INSERT INTO Student (Sno, Sname, Ssex, Sage, Sdept) VALUES ('S11', '小明', '男', 21, '计算机系'); INSERT INTO Course (Cno, Cname, Teacher) VALUES ('C5', '高等数学A1', '马老师'); INSERT INTO SC (Sno, Cno,Grade) VALUES ('S11', 'C5',100); select * from sc where Grade > 50; select * from sc where Grade < 50; select * from sc where Grade 50;
(6)求出女同学的每一年龄组(超过3人)有多少人?要求查询结果按人数降序排列,人数相同的按年龄升序排列。(3分)
SELECT Sage, COUNT(*) AS NumOfStudents FROM Student WHERE Ssex = '女' GROUP BY Sage HAVING COUNT(*) > 3 ORDER BY NumOfStudents DESC, Sage ASC;
(7)统计每门课程的选课人数和考试最高分。(3分)
SELECT Cno, COUNT(*) AS NumOfStudents, MAX(Grade) AS HighestGrade FROM SC GROUP BY Cno;
(8)定义视图Sagc,其中包括学生学号以及每个学生选修课程的门数(要求成绩非空)和平均成绩。(3分)
CREATE VIEW Sagc AS SELECT Sno, COUNT(Cno) AS CourseCount, AVG(Grade) AS AvgGrade FROM SC WHERE Grade IS NOT NULL GROUP BY Sno;
(9)在Course表中增加一个类型为char(10)的职称(pro)列。(3分)
ALTER TABLE Course ADD pro CHAR(10);
(10)为用户user1授权Student表的查询和插入权限:收回用户userl对Student表的查询权限。(3分)
GRANT 权限 ON 对象类型 对象名 TO 同户名 [WITH GRANT OPTION]
GRANT SELECT ON TABLE STUDENT TO user1[with grant option]