ToB企服应用市场:ToB评测及商务社交产业平台

标题: 2024年江西省职业院校技能大赛高职组“数据库运行与管理“竞赛样题剖析答案 [打印本页]

作者: 星球的眼睛    时间: 2024-10-19 03:00
标题: 2024年江西省职业院校技能大赛高职组“数据库运行与管理“竞赛样题剖析答案
2024年江西省职业院校技能大赛高职组"数据库运行与管理"竞赛样题剖析答案


  
一、赛项背景
本赛项内容基于数据库课程教学尺度及人才培养目标,引领干系专业课程改革创新,促进高等职业院校信息类干系专业创建,培养技能型人才;产教融合、校企合作,通过赛项展示和进步教师的数据库教学科研能力,提升学生从事数据库干系岗位的适配性,提供数据库领域的高素质技术技能型人才。全面观察高职学生在数据库概念筹划、逻辑筹划、物理筹划、数据查询与分析、数据库部署与维护、数据库备份与规复等知识、技术技能以及职业素养能力;全面查验学生在数据库方面的工程实践能力和创新能力;以高程度赛事引领职业教育高质量发展,发挥树旗、导航、定标、催化作用。
二、竞赛内容
赛卷分模块A、模块B和模块C三个部门,每个模块均为独立模块,得分不传递。

三、成果物提交
“数据库运行与管理”赛项参赛选手须按照三个模块的任务要求完成对应的成果物并提交。模块A、C在竞赛平台中完成考核并提交,无需额外再提交成果物,模块B的成果物打包成压缩包提交到竞赛平台。
参赛选手在角逐竣事前可以自行重新提交成果物,角逐竣事后选手无法提交成果物。
四、竞赛留意事项
提交的成果物资源内容中,不能填写与选手干系的信息,如姓名和院校等。如出现上述标记,效果按照零分处理。
模块A:数据库理论

一、模块考核点
本模块分值为15分。
本模块采取机考方式,试题为单选题、多选题、判断题等,重要考查从事本职业应把握的基础知识、专业知识、课程思政等内容。包括但不限于:数据库基础理论、SQL语言与查询优化、数据库筹划与建模、事件与并发控制、数据库索引与性能优化、数据库安全、数据库备份与规复、分布式数据库与大数据处理、存储引擎、盘算机网络与数据库的交互、服务器配置与数据库管理、相应的法律法规及课程思政等内容。
二、模块任务
1.(单选题)以下关于SQL语句优化的说法中错误的是()。
A.尽可能地减少多表查询
B.只检索须要的属性列
C.尽量利用干系子查询
D.常常提交修改,尽早开释锁
答案:C
剖析:
A 选项:多表查询会增长查询的复杂度和资源消耗,尽可能减少多表查询可以进步查询效率,以是该说法正确。
B 选项:只检索须要的属性列可以减少数据的传输量,从而进步查询性能,该说法正确。
C 选项:干系子查询会导致查询效率低下,应该尽量避免利用,而不是尽量利用,以是该说法错误。
D 选项:常常提交修改,尽早开释锁可以进步数据库的并发性能,该说法正确。
2.(多选题)下面哪些选项是关系型数据库的特性?()。
A.数据以表格情势构造
B.支持非布局化数据存储
C.利用 SQL 进行数据查询
D.数据存储在文档中
答案:AC
剖析:
A 选项:关系型数据库中数据以表格情势构造,这是关系型数据库的根本特征之一,以是该选项正确。
B 选项:关系型数据库重要处理布局化数据,而非布局化数据存储不是其特性,该选项错误。
C 选项:SQL 是关系型数据库进行数据查询、操纵等的尺度语言,该选项正确。
D 选项:数据存储在文档中是文档型数据库的特性,而非关系型数据库,该选项错误。
3.(判断题)在关系型数据库中,每个表都必须有一个主键。()。
A.正确
B.错误
答案:A
剖析:在关系型数据库中,主键用于唯一标识表中的每一行记录。虽然在某些数据库管理体系中允许表没有显式定义主键,但从关系型数据库的理论和数据完整性的角度看,每个表都应该有一个主键来确保数据的唯一性、完整性以及方便数据的操纵和管理等。以是该说法正确。
模块B:数据库筹划与运维

