数据库系统原理期末

www

分析题

数据库系统有哪些部分组成什么是数据库管理系统,其主要功能包括哪些方

数据库系统有哪些部分组成什么是数据库管理系统,其主要功能包括哪些方?(5分)

数据库系统一般由以下四个部分组成:

DB:数据库,长期存储在计算机内部,有组织,可以共享的大量数据的集合

DBMS:位于用户与操作系统之间的一层数据管理软件

DBA:数据库管理员是负责数据库的建立、使用和维护的人员。

硬件和软件:数据库系统还需要相应的硬件和软件支持。


数据库管理系统(DBMS):是一种软件工具或系统,用于管理和操作数据库。

  1. 数据定义语言(DDL):用于定义数据库结构、模式和数据类型。允许用户创建、修改和删除数据库对象,如视图、索引等。

  2. 数据操作语言(DML):用于执行数据操作,如插入、更新、删除和查询数据。用户可以使用查询语言(如SQL)编写和执行复杂的查询。

  3. 数据库安全和权限管理提供安全和权限管理机制,以控制对数据库的访问和操作。允许管理员分配用户角色、权限和访问级别。

  4. 数据完整性和约束::支持定义数据完整性规则和约束条件,以确保数据库中的数据符合预期的规范。

数据库系统中有哪三层模式结构?采用三层模式结构有什么好处?

(2)从数据库管理系统角度看,数据库系统中有哪三层模式结构?采用三层模式结构有什么好处?(5分)

数据库系统中有哪三层模式结构?

  1. 外模式

  2. 模式(逻辑模式)

  3. 内模式

好处?

  1. 保证了数据的独立性

    • 概念模式和内模式分开,保证数据的物理独立性。

    • 把外模式和概念模式分开,保证数据逻辑的独立性。

  2. 有利于数据共享

    • 所有用户使用统一概念模式导出的不同外模式,减少数据冗余,有利于多种应用程序间共享数据。

  3. 有利于数据安全保密

    • 每个用户只能操作属于自己的外模式数据视图,不能对数据库其他部分进行修改,保证了数据安全性。

  4. 三层模式结构还有利于数据库的设计、开发和维护,提高了数据库的灵活性和可扩展性。

image-20240627104136007


数据库的三类完整性是什么?并列出这三类完整性约束在SQL语句中关键词?

数据库的完整性是数据库管理系统的重要要求之一,根据您对数据库完整性的理解,请说明数据库的三类完整性是什么?并列出这三类完整性约束在SQL语句中关键词?(5分)

数据库的三类完整性:

  1. 实体完整性

    • 定义:确保表中每一行数据的唯一性,通常通过主键实现。

    • SQL关键词:PRIMARY KEY

  2. 域(用户定义)完整性

    • 定义:确保表中数据的准确性和有效性,包括数据类型、非空约束、默认值、取值范围等。

    • SQL关键词:NOT NULLDEFAULTCHECK

  3. 参照完整性

    • 定义:确保表间数据的一致性,通过外键约束实现。

    • SQL关键词:FOREIGN KEY

DBA的主要职责是什么?

(5)DBA是从事管理和维护数据库管理系统的相关工作人员的统称,属于运维工程师的一个分支,请根据所学知识回答,DBA的主要职责是什么?(5分)

DBA的主要职责是什么

  1. 数据库备份与恢复: 制定并执行数据库备份计划,确保数据的安全性。在数据丢失或损坏时,能够迅速恢复数据,减少业务中断时间。

  2. 数据库设计,安装,配置 : 负责设计数据库架构,选择合适的数据库管理系统,并进行安装和配置,确保数据库系统能够稳定运行。

  3. 数据库安全管理 :负责数据库的安全管理工作,包括设置用户权限、审计数据库操作、防止安全威胁等,确保数据库系统的安全稳定运行。

  4. 数据库监控和维护 :定期监控数据库的运行状态,包括磁盘空间、内存使用、连接数等关键指标,及时发现并解决潜在问题。

  5. 数据迁移和升级 :随着业务的发展,负责数据库系统的迁移或升级工作,确保数据的完整性和业务的连续性。

