版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年数据库系统考试题及答案一、单项选择题(每题2分,共20分)1.关于关系数据库的候选键,以下描述正确的是()A.候选键只能由单个属性构成B.候选键是能唯一标识元组的最小属性集合C.候选键一定是主键D.候选键在关系模式中必须显式声明2.若事务T1对数据A加了共享锁(S锁),则其他事务()A.只能对A加S锁B.只能对A加X锁C.无法对A加任何锁D.可以对A加S锁或X锁3.以下不属于数据仓库典型特征的是()A.面向主题B.支持实时事务处理C.数据集成性D.历史数据存储4.在关系代数中,表达式σ(A>5∧B='X')(R⋈S)等价于()A.σ(A>5)(σ(B='X')(R⋈S))B.(σ(A>5)(R))⋈(σ(B='X')(S))C.σ(A>5∧B='X')(R)⋈SD.R⋈σ(A>5∧B='X')(S)5.某关系模式R(U,F),其中U={A,B,C,D},F={AB→C,C→D,D→A},则R的候选键是()A.ABB.BCC.CDD.BD6.关于B+树索引与哈希索引的对比,错误的是()A.B+树支持范围查询,哈希索引不支持B.哈希索引在等值查询时性能更优C.B+树索引的维护成本低于哈希索引D.哈希索引无法避免哈希冲突7.事务日志(RedoLog)的主要作用是()A.实现事务的原子性B.实现事务的持久性C.实现事务的隔离性D.实现事务的一致性8.在分布式数据库中,以下不属于数据分片方式的是()A.水平分片B.垂直分片C.混合分片D.随机分片9.若关系模式R属于3NF,则R一定满足()A.不存在非主属性对候选键的部分函数依赖B.不存在主属性对候选键的传递函数依赖C.不存在非主属性对候选键的传递函数依赖D.所有属性都完全函数依赖于候选键10.关于多版本并发控制(MVCC),以下说法错误的是()A.MVCC通过维护数据的多个版本实现读不加锁B.MVCC可以避免脏读、不可重复读和幻读C.MVCC的写操作需要更新版本号D.MVCC在事务提交时才会删除旧版本数据二、填空题(每空1分,共15分)1.关系数据库的三级模式结构包括外模式、______和内模式。2.事务的ACID特性中,A代表______,I代表______。3.数据完整性约束包括实体完整性、______和用户定义完整性。4.在SQL中,用于限制列取值范围的约束是______。5.关系代数中,π操作对应______(填“投影”或“选择”)。6.数据库恢复的基础是______和______。7.分布式数据库的“CAP定理”指______、可用性和分区容忍性三者不可兼得。8.数据仓库的ETL过程包括抽取(Extract)、______和加载(Load)。9.若关系模式R的所有属性都是主属性,则R至少属于______范式。10.B+树中,所有叶子节点通过______指针连接,支持顺序访问。11.数据库索引分为聚集索引和______,前者决定数据的物理存储顺序。三、简答题(每题7分,共35分)1.简述关系模型中函数依赖与多值依赖的区别,并举例说明。2.说明数据库中死锁的检测与处理方法,列举两种常见的死锁预防策略。3.对比OLTP(联机事务处理)与OLAP(联机分析处理)的主要差异,各举一个应用场景。4.解释索引失效的常见原因,并给出三条优化建议。5.说明分布式数据库中数据复制的优缺点,列举两种复制策略。四、设计题(共20分)某医院拟开发患者信息管理系统,需求如下:-患者信息包括:患者ID(唯一)、姓名、性别、出生日期、联系方式;-医生信息包括:医生ID(唯一)、姓名、科室、职称;-诊疗记录:每次诊疗由一位医生负责,记录诊疗时间、诊断结果、处方(可包含多个药品);-药品信息:药品ID(唯一)、名称、规格、单价、生产厂家。要求:(1)绘制该系统的E-R图(需标注实体属性、联系类型及基数约束)(8分);(2)将E-R图转换为关系模式,要求满足3NF(6分);(3)编写SQL语句查询2024年1月1日至2024年12月31日期间,每个科室诊疗患者数量前3的医生(需显示科室、医生姓名、诊疗数量)(6分)。五、综合题(共30分)某电商平台订单数据库出现性能问题,具体表现为:-高峰时段“查询某用户近一年订单”操作响应时间超过5秒;-频繁更新“订单状态”字段时出现锁等待;-历史订单表(数据量10亿条)的全表扫描操作耗时过长。已知当前数据库设计:-订单表结构:order_id(主键)、user_id、order_time、status(枚举类型:待支付、已支付、已发货、已完成)、amount;-索引情况:仅在order_id上有聚集索引,user_id和order_time上无索引。请根据以上信息,完成以下任务:(1)分析“查询某用户近一年订单”响应慢的可能原因,并设计索引优化方案(8分);(2)针对“更新订单状态”的锁等待问题,提出事务隔离级别调整或锁优化策略(8分);(3)对于历史订单表的全表扫描问题,提出分库分表或分区策略,并说明具体实现(8分);(4)说明如何通过监控指标(如QPS、TPS、锁等待时间、缓存命中率)评估优化效果(6分)。答案一、单项选择题1.B2.A3.B4.A5.B6.C7.B8.D9.C10.D二、填空题1.模式(概念模式)2.原子性;隔离性3.参照完整性4.CHECK约束5.投影6.事务日志(RedoLog);备份7.一致性8.转换(Transform)9.2NF10.双向11.非聚集索引(辅助索引)三、简答题1.函数依赖(X→Y)表示属性集X的值唯一确定Y的值,如(学号→姓名);多值依赖(X→→Y)表示X的每个值对应Y的一组值,且与其他属性无关,如(课程→→教师)(一门课程可由多个教师教授,与学生无关)。区别:函数依赖是“一对一”或“一对多”,多值依赖是“一对多集合”;函数依赖是多值依赖的特例。2.死锁检测:通过超时机制(设定等待时间阈值)或构建资源等待图(检测是否存在环)。处理方法:选择代价最小的事务回滚。预防策略:①顺序加锁(按固定顺序申请锁);②一次性加锁(事务开始前申请所有所需锁)。3.OLTP:面向事务,支持高频读写,数据实时更新,如电商下单;OLAP:面向分析,支持复杂查询,数据批量加载,如销售报表统计。差异:OLTP强调实时性和事务性,OLAP强调分析深度和历史数据。4.索引失效原因:①查询条件使用函数或表达式(如WHEREYEAR(order_time)=2024);②模糊查询以通配符开头(如LIKE'%ABC');③字段类型隐式转换(如字符串与数字比较);④复合索引未按左前缀使用。优化建议:①避免对索引列做计算;②调整模糊查询为右前缀(如LIKE'ABC%');③确保查询条件与索引顺序一致;④对高频查询字段添加覆盖索引。5.数据复制优点:提高读性能(负载均衡)、增强可用性(故障切换);缺点:增加写延迟(同步复制)、可能导致数据不一致(异步复制)。复制策略:①主从复制(Master-Slave,主写从读);②多主复制(Multi-Master,多个节点可写,需解决冲突)。四、设计题(1)E-R图描述:-实体:患者(患者ID,姓名,性别,出生日期,联系方式);医生(医生ID,姓名,科室,职称);药品(药品ID,名称,规格,单价,生产厂家);诊疗记录(诊疗ID,诊疗时间,诊断结果)。-联系:患者与诊疗记录(1:n,1个患者可有多条诊疗记录);医生与诊疗记录(1:n,1个医生可有多条诊疗记录);诊疗记录与药品(n:m,1次诊疗可开多个药品,1个药品可被多次诊疗使用)。(2)关系模式(3NF):患者(患者ID,姓名,性别,出生日期,联系方式)主键:患者ID医生(医生ID,姓名,科室,职称)主键:医生ID药品(药品ID,名称,规格,单价,生产厂家)主键:药品ID诊疗记录(诊疗ID,患者ID,医生ID,诊疗时间,诊断结果)主键:诊疗ID外键:患者ID→患者.患者ID,医生ID→医生.医生ID诊疗药品(诊疗ID,药品ID,数量)主键:(诊疗ID,药品ID)外键:诊疗ID→诊疗记录.诊疗ID,药品ID→药品.药品ID(3)SQL语句:WITHdoctor_statsAS(SELECTd.科室,d.医生ID,d.姓名,COUNT(DISTINCTr.诊疗ID)AS诊疗数量,ROW_NUMBER()OVER(PARTITIONBYd.科室ORDERBYCOUNT(DISTINCTr.诊疗ID)DESC)ASrnFROM医生dLEFTJOIN诊疗记录rONd.医生ID=r.医生IDWHEREr.诊疗时间BETWEEN'2024-01-01'AND'2024-12-31'GROUPBYd.科室,d.医生ID,d.姓名)SELECT科室,姓名,诊疗数量FROMdoctor_statsWHERErn<=3;五、综合题(1)原因分析:查询需全表扫描(无user_id和order_time索引),数据量大时IO开销高。优化方案:创建复合索引(user_id,order_timeDESC),覆盖查询条件(user_id过滤用户,order_time过滤时间范围),减少回表操作;若需返回amount等字段,可创建覆盖索引(user_id,order_timeDESC,amount,status)。(2)锁等待优化:①调整事务隔离级别为读已提交(ReadCommitted),减少锁持有时间(比可重复读级别更早释放锁);②对status字段使用更细粒度的锁(如行锁而非表锁);③批量更新时按order_id顺序处理,避免交叉加锁;④使用乐观锁(通过版本号字段实现CAS操作)。(3)分库分表策略:按order_time做时间分区(如按年分区),将历史订单(如2020年前)迁移至归档库;或按user_id哈希分表(如分成1024张表,user_id%1024确定表名)。分区实现:使用MySQL的RANGE分区(PARTITIONBYRANGE(YE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论