一、模块考核点
模块分值45分。
本模块重要观察选手在数据库筹划和维护中的综合能力。选手需围绕给定的业务场景和需求描述,详细分析业务流程,识别关键实体和流程需求,明白数据流动和交互,筹划合理的实体关系图(ER图)或数据流图,定义实体、属性及其相互关系,确保数据的完整性和规范化。在筹划阶段,选手需合理规划字段类型、主键、外键约束,并构建数据库表布局,完成数据库的概念筹划、逻辑筹划和物理筹划全过程。最后,选手需根据任务要求,完成MySQL、Redis等数据库的部署和运维,优化数据库性能,确保体系的高效运行和稳定性。
二、模块任务
任务一:数据库筹划
某校图书馆为了提升效率,须要开辟一个图书馆管理体系。请根据下述需求描述完成该体系的数据库筹划。
【需求描述】
(1)记录书籍信息,包括书籍的名称、ISBN、ISSN、作者、出版日期、出版社和价格。
(2)记录书籍作者信息,一本书可以有多个作者,一个作者可以写多本书,每位作者有一个唯一的ID、姓名。
(3)记录图书馆会员信息:每位会员有一个唯一的ID、姓名和注册日期。
(4)记录会员借阅记录:每位会员可以借阅多本书,每本书可以被多个会员借阅,记录每本书的借阅情况,包括借阅书籍、借书日期、还书日期和会员ID
1.根据需求阶段收集的信息,筹划一个概念模型(ER图)。需包含需求描述所涉及的实体,并定义他们之间的关系。
2.基于概念模型,筹划一个逻辑模型,定义表布局和字段,请你利用 SQL DDL 语句来表示这些筹划。包括:每个表的字段及其符合的数据类型、确定字段的数据存储规格(例如,字符串字段的长度)、故意义的字段名称、主键和外键约束、表与表之间的关系。
3.在逻辑模型的基础上,进行物理筹划。请考虑为表筹划索引,以优化查询性能,筹划表的分区(如果适用)和存储方案,以进步性能和管理大数据量。
任务一参考答案:

  1. CREATE TABLE Book (
  2.     BookID INT AUTO_INCREMENT PRIMARY KEY,
  3.     Name VARCHAR(255),
  4.     ISBN VARCHAR(13),
  5.     ISSN VARCHAR(9),
  6.     PublishDate DATE,
  7.     Publisher VARCHAR(255),
  8.     Price DECIMAL(10, 2)
  9. );
复制代码

  1. CREATE TABLE Author (
  2.     AuthorID INT AUTO_INCREMENT PRIMARY KEY,
  3.     AuthorName VARCHAR(255)
  4. );
复制代码

  1. CREATE TABLE Book_Author (
  2.     BookID INT,
  3.     AuthorID INT,
  4.     FOREIGN KEY (BookID) REFERENCES Book(BookID),
  5.     FOREIGN KEY (AuthorID) REFERENCES Author(AuthorID),
  6.     PRIMARY KEY (BookID, AuthorID)
  7. );
复制代码

  1. CREATE TABLE Member (
  2.     MemberID INT AUTO_INCREMENT PRIMARY KEY,
  3.     MemberName VARCHAR(255),
  4.     RegisterDate DATE
  5. );
复制代码

  1. CREATE TABLE BorrowRecord (
  2.     BorrowRecordID INT AUTO_INCREMENT PRIMARY KEY,
  3.     BookID INT,
  4.     MemberID INT,
  5.     BorrowDate DATE,
  6.     ReturnDate DATE,
  7.     FOREIGN KEY (BookID) REFERENCES Book(BookID),
  8.     FOREIGN KEY (MemberID) REFERENCES Member(MemberID)
  9. );
复制代码
  1. CREATE INDEX idx_ISBN ON Book(ISBN);
复制代码
  在会员表(Member)中,对MemberName字段创建索引,方便根据会员姓名查询会员信息。
  1. CREATE INDEX idx_MemberName ON Member(MemberName);
复制代码
  在借阅记录表(BorrowRecord)中,对BookID和MemberID字段创建索引,因为这两个字段常常用于查询借阅关系。
  1. CREATE INDEX idx_BookID_MemberID ON BorrowRecord(BookID, MemberID);
复制代码

  1. -- 假设使用MySQL的分区功能
  2. ALTER TABLE Book
  3. PARTITION BY RANGE (YEAR(PublishDate)) (
  4.     PARTITION p2020 VALUES LESS THAN (2021),
  5.     PARTITION p2021 VALUES LESS THAN (2022),
  6.     PARTITION p2022 VALUES LESS THAN (2023),
  7.     PARTITION p2023 VALUES LESS THAN (2024),
  8.     PARTITION p2024 VALUES LESS THAN MAXVALUE
  9. );
复制代码
  对于借阅记录表(BorrowRecord),如果按照借书日期进行查询较为频仍,可以根据借书日期(BorrowDate)进行范围分区。
  1. ALTER TABLE BorrowRecord
  2. PARTITION BY RANGE (YEAR(BorrowDate)) (
  3.     PARTITION pb2020 VALUES LESS THAN (2021),
  4.     PARTITION pb2021 VALUES LESS THAN (2022),
  5.     PARTITION pb2022 VALUES LESS THAN (2023),
  6.     PARTITION pb2023 VALUES LESS THAN (2024),
  7.     PARTITION pb2024 VALUES LESS THAN MAXVALUE
  8. );