设计题

(1)某商店管理涉及商店、商品和职工三个实体,它们分别具有下列属性:

商店:商店编号,店名,店址,店经理

**商品:商品编号,商品名,单价,产地

职工:职工编号,职工名,性别,工资

这些实体间的联系如下:百货公司管辖若干个连领商店,每家商店经营若干商品,每家商店有若干职工,但每个职工只能服务于一家商店。

职工参加某商店工作有开始时间:商店销售商品的有月销售量

画出商店、商品和职工的ER图

(1). 请画出商店、商品和职工的ER图。(7分)

image-20240627110603410

image-20240627110838425

image-20240627110842862

image-20240627110854484

确定实体和属性

  • 商店(Store):商店编号(StoreID)、店名(StoreName)、店址(StoreAddress)、店经理(StoreManager)

  • 商品(Product):商品编号(ProductID)、商品名(ProductName)、单价(UnitPrice)、产地(Origin)

  • 职工(Employee):职工编号(EmployeeID)、职工名(EmployeeName)、性别(Gender)、工资(Salary)

确定实体之间的关系

  • 商店与商品之间是一对多关系:每个商店经营若干商品。

  • 商店与职工之间是一对多关系:每个商店有若干职工,但每个职工只能服务于一家商店。

  • 商店销售商品的月销售量。

  • 职工参加某商店工作的开始时间。

image-20240627112544288

image-20240627113442834

er图转换为关系模式的例子

image-20240627113426149

播述数据库的设计过程?(10分)

(2)数据库设计是将数据库系统与现实世界进行密切的、有机的、协调一致的结合的过程。假设需要设计某个信息管理系统的数据库,按照结构化系统设计的方法,请播述数据库的设计过程?(10分)

数据库的设计过程?

1+3+1+1=6

1分析+3结构设计+1实施+1运行和维护

image-20240627113738547


请简述数据库设计一般分为哪几个阶段,每个阶段的主要任务是什么?(7分)

  1. 需求分析阶段

    • 主要任务是理解用户的需求,包括数据需求和处理需求

    • 确定系统的目标和功能,收集和分析用户对数据的输入、存储和输出的需求。

  2. 概念设计阶段

    • 根据需求分析的结果,设计一个概念模型,通常使用ER图来表示。

    • 确定系统的主要实体、实体之间的关系以及实体的属性。

  3. 逻辑设计阶段

    • 将概念模型转换成逻辑模型,通常使用关系模型。

    • 设计数据库的逻辑结构,包括表结构、键、主键和外键等。

  4. 物理设计阶段

    • 根据逻辑模型和存储设备的特点,设计数据库的物理结构。

    • 确定索引、存储路径、数据分区等物理存储细节。

  5. 实施阶段

    • 根据物理设计的结果,创建数据库和表。

    • 进行数据的加载和初始设置。

  6. 测试阶段

    • 对数据库进行测试,确保其满足需求并且运行正常。

    • 测试包括功能测试、性能测试和安全性测试。

  7. 运行和维护阶段

    • 将数据库系统投入运行,并进行日常的维护和优化。

    • 根据用户反馈进行必要的调整和升级。

设有关系模式R(运动损编号,比赛项目,比赛成续,比赛类别,比赛主管)如果规定;每个运动员每参如一个比赛项目,只有一个比赛成绩;每个比赛项目只属子一个比赛类别:每个比赛类别只有一个比赛主管。请回客下列问

列出关系模式R的3个函数依赖,并指出候选码。(4分)2、判断关系模式R是否属于INF?是否属于2NF?并分别说明理由。(2分)3.如果有必要,将关系模式R分解成3NF,并用横线标出分解后的关系模式的候选码。(4分)

