2026年《数据库》练习题及答案_第1页
2026年《数据库》练习题及答案_第2页
2026年《数据库》练习题及答案_第3页
2026年《数据库》练习题及答案_第4页
2026年《数据库》练习题及答案_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年《数据库》练习题及答案一、单项选择题(每题2分,共20分)1.以下关于关系模型中候选键的描述,正确的是()。A.候选键只能由单个属性构成B.候选键是能唯一标识元组的最小属性集C.一个关系模式只能有一个候选键D.候选键一定是外键的来源答案:B2.在SQL中,若要查询“学生表”中年龄在18到22岁之间且性别为“女”的学生,正确的WHERE子句是()。A.WHERE年龄BETWEEN18-22AND性别='女'B.WHERE年龄IN(18,19,20,21,22)OR性别='女'C.WHERE年龄BETWEEN18AND22AND性别='女'D.WHERE年龄>=18OR年龄<=22AND性别='女'答案:C3.某关系模式R(A,B,C,D),函数依赖集F={A→B,B→C,C→D},则R的主码是()。A.AB.BC.ABD.ABC答案:A4.数据库三级模式结构中,描述物理存储结构的是()。A.外模式B.模式C.内模式D.用户模式答案:C5.事务的ACID特性中,“隔离性”指的是()。A.事务执行结果与串行执行结果一致B.事务一旦提交,其结果永久保存C.事务的操作要么全做,要么全不做D.事务执行时不被其他事务干扰答案:A(注:严格来说,隔离性要求事务间互不干扰,最终结果与串行执行一致,此处A更准确)6.在MySQL中,若要为“订单表”(order_id,user_id,order_time)创建按用户ID分区、每个分区存储最近一年数据的分区策略,应使用()。A.RANGE分区B.LIST分区C.HASH分区D.KEY分区答案:A7.以下关于索引的描述,错误的是()。A.复合索引的顺序会影响查询效率B.唯一索引可以保证列值的唯一性C.覆盖索引可以避免回表操作D.所有查询都应该添加索引以提高速度答案:D(注:索引会增加写操作开销,并非所有查询都适用)8.在分布式数据库中,CAP定理指的是()无法同时满足。A.一致性、可用性、分区容忍性B.完整性、原子性、持久性C.并发性、隔离性、可靠性D.可扩展性、安全性、实时性答案:A9.若关系模式R属于3NF,则以下描述正确的是()。A.不存在非主属性对主码的部分函数依赖B.不存在主属性对主码的传递函数依赖C.不存在非主属性对主码的传递函数依赖D.不存在任何属性对主码的部分或传递函数依赖答案:C(注:3NF消除非主属性的传递依赖,BCNF消除所有属性的传递依赖)10.在SQL中,使用窗口函数计算每个学生“数学”成绩的班级排名(相同分数同一名次),应使用()。A.ROW_NUMBER()B.RANK()C.DENSE_RANK()D.NTILE()答案:B二、填空题(每题2分,共10分)1.关系代数中,σ(选择)操作对应SQL的______子句。答案:WHERE2.数据库恢复的基础是______,其作用是记录事务对数据库的修改操作。答案:日志文件(或日志)3.在E-R模型中,实体间的联系可分为一对一、一对多和______三种类型。答案:多对多4.SQL中,用于修改表结构的语句是______。答案:ALTERTABLE5.分布式数据库中,数据分片的方式包括水平分片、垂直分片、混合分片和______。答案:导出分片三、简答题(每题8分,共40分)1.简述数据库设计中“需求分析”阶段的主要任务。答案:需求分析阶段的主要任务是通过与用户沟通,收集并分析数据库的应用需求,包括:(1)数据需求:明确需要存储哪些数据及其属性;(2)功能需求:确定系统需要支持的操作(如查询、插入、删除);(3)性能需求:了解数据量、访问频率、响应时间要求;(4)约束条件:如数据完整性约束、安全性要求。最终形成需求规格说明书,作为后续设计的依据。2.说明事务中“脏读”与“不可重复读”的区别。答案:脏读指一个事务读取了另一个未提交事务修改的数据,若后者回滚,前者读取的数据为无效(“脏”数据)。不可重复读指同一事务内,两次读取同一数据得到不同结果(因另一事务已提交修改)。区别在于:脏读的问题在于读取未提交数据,不可重复读的问题在于读取已提交但前后不一致的数据。3.简述B+树索引与哈希索引的适用场景。答案:B+树索引适用于范围查询(如WHEREage>20)和排序操作,支持顺序访问,适合OLTP系统中常见的点查与范围查。哈希索引通过哈希函数将键映射到桶,适合等值查询(如WHEREid=123),但无法高效处理范围查询或排序,且对重复值较多的列性能下降明显。4.解释“视图”的作用,并举例说明其应用场景。答案:视图是虚拟表,基于SQL查询定义,不存储实际数据。作用包括:(1)简化复杂查询:将常用的多表连接查询封装为视图,用户直接调用;(2)数据安全:通过视图限制用户只能访问部分列或行(如只暴露员工表的姓名和部门);(3)逻辑独立性:当基表结构变化时,只需修改视图定义,不影响前端应用。例如,企业管理系统中,可创建“部门员工视图”,将员工表与部门表连接,方便按部门查询员工信息。5.说明如何通过索引优化“SELECTFROMordersWHEREuser_id=100ANDorder_status='paid'ANDorder_time>'2023-01-01'”的查询效率。5.说明如何通过索引优化“SELECTFROMordersWHEREuser_id=100ANDorder_status='paid'ANDorder_time>'2023-01-01'”的查询效率。答案:优化步骤:(1)分析查询条件:过滤条件为user_id、order_status、order_time。(2)创建复合索引:建议按顺序(user_id,order_status,order_time)创建索引,因等值查询条件(user_id、order_status)应放在前面,范围查询(order_time)放在最后,符合最左匹配原则。(3)验证覆盖索引:若查询仅需这三个字段,索引可覆盖查询,避免回表。(4)避免冗余索引:确保该索引未被其他索引覆盖。四、设计题(每题15分,共30分)1.某医院需设计“患者病历管理系统”数据库,涉及以下实体及联系:患者(患者ID,姓名,性别,出生日期)医生(医生ID,姓名,科室)病历(病历号,主诉,诊断结果,记录时间)联系:(1)患者与病历:1个患者可有多份病历,1份病历对应1个患者;(2)医生与病历:1份病历由1个医生记录,1个医生可记录多份病历。要求:(1)绘制E-R图(用矩形、椭圆、菱形表示实体、属性、联系,标注联系类型);(2)将E-R图转换为关系模式,标注主码和外码。答案:(1)E-R图描述:实体“患者”属性:患者ID(主码)、姓名、性别、出生日期;实体“医生”属性:医生ID(主码)、姓名、科室;实体“病历”属性:病历号(主码)、主诉、诊断结果、记录时间;联系“拥有”:患者与病历,1:n(患者→病历);联系“记录”:医生与病历,1:n(医生→病历)。(2)关系模式:患者(患者ID,姓名,性别,出生日期)主码:患者ID;医生(医生ID,姓名,科室)主码:医生ID;病历(病历号,主诉,诊断结果,记录时间,患者ID,医生ID)主码:病历号;外码:患者ID(参照患者.患者ID),医生ID(参照医生.医生ID)。2.某电商平台需存储“用户评论”数据,评论包含以下信息:评论ID、用户ID、商品ID、评论内容、点赞数、评论时间、回复数。要求设计表结构(字段名、数据类型、约束),并说明如何通过索引优化“按商品ID查询最近100条评论(按评论时间降序)”的查询。答案:(1)表结构设计:CREATETABLEuser_comments(comment_idINTPRIMARYKEYAUTO_INCREMENT,-评论ID,自增主键user_idINTNOTNULL,-用户IDproduct_idINTNOTNULL,-商品IDcontentTEXTNOTNULL,-评论内容(大文本)like_countINTDEFAULT0,-点赞数,默认0comment_timeDATETIMENOTNULL,-评论时间reply_countINTDEFAULT0,-回复数,默认0FOREIGNKEY(user_id)REFERENCESusers(user_id),-用户外键FOREIGNKEY(product_id)REFERENCESproducts(product_id)-商品外键);(2)索引优化:查询需求为“按商品ID查询最近100条评论(按时间降序)”,需快速过滤product_id并按comment_time排序。因此,应创建复合索引(product_id,comment_timeDESC)。该索引按product_id分组,每组内按comment_time降序排列,查询时可直接通过索引定位商品对应的评论,并按时间顺序取前100条,避免全表扫描和临时排序。五、综合应用题(每题20分,共40分)1.某企业“销售订单系统”数据库包含以下表:客户表(customer_idPK,customer_name,region)订单表(order_idPK,customer_idFK,order_date,total_amount)订单明细表(order_item_idPK,order_idFK,product_id,quantity,unit_price)要求编写SQL语句实现以下功能:(1)查询2023年每个区域的客户数量及总销售额(总销售额=订单总金额之和);(2)查询购买过3种及以上不同商品的客户ID及其购买的商品种类数;(3)为订单表添加“order_status”字段(取值为'未支付'、'已支付'、'已发货'),默认值为'未支付'。答案:(1)SELECTc.region,COUNT(DISTINCTc.customer_id)AScustomer_count,SUM(o.total_amount)AStotal_salesFROMcustomercLEFTJOINordersoONc.customer_id=o.customer_idWHEREo.order_dateBETWEEN'2023-01-01'AND'2023-12-31'GROUPBYc.region;(2)SELECToi.customer_id,COUNT(DISTINCTduct_id)ASproduct_typesFROM(SELECTo.customer_id,duct_idFROMordersoJOINorder_itemsoiONo.order_id=oi.order_id)oiGROUPBYoi.customer_idHAVINGproduct_types>=3;(3)ALTERTABLEordersADDCOLUMNorder_statusVARCHAR(20)DEFAULT'未支付'CHECK(order_statusIN('未支付','已支付','已发货'));2.某系统日志表(log_idPK,user_id,operation,log_time)存储了用户操作记录,当前查询“2023年1月所有用户的登录操作次数”的SQL语句为:SELECTuser_id,COUNT()ASlogin_countSELECTuser_id,COUNT()ASlogin_countFROMlogWHEREoperation='登录'ANDlog_timeBETWEEN'2023-01-01'AND'2023-01-31'GROUPBYuser_id;执行效率较低,通过分析执行计划发现存在全表扫描。请提出优化方案(至少3种),并说明原理。答案:优化方案及原理:(1)创建复合索引:在(log_time,operation,user_id)上创建索引。因查询条件包含log_time(范围)和operation(等值),索引按log_time排序可快速定位1月的记录,再过滤operation='登录',最后按user_id分组统计,索引覆盖查询字段,避免回表。(2)分区表:按log_time进行RANGE分区(如每月一个分区),查询时仅扫描2023年1月的分区,减少IO量。(3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论