复制代码
  在存储方面,可以选择符合的存储引擎。例如,InnoDB在事件处理和数据完整性方面表现较好,适合这种须要管理多表关系的图书馆管理体系。同时,可以根据服务器的硬件资源配置,如磁盘类型(SSD或HDD)、内存巨细等,合理分配表空间和缓存设置,以进步数据库的团体性能。
  任务二:数据库运维
你将负责在Ubuntu服务器上安装和配置MySQL、Redis数据库。你须要确保数据库能够高效稳定、安全地运行。
1.安装MySQL8.0,确保MySQL服务在体系启动时自动启动。
2.设置Mysql用户Root用户暗码为“jiangxi”。
3.配置MySQL的字符集设置为utf8mb4、排序规则设置为utf8mb4_unicode_ci。
4.设置MySQL的最大连接数为200。
5.设置MySQL的InnoDB缓冲池巨细为512M。
6.启用MySQL慢查询日记,设置阈值为2秒。
7.修改Redis的监听端口为8379。
8.启用Redis的守卫进程。
9.指定Redis客户端闲置时间为100后关闭连接。
指定Redis数据存放目次路径为/var/lib/redis。
任务二参考答案:

  1. sudo apt update
复制代码
  1. - 然后安装MySQL 8.0服务器:
复制代码
  1. sudo apt install mysql - server - 8.0
复制代码

  1. sudo systemctl enable mysql
复制代码

  1. sudo mysql_secure_installation
复制代码
  1. - 在交互过程中,按照提示设置密码为“jiangxi”。
复制代码

  1. sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
复制代码
  1. - 在`[mysqld]`节下添加以下内容:
复制代码
  1. character - set - server = utf8mb4
  2. collation - server = utf8mb4_unicode_ci
复制代码
  1. - 保存并退出文件后,重启MySQL服务:
复制代码
  1. sudo systemctl restart mysql
复制代码

  1. max_connections = 200
复制代码
  1. - 重启MySQL服务:
复制代码
  1. sudo systemctl restart mysql
复制代码

  1. innodb_buffer_pool_size = 512M
复制代码
  1. - 重启MySQL服务:
复制代码
  1. sudo systemctl restart mysql
复制代码

  1. slow_query_log = 1
  2. long_query_time = 2
复制代码
  1. - 重启MySQL服务:
复制代码
  1. sudo systemctl restart mysql
复制代码
  1. sudo apt update
复制代码
  1. - 安装Redis:
复制代码
  1. sudo apt install redis - server
复制代码

  1. sudo nano /etc/redis/redis.conf
复制代码
  1. - 将`port 6379`修改为`port 8379`。
  2. - 保存并退出文件后,重启Redis服务:
复制代码
  1. sudo systemctl restart redis - server
复制代码

  1. sudo systemctl restart redis - server
复制代码

  1. sudo systemctl restart redis - server
复制代码

  1. sudo systemctl restart redis - server
复制代码
模块C:数据库查询与分析

一、模块考核点
模块分值40分。
本模块重要观察选手根据给定的任务场景、数据库表布局及字段说明,结合实际业务需求,编写对应的SQL查询语句。要求选手在准确明白任务要求的基础上,合理运用SQL语言中的查询、条件过滤、聚合函数、连接(JOIN)操纵等功能,完成数据查询和效果集的天生。
二、模块任务
有一个员工employees表简况如下:
emp_nobirth_datefirst_namegenderhire_date100011953-09-02张三M1986-06-26100021964-06-02李四M1985-11-21100031959-12-03张伟M1986-08-28100041954-05-01王红F1986-12-01 1.请你编写SQL语句查找employees表里最晚入职员工的所有信息,以上例子输出如下:
100041954-05-01王红F1986-12-01 2.请你编写SQL语句查找employees表里入职员工时间排名倒数第三的员工所有信息,以上例子输出如下:
100011953-09-02张三M1986-06-26 模块C参考答案:

  1. SELECT *
  2. FROM employees
  3. ORDER BY hire_date DESC
  4. LIMIT 1;
复制代码

  1. SELECT *
  2. FROM (
  3.     SELECT *,
  4.         ROW_NUMBER() OVER (ORDER BY hire_date DESC) AS rank
  5.     FROM employees
  6. ) AS subquery
  7. WHERE rank = (
  8.     SELECT COUNT(*) - 2
  9.     FROM employees
  10. );
复制代码

如果对您有资助的话,点赞、关注、收藏可以三连一下,您的支持是我创作的最大动力!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4