候选码: 候选码是能唯一标识每一条记录的最小属性集合。根据描述,我们可以确定候选码为:

  • {运动员编号, 比赛项目}

函数依赖: 函数依赖描述了一个属性集合中的属性对另一个属性的决定关系。

在关系模式 R 中,可以推导出以下三个函数依赖:

  1. 运动员编号 -> 比赛项目,比赛成绩,比赛类别,比赛主管

    • 一个运动员参加一个比赛项目,只有一个比赛成绩,属于一个比赛类别,由一个比赛主管管理。

  2. 比赛项目 -> 比赛类别

    • 每个比赛项目只能属于一个比赛类别。

  3. 比赛类别 -> 比赛主管

    • 每个比赛类别只能由一个比赛主管管理。

应用题

image-20240627114046221

image-20240627114056216

image-20240627114109967

使用SQL语句完成以下操作

(1)创建Srudent表(需要包含相应的约束)。(3分)

image-20240627114046221

数据类型约束说明:

  1. Sno(学号)

    • 数据类型:字符(8)

    • 约束:主键

    • 含义:每个学生都有一个唯一的学号,长度为8个字符。

    • 作用:确保学号的唯一性,以便准确标识每个学生。

    • 默认值:无(主键通常没有默认值)

  2. Sname(姓名)

    • 数据类型:字符(12)

    • 约束:非空

    • 含义:学生的名字,长度为12个字符。

    • 作用:确保每个学生都有一个名字。

    • 默认值:无(姓名通常没有默认值)

  3. Ssex(性别)

    • 数据类型:字符(2)

    • 约束:取“男”或“女”

    • 含义:学生的性别,只能是“男”或“女”。

    • 作用:标识学生的性别。

    • 默认值:“男”

  4. Sage(年龄)

    • 数据类型:整型

    • 约束:取值范围15~36,默认值22

    • 含义:学生的年龄,必须是15到36之间的整数。

    • 作用:记录学生的年龄信息。

    • 默认值:22(当没有指定年龄时,默认年龄为22)

  5. 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__';

image-20240627120239325

(3)向学生选修课程表中插入元组“学生S10选修课程号C4”。(3分)

INSERT INTO SC (Sno, Cno)
VALUES ('S10', 'C4');

要确保

image-20240627121114079

student和course里有对应查找s10和C4的数据没有就插入

尝试在 SC 表中插入的学生编号 Sno 或课程编号 Cno 在相应的 StudentCourse 表中不存在。这违反了外键约束。确保在插入数据之前,这些外键在相关表中存在。

(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;
​

image-20240627132553129

(8)定义视图Sagc,其中包括学生学号以及每个学生选修课程的门数(要求成绩非空)和平均成绩。(3分)

image-20240627132848802

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]

image-20240627131705866

GRANT SELECT ON TABLE STUDENT TO user1[with grant option]

image-20240627131713469

MOOC

image-20240703172732475

按根据以上需求设计成绩管理系统的ER图

根据ER图设计数据库的逻辑结构(表结构)

image-20240703175814463

image-20240703175823023

image-20240703175838873

指出每个逻辑结构(表结构)的键、主键和外键

Student 表

    • 主键 (Primary Key): StudentID

Course 表

    • 主键 (Primary Key): CourseID

Enrollment 表

    • 主键 (Primary Key): StudentID, CourseID(联合主键)

    • 外键 (Foreign Key): StudentID(引用 Student 表的 StudentID),CourseID(引用 Course 表的 CourseID

完整性约束

  • 学生表:自定义完整性约束可以是年龄必须在合理的范围内,比如16-60岁。

  • 课程表:自定义完整性约束可以是学时必须小于或等于100。

  • 选课表:自定义完整性约束可以是分数必须在0-100之间。

判定每个逻辑结构属于几范式,并说明原因

  1. 第一范式(1NF)每列都是不可分割的基本数据项,即表中的所有字段都应该只包含原子性的值,而不能包含集合、数组或对象。在上述设计中,所有表都满足1NF。

  2. 第二范式(2NF)表中没有部分依赖,即非主键列完全依赖于主键。在上述设计中,学生表和课程表的主键只包含单一字段,因此没有部分依赖,满足2NF。

  3. 第三范式(3NF)不存在传递依赖,即非主键列只能依赖于主键,不能依赖于其他非主键列。在上述设计中,选课表的主键是StudentID和CourseID的组合,Score和EnrollmentTime只依赖于这个复合主键,不存在对非主键列的依赖,因此选课表满足3NF。

  • Student:第三范式(3NF),所有非主属性都依赖于主键,没有传递依赖。

  • Course:第三范式(3NF),所有非主属性都依赖于主键,没有传递依赖。

  • Enrollment:第三范式(3NF),所有非主属性都依赖于主键,没有传递依赖。

设计索引字段并说明选择理由

CREATE INDEX idx_enrollment_date ON Enrollment (EnrollmentDate);
CREATE INDEX idx_grade ON Enrollment (Grade);

选择理由:

由于选课时间和分数经常被作为筛选条件进行查询,可以在这两个字段上建立索引以提高查询效率。

  • EnrollmentDate索引:加快按选课时间查询的速度。

  • Grade索引:加快按分数查询的速度,尤其是在需要按分数范围进行查询时效果显著。

索引可以显著提高查询性能,尤其是在执行范围查询(如BETWEEN)或排序查询时。由于这两个字段经常用于筛选,建立索引可以减少查询时间,提高系统响应速度。

系统原理题

image-20240703172758559

数据库系统的组成及核心和大脑部分:

-

数据库(Database):存储数据的集合。

数据库管理系统(DBMS, Database Management System):管理数据库的软件。

数据库应用程序(Database Application):用户与数据库交互的工具和接口。

数据库管理员(DBA, Database Administrator):负责数据库维护和管理的人员。

数据库用户(Database Users):使用数据库系统的人员。

数据库管理系统(DBMS)是数据库系统的核心和大脑

负责数据的定义、存储、管理和操作,包括查询处理、事务管理、并发控制、恢复机制等。

数据库系统恢复的基本原理及介质故障恢复策略

基本原理:

  • 日志文件:记录对数据库的所有更新操作。通过日志文件可以在系统故障后进行恢复。

  • 检查点:定期在日志文件中做标记,以减少恢复时需要处理的日志记录数量。

  • 重做(Redo)和 撤销(Undo):重做所有未完成的事务,撤销所有已提交但未持久化的事务。

介质故障的恢复策略:

  • 备份恢复:定期进行数据库备份,将备份文件保存到安全的地方。一旦发生介质故障,可以使用备份文件进行恢复。

  • 介质恢复:在恢复过程中,首先使用最近的备份文件恢复数据库,然后利用日志文件重做自上次备份以来的所有事务。

并发操作的死锁问题及应对措施

死锁现象:

  • 在并发操作中,多个事务同时运行,如果其中两个或多个事务相互等待对方持有的资源释放,就会发生死锁。例如,事务A持有资源X并等待资源Y,而事务B持有资源Y并等待资源X,这种情况就是死锁。

应对措施:

  • 死锁预防:在事务开始前,预先检查是否会产生死锁,若可能产生死锁则拒绝事务。

  • 死锁检测:系统定期检查死锁情况,一旦发现死锁则终止其中一个事务,释放其持有的资源。

  • 死锁避免:通过某种资源分配策略,如资源请求时按一定顺序分配,来避免死锁的产生。

数据库设计中与具体DBMS无关的步骤及安全性设计

与具体DBMS无关的步骤

概念设计:通过ER图等工具描述业务需求和数据结构,这是一个高层次的设计步骤,不涉及具体的DBMS。

逻辑设计:将概念模型转换为逻辑模型,例如关系模型,也不涉及具体的DBMS


安全性设计考虑:

  • 用户认证:确保只有合法用户才能访问数据库。

  • 访问控制:根据用户角色设置不同的权限,限制用户只能执行其职责范围内的操作。

  • 数据加密:对存储和传输的数据进行加密,防止数据被非法窃取或篡改。

  • 审计和监控:记录和监控数据库操作,及时发现和响应异常活动。

  • 备份和恢复:定期备份数据,制定恢复计划,以应对数据丢失或破坏的情况。

-----

一,数据库分析题

image-20240703182908018

二.SQL程序设计

image-20240703182301330

image-20240703202120882

-- 1. 创建数据库 DB_Library
CREATE DATABASE DB_Library;

-- 2. 创建 Student 表,并定义相关约束
USE DB_Library;
CREATE TABLE IF NOT EXISTS Student (
    Sno INT PRIMARY KEY,
    Sname VARCHAR(50) NOT NULL UNIQUE,
    Ssex CHAR(2) CHECK (Ssex IN ('男', '女')),
    Sage INT CHECK (Sage BETWEEN 16 AND 25),
    Sgrade CHAR(10)
);


-- 3. 创建 Reservation 表,并定义相关约束
CREATE TABLE Reservation (
    Sno INT,
    SeatNo CHAR(4),
    ReserveTime DATETIME,
    PRIMARY KEY (Sno, SeatNo),
    FOREIGN KEY (Sno) REFERENCES Student(Sno),
    FOREIGN KEY (SeatNo) REFERENCES Seat(SeatNo)
);

-- 4. 创建座位状态为“空闲”的视图 View_scat
CREATE VIEW View_scat AS
SELECT *
FROM Seat
WHERE State = '空闲';

-- 5. 向学生信息表 Student 中插入一条记录
INSERT INTO Student (Sno, Sname, Ssex, Sage)
VALUES (202305088, '李华', '女', 20);

-- 6. 将'2023'级学生的年级统一改为'大一'
UPDATE Student
SET Sage = '大一'
WHERE Sage = '2023';

-- 7. 查询座位信息表 Seat 中座位区域在'A区'的座位的信息
SELECT *
FROM Seat
WHERE Place = 'A区';

-- 8. 查询'大一'学生的平均年龄,最大年龄和最小年龄
SELECT AVG(Sage) AS AverageAge, MAX(Sage) AS MaxAge, MIN(Sage) AS MinAge
FROM Student
WHERE Sage = '大一';

-- 9. 查询预定时间为'2024-06-19'的学生的学号和姓名
SELECT S.Sno, S.Sname
FROM Student S
JOIN Reservation R ON S.Sno = R.Sno
WHERE R.ReserveTime = '2024-06-19';

-- 10. 创建存储过程 Pro_sturez
DELIMITER //

CREATE PROCEDURE Pro_sturez (
    IN p_student_id INT,
    IN p_start_date DATE,
    IN p_end_date DATE,
    OUT p_reservation_count INT
)
BEGIN
    SELECT COUNT(*)
    INTO p_reservation_count
    FROM Reservation
    WHERE Sno = p_student_id
    AND ReserveTime BETWEEN p_start_date AND p_end_date;
END //

DELIMITER ;

-- 11. 调用存储过程查询2024001号学生,在2024-3-1至2024-6-30之间在图书馆预订座位的次数
SET @reztimes = 0;
CALL Pro_sturez(2024001, '2024-03-01', '2024-06-30', @reztimes);
SELECT @reztimes AS ReservationTimes;

四、规范化设计题(共4题,共15分)

image-20240703181920038

现有描述软件学院学生选课情况的关系模式

R(S#,Dept,Dname,C#,Grade) 其中:S#表示学生学号,Dept表示学生所在系名,Dngme表示系主任, C#表示课程名,Grade 表示成绩。

如果规定:软件学院有多个系部,每个系有若于名学生,每个学生只属于一个系,每个系只有一名系主任,每个学生可选多门课,每个学生选每门课有一个成绩。 试回答下列问题:

(1)根据上述规定,写出关系模式R的基本函数依:(3分)

S# → Dept, Dname:学生学号 S# 确定所在系名 Dept 和系主任 Dname。

Dept → Dname:系名 Dept 确定系主任 Dname。

S#, C# → Grade:学生学号 S# 和课程名 C# 确定成绩 Grade。

(2)找出关系模式R的候选码:(3分)

候选码是能够唯一标识关系中每一元组的最小属性集。

  • {S#, C#}

因为 S# 和 C# 的组合能够唯一标识每一个成绩 Grade,且所有其他属性(Dept 和 Dname)都可以通过 S# 确定,因此 {S#, C#} 是候选码。

(3)试问关系模式R最高已经达到第几范式?为什么?(4分)

  1. 第一范式 (1NF)

    • 所有属性都是原子性的,没有重复组。

    • 关系模式 R 符合第一范式。

  2. 第二范式 (2NF)

    • 关系模式 R 必须在 1NF 的基础上,且所有非主属性完全依赖于主键。

    • 在 R 中,非主属性 Dept 和 Dname 都是完全依赖于主键 S#,Grade 依赖于 {S#, C#}。

    • 因此,关系模式 R 符合第二范式。

  3. 第三范式 (3NF)

    • 在 2NF 的基础上,所有非主属性必须直接依赖于主键,而不能传递依赖。

    • 在 R 中,Dept 依赖于 S#,而 Dname 依赖于 Dept,这就形成了传递依赖。

    • 因此,关系模式 R 不符合第三范式。

综上所述,关系模式 R 最高已经达到第二范式。

(4)如果R不属于 BCNF,请将R分解成满足 BCNF 的关系模式。(5分)

五、数据库设计题(共2题,共13分)

image-20240703181928488

某学校打算对毕业生就业进行信息化管理,需要实现院系、专业、毕业生信息管理(设有就业标志,初值为“待业):②职业类型、职业信息(职业号、类型号、需求数量、聘用数量、用人单位)登记;③毕业生就业登记(学号、职业号)功能。你作为软件公司数据库设计人员,负责该项目的数据库设计,请数据库设计流程及本项目描述回答以下问题:

1.请简述数据库设计一般分为哪几个阶段,每个阶段的主要任务是什么?(7分)

  1. 需求分析阶段

    • 主要任务是理解用户的需求,包括数据需求和处理需求

    • 确定系统的目标和功能,收集和分析用户对数据的输入、存储和输出的需求。

  2. 概念设计阶段

    • 根据需求分析的结果,设计一个概念模型,通常使用ER图来表示。

    • 确定系统的主要实体、实体之间的关系以及实体的属性。

  3. 逻辑设计阶段

    • 将概念模型转换成逻辑模型,通常使用关系模型。

    • 设计数据库的逻辑结构,包括表结构、键、主键和外键等。

  4. 物理设计阶段

    • 根据逻辑模型和存储设备的特点,设计数据库的物理结构。

    • 确定索引、存储路径、数据分区等物理存储细节。

  5. 实施阶段

    • 根据物理设计的结果,创建数据库和表。

    • 进行数据的加载和初始设置。

  6. 测试阶段

    • 对数据库进行测试,确保其满足需求并且运行正常。

    • 测试包括功能测试、性能测试和安全性测试。

  7. 运行和维护阶段

    • 将数据库系统投入运行,并进行日常的维护和优化。

    • 根据用户反馈进行必要的调整和升级。

2.根据学校提出的相关功能要求,你对高校学生就业管理系统需求分析阶段的设计目标是什么?调查的内容是什么?(6分)

设计目标
  1. 实现功能绣球:确保系统能够有效地管理毕业生信息、职业信息以及就业登记。

  2. 确定数据需求:识别系统需要存储和处理的数据类型和数据量。

  3. 用户友好性:保证系统界面和操作流程的简便,便于院系工作人员和毕业生使用。

  4. 数据安全和隐私保护确保毕业生的个人信息和就业信息的安全

  5. 系统扩展性:为未来功能扩展和数据增长预留空间。

调查内容

  1. 院系、专业和毕业生信息

  2. 职业类型和职业信息

  3. 毕业生就业登记

  4. 系统使用人员的需求和操作流程

  5. 系统的现有数据源和集成需求

用户权限管理(每小题2分,共6分) (1)创建用户U1,密码为“2023”(2分):

CREATE USER U1 IDENTIFIED BY '2023';

(2)为用户 U1授子对 Goods 表的查询、删除权限,并允许其传递该权限给 其他人(2分);

-- 授予查询权限
GRANT SELECT ON Goods TO U1;

-- 授予删除权限,并允许传递
GRANT DELETE ON Goods TO U1 WITH GRANT OPTION;

(3)撤销用户U1所拥有的对Goods 表的删除权限(2分)。

-- 撤销删除权限
REVOKE DELETE ON Goods FROM U1;

事务是数据库的逻辑工作单位,在DBMS的并发控制中有其自身 ACID属性,请列出事务的属性并分析其特点。(4分)

事务是数据库管理系统(DBMS)中的逻辑工作单位,具有以下四个基本属性,通常简称为 ACID 属性:

  • 原子性(Atomicity):事务被视为一个不可分割的最小工作单元,要么全部执行成功,要么全部执行失败。

  • 一致性(Consistency)事务的执行不能破坏数据库的完整性约束(如主键、外键约束),所有事务必须满足预设的规则和约束。

  • 隔离性(Isolation) 每个事务的操作不会被其他事务所干扰

  • 持久性(Durability)一旦事务提交,其修改将永久保存在数据库中

为充分共享数据库资源,DBMS 在并发控制中保证并行操作的正确性,提 供了多种类型封锁机制,基本的封锁类型有哪两种?(2分)

共享锁(Shared Lock)允许多个事务同时对同一资源(如数据行)进行读取操作,但阻止其他事务对该资源进行写操作。共享锁之间不互斥,可以并行获取。

排他锁(Exclusive Lock):在事务需要更新资源时加锁,防止其他事务对该资源进行读取或写入操作。排他锁之间互斥,同一时间只允许一个事务获取排他锁。

编程题

image-20240703212403050

DELIMITER //

CREATE FUNCTION get_price(book_id_input INT)
RETURNS DECIMAL(10,2)
BEGIN
 DECLARE book_price DECIMAL(10,2);

 SELECT price INTO book_price
 FROM Books
 WHERE book_id = book_id_input;

 IF book_price IS NULL THEN
     RETURN NULL;
 ELSE
     RETURN book_price;
 END IF;

END //

DELIMITER ;
--调用函数
Tsamec.(osdormtory="a8-so6($tudent x Goods x Sales)四、数据库设计题(共3题,共10分)
(4)get price(book id);

image-20240703212627631

image-20240703212636743

DELIMITER //

CREATE PROCEDURE top_product(
    OUT top_product VARCHAR(255),
    OUT total_quantity INT,
    IN month_input VARCHAR(7)
)
BEGIN
    SELECT product_name, SUM(quantity) as total_quantity
    INTO top_product, total_quantity
    FROM Products
    JOIN Sales ON Products.product_id = Sales.product_id
    WHERE DATE_FORMAT(sale_date, '%Y-%m') = month_input
    GROUP BY product_name
    ORDER BY total_quantity DESC
    LIMIT 1;
END //

DELIMITER ;

END $$

DELIMITER ;

-- 定义变量
SET @top_product = '';
SET @total_quantity = 0;
SET @month = '2023-06';

-- 调用存储过程
CALL top_product(@top_product, @total_quantity, @month);

-- 输出结果
SELECT @top_product AS TopProduct, @total_quantity AS TotalQuantity;

SQL

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值