[{"data":1,"prerenderedAt":1377},["ShallowReactive",2],{"note:cs\u002Fdb\u002Fpastpapers\u002Fdb-pastpaper-1":3,"site-search-catalogue":1376},{"id":4,"title":5,"body":6,"description":1359,"extension":1369,"meta":1370,"navigation":1371,"path":1372,"seo":1373,"stem":1374,"__hash__":1375},"notes\u002Fsource\u002Fcs\u002Fdb\u002Fpastpapers\u002Fdb-pastpaper-1.md","2024-2025-2 计科数据库系统期末",{"type":7,"value":8,"toc":1358},"minimark",[9,14,19,27,30,33,36,39,79,85,92,106,112,115,133,139,156,162,179,185,212,218,235,248,266,272,289,295,312,318,345,351,365,371,506,512,525,531,544,547,551,556,568,573,585,594,606,612,624,636,648,650,654,659,692,697,723,728,771,776,812,814,818,823,834,839,863,868,886,891,913,918,940,945,967,972,993,998,1016,1018,1022,1028,1033,1075,1080,1114,1119,1131,1136,1250,1252,1256,1261,1266],[10,11,13],"h1",{"id":12},"数据库系统-试题","数据库系统 试题",[15,16,18],"h3",{"id":17},"一-选择题1分题-15-15分","一、 选择题（1分\u002F题 * 15 = 15分）",[20,21,22,26],"p",{},[23,24,25],"strong",{},"题目 1："," 数据库系统中的数据模型通常由()三部分组成。",[20,28,29],{},"A. 数据结构、数据操作和完整性约束",[20,31,32],{},"B. 数据定义、数据操作和安全性约束",[20,34,35],{},"C. 数据结构、数据管理和数据保护",[20,37,38],{},"D. 数据定义、数据管理和运行控制",[40,41,42,52],"ul",{},[43,44,45,48,49],"li",{},[23,46,47],{},"答案","：",[23,50,51],{},"A",[43,53,54,57,58],{},[23,55,56],{},"解析","：数据模型是数据库系统的核心概念，用于描述数据、数据之间的联系以及数据的语义。它必须包含三个基本要素：\n",[59,60,61,67,73],"ol",{},[43,62,63,66],{},[23,64,65],{},"数据结构","：描述系统的静态特性（例如，关系模型中的二维表结构）。",[43,68,69,72],{},[23,70,71],{},"数据操作","：描述系统的动态特性，即允许执行的操作（如查询、插入、删除、修改）。",[43,74,75,78],{},[23,76,77],{},"完整性约束","：保证数据的正确性和有效性（例如，主键不能为空，外键必须存在等）。其他选项混淆了数据库管理系统（DBMS）的功能（如数据管理、安全控制）与数据模型本身的组成。",[20,80,81,84],{},[23,82,83],{},"题目 2："," 数据库系统的核心是( )。",[20,86,87,88],{},"A. 数据库\nB. 数据库管理系统\nC. 数据模型\nD. 软件工具\n",[89,90,91],"em",{},"(注：原卷此处排版缺失A选项，通常A为“数据库”)",[40,93,94,101],{},[43,95,96,48,98],{},[23,97,47],{},[23,99,100],{},"B",[43,102,103,105],{},[23,104,56],{},"：数据库系统（DBS）是一个大概念，包含数据库（DB）、数据库管理系统（DBMS）、应用程序和数据库管理员（DBA）。其中，**数据库管理系统（DBMS）**是负责建立、使用和维护数据库的系统软件，它统一管理和控制数据，是整个系统的核心与大脑。",[20,107,108,111],{},[23,109,110],{},"题目 3："," 下列四项中,不属于数据库系统的特点的是()",[20,113,114],{},"A. 数据结构化\nB. 数据由DBMS统一管理\nC. 数据冗余度大\nD. 数据独立性高",[40,116,117,124],{},[43,118,119,48,121],{},[23,120,47],{},[23,122,123],{},"C",[43,125,126,128,129,132],{},[23,127,56],{},"：文件系统由于各自维护自己的文件，会导致同一数据多处存放（冗余度大）。而数据库系统的首要目的之一就是",[23,130,131],{},"减少数据冗余","，实现数据共享。因此，“数据冗余度大”是文件系统的缺点，绝不是数据库系统的特点。",[20,134,135,138],{},[23,136,137],{},"题目 4："," E-R 图是数据库设计的工具之一,它适用于建立数据库的( )。\nA. 概念模型 B. 逻辑模型 C. 结构模型 D. 物理模型",[40,140,141,147],{},[43,142,143,48,145],{},[23,144,47],{},[23,146,51],{},[43,148,149,151,152,155],{},[23,150,56],{},"：E-R图（实体-联系图）是用于需求分析后，将现实世界中的业务逻辑转化为计算机能理解的模型的第一步。它独立于任何具体的DBMS，完全从业务概念出发，因此对应的是",[23,153,154],{},"概念模型","。逻辑模型是将E-R图转化为具体的表结构；物理模型则涉及数据在磁盘上的具体存储。",[20,157,158,161],{},[23,159,160],{},"题目 5："," 在关系数据库设计中,设计关系模式是数据库设计中()阶段的任务。\nA. 逻辑设计 B. 物理设计 C. 需求分析 D. 概念设计",[40,163,164,170],{},[43,165,166,48,168],{},[23,167,47],{},[23,169,51],{},[43,171,172,174,175,178],{},[23,173,56],{},"：设计关系模式（即确定有哪些表，表中有哪些列，主外键是什么）是将概念阶段的E-R图转化为特定关系型数据库（如MySQL, SQL Server）支持的数据模型的过程。这一步属于",[23,176,177],{},"逻辑结构设计","。",[20,180,181,184],{},[23,182,183],{},"题目 6："," 数据的物理独立性是指( )\nA. 数据库与数据库管理系统相互独立\nB. 用户程序与数据库管理系统相互独立\nC. 用户的应用程序与存储在磁盘上数据库中的数据是相互独立的\nD. 应用程序与数据库中数据的逻辑结构是相互独立的",[40,186,187,193],{},[43,188,189,48,191],{},[23,190,47],{},[23,192,123],{},[43,194,195,197,198],{},[23,196,56],{},"： 数据库具有“三级模式和两级映像”。\n",[40,199,200,206],{},[43,201,202,205],{},[23,203,204],{},"物理独立性","：底层数据在磁盘上的存储位置、存储格式改变时，上层应用程序不需要修改。",[43,207,208,211],{},[23,209,210],{},"逻辑独立性","（对应选项D）：数据库的整体表结构（逻辑层面）增加或修改时，上层应用程序不需要修改。题目问的是物理独立性，故选C。",[20,213,214,217],{},[23,215,216],{},"题目 7："," 要保证数据库的数据独立性,需要修改的是( )\nA. 三层模式之间的两种映射 B. 模式与内模式 C. 模式与外模式 D. 三层模式",[40,219,220,226],{},[43,221,222,48,224],{},[23,223,47],{},[23,225,51],{},[43,227,228,230,231,234],{},[23,229,56],{},"：数据的独立性完全依靠DBMS在三级模式（外模式、模式、内模式）之间提供的",[23,232,233],{},"两种映射","（外模式\u002F模式映射、模式\u002F内模式映射）来保证。当底层发生变化时，DBA只需要修改这两种映射关系，就能保证上层不受影响。",[20,236,237,240,241,244,245],{},[23,238,239],{},"题目 8："," “授权”和“收回权限”是DBS采用的( )措施。\n",[89,242,243],{},"(注：原卷缺失文字，合理推断为“收回权限”即GRANT和REVOKE)","\nA. 安全性 B. 完整性 C. 并发控制 D. 数据恢复\n",[89,246,247],{},"(注：排版错乱，A为安全性，推测B为完整性等)",[40,249,250,257],{},[43,251,252,48,254],{},[23,253,47],{},[23,255,256],{},"A（安全性）",[43,258,259,261,262,265],{},[23,260,56],{},"：授权（GRANT）指的是允许特定用户查看或修改数据的权限，这是为了防止恶意用户非法访问数据，属于",[23,263,264],{},"安全性","控制范畴。完整性则是防止合法用户输入错误的数据。",[20,267,268,271],{},[23,269,270],{},"题目 9："," DBMS能实现对数据库中数据的查询、插入、修改和删除等操作,这种功能称为()\nA. 数据定义功能 B. 数据管理功能 C. 数据操纵功能 D. 数据控制功能",[40,273,274,280],{},[43,275,276,48,278],{},[23,277,47],{},[23,279,123],{},[43,281,282,284,285,288],{},[23,283,56],{},"：在SQL语言中，操作数据的动作（增删改查：INSERT, DELETE, UPDATE, SELECT）统称为",[23,286,287],{},"数据操纵语言（DML - Data Manipulation Language）","。数据定义功能（DDL）是用来建表、删表的。",[20,290,291,294],{},[23,292,293],{},"题目 10："," 有一名为“列车运营”实体,含有:车次、日期、实际发车时间、实际抵达时间、情况摘要等属性,该实体主键是( )\nA. 车次 B. 日期 C. 车次+日期 D. 车次+情况摘要",[40,296,297,303],{},[43,298,299,48,301],{},[23,300,47],{},[23,302,123],{},[43,304,305,307,308,311],{},[23,306,56],{},"：主键的作用是唯一标识一条记录。一趟列车（如G123）每天都会发车，因此单靠“车次”无法唯一确定一条具体的运营记录。单靠“日期”更不行，因为每天有很多车次。只有联合“",[23,309,310],{},"车次+日期","”，才能唯一确定特定一天、特定一趟列车的运营情况。",[20,313,314,317],{},[23,315,316],{},"题目 11："," 学校数据库中有学生和宿舍两个关系:学生(学号,姓名)和宿舍(楼名,房间号,床位号,学号)。假设有的学生不住宿,床位也可能空闲,如果要列出所有学生住宿和宿舍分配的情况,包括没有住宿的学生和空闲的床位,则应执行( )\nA. 全外连接 B. 左外连接 C. 右外连接 D. 自然连接",[40,319,320,326],{},[43,321,322,48,324],{},[23,323,47],{},[23,325,51],{},[43,327,328,330,331],{},[23,329,56],{},"： 连接查询中，自然连接只会保留匹配的行。\n",[40,332,333,336,339],{},[43,334,335],{},"左外连接：保留左表所有行，右表没有的补空。",[43,337,338],{},"右外连接：保留右表所有行，左表没有的补空。",[43,340,341,344],{},[23,342,343],{},"全外连接（Full Outer Join）","：左右两表的所有行都保留。题目要求既要保留“没有住宿的学生（左表未匹配）”，又要保留“空闲的床位（右表未匹配）”，因此必须使用全外连接。",[20,346,347,350],{},[23,348,349],{},"题目 12："," 关系规范化中的插入操作异常是指()\nA. 不该删除的数据被删除 B. 不该插入的数据被插入 C. 应该删除的数据未被刪除 D. 应该插入的数据未被插入",[40,352,353,360],{},[43,354,355,48,357],{},[23,356,47],{},[23,358,359],{},"D",[43,361,362,364],{},[23,363,56],{},"：插入异常是指由于表结构设计不合理（如存在部分依赖），导致某些本身存在且应该被录入的信息，因为缺少主键的一部分而无法被插入到数据库中。",[20,366,367,370],{},[23,368,369],{},"题目 13："," 设 D1={张三,李四}, D2={数学,语文}, D3={优,良} 则笛卡尔积D1×D2×D3的基是()\nA. 3 B. 6 C. 8 D. 9",[40,372,373,379],{},[43,374,375,48,377],{},[23,376,47],{},[23,378,123],{},[43,380,381,383,384,178],{},[23,382,56],{},"：笛卡尔积是指将各个集合中的元素进行所有可能的排列组合。其结果的基（也就是组合后的记录总数）等于各个集合元素个数的乘积。由于这三个集合都包含2个元素，计算过程为：",[385,386,389,428],"span",{"className":387},[388],"katex",[385,390,393],{"className":391},[392],"katex-mathml",[394,395,397],"math",{"xmlns":396},"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML",[398,399,400,423],"semantics",{},[401,402,403,407,411,413,415,417,420],"mrow",{},[404,405,406],"mn",{},"2",[408,409,410],"mo",{},"×",[404,412,406],{},[408,414,410],{},[404,416,406],{},[408,418,419],{},"=",[404,421,422],{},"8",[424,425,427],"annotation",{"encoding":426},"application\u002Fx-tex","2 \\times 2 \\times 2 = 8",[385,429,433,458,476,497],{"className":430,"ariaHidden":432},[431],"katex-html","true",[385,434,437,442,446,451,455],{"className":435},[436],"base",[385,438],{"className":439,"style":441},[440],"strut","height:0.7278em;vertical-align:-0.0833em;",[385,443,406],{"className":444},[445],"mord",[385,447],{"className":448,"style":450},[449],"mspace","margin-right:0.2222em;",[385,452,410],{"className":453},[454],"mbin",[385,456],{"className":457,"style":450},[449],[385,459,461,464,467,470,473],{"className":460},[436],[385,462],{"className":463,"style":441},[440],[385,465,406],{"className":466},[445],[385,468],{"className":469,"style":450},[449],[385,471,410],{"className":472},[454],[385,474],{"className":475,"style":450},[449],[385,477,479,483,486,490,494],{"className":478},[436],[385,480],{"className":481,"style":482},[440],"height:0.6444em;",[385,484,406],{"className":485},[445],[385,487],{"className":488,"style":489},[449],"margin-right:0.2778em;",[385,491,419],{"className":492},[493],"mrel",[385,495],{"className":496,"style":489},[449],[385,498,500,503],{"className":499},[436],[385,501],{"className":502,"style":482},[440],[385,504,422],{"className":505},[445],[20,507,508,511],{},[23,509,510],{},"题目 14："," 在视图上不能完成的操作是( )。\nA. 更新视图 B. 查询 C. 在视图上定义新的基本表 D. 在视图上定义新视图",[40,513,514,520],{},[43,515,516,48,518],{},[23,517,47],{},[23,519,123],{},[43,521,522,524],{},[23,523,56],{},"：视图被称为“虚表”，它自身不存储数据，其数据来源于背后的基本表。因此，你不能在一个虚拟的表上再去建立物理存储的“基本表”。",[20,526,527,530],{},[23,528,529],{},"题目 15："," 在数据库中,产生数据不一致的根本原因是()。\nA. 数据存储量太大 B. 没有严格保护数据 C. 未对数据进行完整性控制 D. 数据冗余",[40,532,533,539],{},[43,534,535,48,537],{},[23,536,47],{},[23,538,359],{},[43,540,541,543],{},[23,542,56],{},"：如果同一个数据在数据库中存了多份（数据冗余），当需要修改这个数据时，如果只修改了其中一份而忘记修改另一份，就会导致同一数据的不同副本出现差异。这是数据不一致的根本诱因。",[545,546],"hr",{},[15,548,550],{"id":549},"二-填空题1分空-10空-10分","二、 填空题（1分\u002F空 * 10空 = 10分）",[20,552,553],{},[23,554,555],{},"1. 数据库与文件系统的根本区别是",[40,557,558,563],{},[43,559,560,562],{},[23,561,47],{},"：数据的结构化",[43,564,565,567],{},[23,566,56],{},"：文件系统内部可能有结构，但整体是无结构的；而数据库中的数据整体上是高度结构化的（具有模式）。",[20,569,570],{},[23,571,572],{},"2. 关系R(A,B,C)和S(A, D, E)中,R的主键是(A,B,C),S是的主键是A,则A在R中称为",[40,574,575,580],{},[43,576,577,579],{},[23,578,47],{},"：外键（或外部码）",[43,581,582,584],{},[23,583,56],{},"：关系R中包含了关系S的主键A，因此A在R中作为参照另一张表的桥梁，被称为外键。",[20,586,587,590,591],{},[23,588,589],{},"3. SQL 是一种综合性的语言,是","*、*",[23,592,593],{},"、数据控制语言的组合。",[40,595,596,601],{},[43,597,598,600],{},[23,599,47],{},"：数据定义语言（DDL）、数据操纵语言（DML）",[43,602,603,605],{},[23,604,56],{},"：SQL语言分为三大部分：定义表结构的DDL，增删改查数据的DML，以及进行权限管理的数据控制语言（DCL）。",[20,607,608,611],{},[23,609,610],{},"4. 关系模型的基本数据结构是","* ,其数据库存储时的基本组织方式***。**",[40,613,614,619],{},[43,615,616,618],{},[23,617,47],{},"：关系（或二维表）、文件",[43,620,621,623],{},[23,622,56],{},"：在用户看来，关系模型就是一张张的二维表；而在操作系统的底层存储上，数据库通常是以文件的形式组织在磁盘上的。",[20,625,626,629,632,633],{},[23,627,628],{},"5. 关系的完整性包含",[89,630,631],{},"和","**。**\n",[89,634,635],{},"(注：标准理论为三类，原卷留有两个空)",[40,637,638,643],{},[43,639,640,642],{},[23,641,47],{},"：实体完整性、参照完整性（或用户定义的完整性）",[43,644,645,647],{},[23,646,56],{},"：实体完整性要求主键不为空；参照完整性要求外键必须在主表中存在；用户定义的完整性则是针对特定业务规则的约束。填前两者即可。",[545,649],{},[15,651,653],{"id":652},"三-简答题5分题-4题-20分","三、 简答题（5分\u002F题 * 4题 = 20分）",[20,655,656],{},[23,657,658],{},"1. 试述使用数据库系统的好处。",[40,660,661],{},[43,662,663,665,666],{},[23,664,47],{},"：\n",[59,667,668,674,680,686],{},[43,669,670,673],{},[23,671,672],{},"实现数据共享，减少数据冗余","：多个应用程序可以共用同一个数据库，避免重复存储。",[43,675,676,679],{},[23,677,678],{},"具有高度的数据独立性","：底层数据结构的改变不会严重影响上层应用程序的使用。",[43,681,682,685],{},[23,683,684],{},"提供统一的数据控制机制","：由DBMS统一保证数据的完整性（不符合规则的数据无法写入）、安全性（无权限无法访问）、并发控制（多人同时修改不出错）以及数据恢复（崩溃后可恢复）。",[43,687,688,691],{},[23,689,690],{},"数据整体结构化","：能够清晰表达复杂事物及其之间的联系。",[20,693,694],{},[23,695,696],{},"2. 试述视图的优点。",[40,698,699],{},[43,700,701,665,703],{},[23,702,47],{},[59,704,705,711,717],{},[43,706,707,710],{},[23,708,709],{},"简化用户操作","：可以将多张表复杂的连接查询逻辑封装在视图中，用户直接查询视图即可。",[43,712,713,716],{},[23,714,715],{},"增强数据安全性","：可以通过视图向不同用户展示不同的数据列，隐藏敏感字段。",[43,718,719,722],{},[23,720,721],{},"提供逻辑数据独立性","：当底层物理表的结构发生变化时，可以通过修改视图的定义，使得对外暴露的视图结构保持不变，从而不用修改应用程序。",[20,724,725],{},[23,726,727],{},"3. 请描述数据库设计的步骤,并对每个步骤进行描述。",[40,729,730],{},[43,731,732,665,734],{},[23,733,47],{},[59,735,736,742,748,753,759,765],{},[43,737,738,741],{},[23,739,740],{},"需求分析","：调查和分析用户的业务活动和数据需求，明确系统要“做什么”。",[43,743,744,747],{},[23,745,746],{},"概念结构设计","：将需求转化为抽象的、独立于底层系统的E-R图。",[43,749,750,752],{},[23,751,177],{},"：将E-R图转化为特定DBMS支持的数据模型（如关系模式），并进行规范化优化。",[43,754,755,758],{},[23,756,757],{},"物理结构设计","：为逻辑数据模型选取最适合应用环境的物理存储结构和存取方法（如建立索引）。",[43,760,761,764],{},[23,762,763],{},"数据库实施","：编写SQL语句建库建表，组织数据入库，并编写调试应用程序。",[43,766,767,770],{},[23,768,769],{},"数据库运行与维护","：系统投入运行后，进行长期的监控、备份、性能优化及必要的结构调整。",[20,772,773],{},[23,774,775],{},"4. 请简述关系的完整性与安全性的不同。",[40,777,778],{},[43,779,780,665,782],{},[23,781,47],{},[40,783,784,801],{},[43,785,786,789,790,793,794,797,798,178],{},[23,787,788],{},"完整性","：主要防范的是",[23,791,792],{},"合法用户","由于误操作等原因录入了",[23,795,796],{},"不正确、不符合语义规则的数据","（例如年龄输入为负数，或关联了不存在的外键）。核心目标是保证数据的",[23,799,800],{},"准确性和有效性",[43,802,803,789,805,808,809,178],{},[23,804,264],{},[23,806,807],{},"非法用户","或恶意攻击对数据的窃取、破坏或未经授权的篡改。核心目标是保护数据",[23,810,811],{},"不被越权访问",[545,813],{},[15,815,817],{"id":816},"四-sql语句共20分","四、 SQL语句（共20分）",[20,819,820,48],{},[23,821,822],{},"前提关系说明",[40,824,825,828,831],{},[43,826,827],{},"学生 Student(学号 Sno, 学生姓名 Sname, 性别 Sgender, 出生日期 Birthday, 系 Sdept)",[43,829,830],{},"课程 Course(课程号 Cno, 课程名 Cname, 先行课 Cpno, 学分 Ccredit)",[43,832,833],{},"学生选课 SC(学号 Sno, 课程号 Cno, 分数 Grade)",[20,835,836],{},[23,837,838],{},"1. 在Student表中新增一个Email列,其数据类型为varchar(30)。(2分)",[40,840,841,850],{},[43,842,843,48,846],{},[23,844,845],{},"SQL语句",[847,848,849],"code",{},"ALTER TABLE Student ADD Email varchar(30);",[43,851,852,854,855,858,859,862],{},[23,853,56],{},"：修改已有表的结构必须使用 ",[847,856,857],{},"ALTER TABLE","，新增列使用 ",[847,860,861],{},"ADD"," 关键字。",[20,864,865],{},[23,866,867],{},"2. 为出生日期 Birthday 列创建索引。(2分)",[40,869,870,877],{},[43,871,872,48,874],{},[23,873,845],{},[847,875,876],{},"CREATE INDEX idx_birthday ON Student(Birthday);",[43,878,879,881,882,885],{},[23,880,56],{},"：创建索引使用 ",[847,883,884],{},"CREATE INDEX"," 语法，后跟自定义的索引名称（如idx_birthday），并指定表名和要建立索引的列名。",[20,887,888],{},[23,889,890],{},"3. 在Student表中查询性别为“男”且系别为“计算机科学与技术”的学生数据。(2分)",[40,892,893,900],{},[43,894,895,48,897],{},[23,896,845],{},[847,898,899],{},"SELECT * FROM Student WHERE Sgender='男' AND Sdept='计算机科学与技术';",[43,901,902,904,905,908,909,912],{},[23,903,56],{},"：这题考察基础的单表条件查询。使用 ",[847,906,907],{},"WHERE"," 子句过滤，多个条件需同时满足时使用逻辑运算符 ",[847,910,911],{},"AND"," 连接。",[20,914,915],{},[23,916,917],{},"4. 在Student表中查询邮箱域名为“@stumail.nwu.edu.cn”的学生数据。(2分)",[40,919,920,927],{},[43,921,922,48,924],{},[23,923,845],{},[847,925,926],{},"SELECT * FROM Student WHERE Email LIKE '%@stumail.nwu.edu.cn';",[43,928,929,931,932,935,936,939],{},[23,930,56],{},"：由于域名是在邮箱字符串的结尾，我们需要使用模糊匹配。",[847,933,934],{},"LIKE"," 配合通配符 ",[847,937,938],{},"%"," 表示匹配任意长度的任意字符序列。",[20,941,942],{},[23,943,944],{},"5. 找出Student表中年龄最大和年龄最小的学生出生日期。(4分)",[40,946,947,954],{},[43,948,949,48,951],{},[23,950,845],{},[847,952,953],{},"SELECT MIN(Birthday), MAX(Birthday) FROM Student;",[43,955,956,958,959,962,963,966],{},[23,957,56],{},"：年龄最大意味着出生日期最早（值最小），年龄最小意味着出生日期最晚（值最大）。使用聚合函数 ",[847,960,961],{},"MIN()"," 和 ",[847,964,965],{},"MAX()"," 即可。",[20,968,969],{},[23,970,971],{},"6. 分系别统计Student表中的学生人数。(4分)",[40,973,974,981],{},[43,975,976,48,978],{},[23,977,845],{},[847,979,980],{},"SELECT Sdept, COUNT(*) FROM Student GROUP BY Sdept;",[43,982,983,985,986,989,990,178],{},[23,984,56],{},"：“分系别”意味着需要以“系（Sdept）”为依据进行分组，故使用 ",[847,987,988],{},"GROUP BY Sdept","；统计人数使用聚合函数 ",[847,991,992],{},"COUNT(*)",[20,994,995],{},[23,996,997],{},"7. 将学生的学号及其平均成绩定义为一个试图。(4分)",[40,999,1000,1007],{},[43,1001,1002,48,1004],{},[23,1003,845],{},[847,1005,1006],{},"CREATE VIEW Stu_AvgGrade AS SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno;",[43,1008,1009,1011,1012,1015],{},[23,1010,56],{},"：创建视图使用 ",[847,1013,1014],{},"CREATE VIEW 视图名 AS","，后面紧跟对应的查询语句。本题需按学号分组查询SC表中的平均成绩。",[545,1017],{},[15,1019,1021],{"id":1020},"五-数据库设计共20分","五、 数据库设计（共20分）",[20,1023,1024,1027],{},[23,1025,1026],{},"题目背景：","\n设有关系模式 R(读者编号, 姓名, 单位编号, 单位名称, 图书号, 书名, 借阅日期, 还书日期)，用来表示读者借阅图书信息。\n规则：每个读者属于一个单位；借阅呈多对多关系；每个读者每天每本书最多借一次。",[20,1029,1030],{},[23,1031,1032],{},"1. 根据上述条件,试画出反应R中关系的E-R图(不必画实体的属性)。(6分)",[40,1034,1035],{},[43,1036,1037,1040,1041],{},[23,1038,1039],{},"答案解析","：由于系统限制纯文本输出，可以这样画：\n",[40,1042,1043,1049],{},[43,1044,1045,1048],{},[23,1046,1047],{},"三个实体（用矩形框表示）","：读者、单位、图书。",[43,1050,1051,665,1054],{},[23,1052,1053],{},"两个联系（用菱形框表示）",[40,1055,1056,1065],{},[43,1057,1058,1061,1062,178],{},[23,1059,1060],{},"所属","（连接“读者”和“单位”）：由于每个读者只属于一个单位，而一个单位有多个读者，连线标记为 ",[23,1063,1064],{},"N : 1",[43,1066,1067,1070,1071,1074],{},[23,1068,1069],{},"借阅","（连接“读者”和“图书”）：多对多关系，连线标记为 ",[23,1072,1073],{},"M : N","。需要注意的是，由于“每天借一次”的规定，借阅联系需要附带属性：借阅日期、还书日期（连在借阅菱形上）。",[20,1076,1077],{},[23,1078,1079],{},"2. R最高属于第几范式,为什么?(5分)",[40,1081,1082,1090],{},[43,1083,1084,1086,1087,178],{},[23,1085,47],{},"：最高属于",[23,1088,1089],{},"第一范式（1NF）",[43,1091,1092,1094,1095,1098,1099,665,1102],{},[23,1093,56],{},"：\n首先明确主键：因为一个读者可以多次借阅同一本书，要唯一确认一条借阅记录，必须依赖 ",[23,1096,1097],{},"(读者编号, 图书号, 借阅日期)"," 这三个字段共同构成复合主键。\n产生问题的原因在于",[23,1100,1101],{},"部分函数依赖",[40,1103,1104,1107],{},[43,1105,1106],{},"“姓名”、“单位编号” 只依赖于主键中的“读者编号”，与“图书号”、“借阅日期”无关。",[43,1108,1109,1110,1113],{},"“书名” 只依赖于主键中的“图书号”。\n这种非主属性（如姓名）依赖于主键的",[23,1111,1112],{},"一部分","的情况，违反了第二范式（2NF）的要求（2NF要求所有非主属性必须完全依赖于整个主键）。因此，它仅仅满足最基础的列不可分的1NF。",[20,1115,1116],{},[23,1117,1118],{},"3. 举例说明R在何种情况下会发生删除异常。(5分)",[40,1120,1121],{},[43,1122,1123,1126,1127,1130],{},[23,1124,1125],{},"答案与解析","：\n假设读者“张三”（单位编号1，单位名称“信息学院”）归还了所有他借过的图书，并且我们需要将该借阅历史从关系R中删除。由于R不仅包含了借阅记录，还混杂了张三的基本信息，当删除张三所有借阅记录的那一刻，",[23,1128,1129],{},"张三的姓名、所在单位的信息也会随着借阅记录一起被彻底从数据库中抹除","。这就叫删除异常（不该丢失的数据丢失了）。",[20,1132,1133],{},[23,1134,1135],{},"4. 请将R规范到3NF,并标注每种关系中的主码。(4分)",[40,1137,1138,1174],{},[43,1139,1140,1142,1143],{},[23,1141,47],{},"：需要将其拆分为四张表，以消除部分依赖和传递依赖（带下划线的为主码）：\n",[59,1144,1145,1153,1160,1167],{},[43,1146,1147,1148,1152],{},"读者 (",[1149,1150,1151],"u",{},"读者编号",", 姓名, 单位编号)",[43,1154,1155,1156,1159],{},"单位 (",[1149,1157,1158],{},"单位编号",", 单位名称)",[43,1161,1162,1163,1166],{},"图书 (",[1149,1164,1165],{},"图书号",", 书名)",[43,1168,1169,1170,1173],{},"借阅 (",[1149,1171,1172],{},"读者编号, 图书号, 借阅日期",", 还书日期)",[43,1175,1176,665,1178],{},[23,1177,56],{},[40,1179,1180,1183,1186],{},[43,1181,1182],{},"将图书信息独立成表，消除了“书名”对主键的部分依赖。",[43,1184,1185],{},"将借阅历史独立成表，由原复合主键和业务相关属性构成。",[43,1187,1188,1189,1220,1221,1249],{},"将读者自身信息独立成表，进一步发现，在原表逻辑中“读者编号 ",[385,1190,1192,1207],{"className":1191},[388],[385,1193,1195],{"className":1194},[392],[394,1196,1197],{"xmlns":396},[398,1198,1199,1204],{},[401,1200,1201],{},[408,1202,1203],{},"→",[424,1205,1206],{"encoding":426},"\\rightarrow",[385,1208,1210],{"className":1209,"ariaHidden":432},[431],[385,1211,1213,1217],{"className":1212},[436],[385,1214],{"className":1215,"style":1216},[440],"height:0.3669em;",[385,1218,1203],{"className":1219},[493]," 单位编号 ",[385,1222,1224,1237],{"className":1223},[388],[385,1225,1227],{"className":1226},[392],[394,1228,1229],{"xmlns":396},[398,1230,1231,1235],{},[401,1232,1233],{},[408,1234,1203],{},[424,1236,1206],{"encoding":426},[385,1238,1240],{"className":1239,"ariaHidden":432},[431],[385,1241,1243,1246],{"className":1242},[436],[385,1244],{"className":1245,"style":1216},[440],[385,1247,1203],{"className":1248},[493]," 单位名称”，存在传递依赖（违反3NF）。因此必须把单位信息单独拆离出来，使系统达到第三范式（3NF）。",[545,1251],{},[15,1253,1255],{"id":1254},"六-嵌入式sql填空15分","六、 嵌入式SQL填空（15分）",[20,1257,1258,1260],{},[23,1259,1026],{}," 这是一段将SQL语句嵌入到C语言中执行的代码。核心逻辑是通过游标遍历查询结果，并交互式地询问用户是否要修改当前记录的年龄。",[20,1262,1263,48],{},[23,1264,1265],{},"代码填空与解析",[40,1267,1268,1283,1305,1320,1339],{},[43,1269,1270,48,1273,1276],{},[23,1271,1272],{},"空 (1)",[847,1274,1275],{},"EXEC SQL INCLUDE SQLCA;",[40,1277,1278],{},[43,1279,1280,1282],{},[23,1281,56],{},"：在C语言主程序的声明部分，必须首先引入SQL通信区（SQLCA）。它是DBMS与宿主语言程序之间交流状态信息（例如操作是否成功、返回错误码等）的数据结构。",[43,1284,1285,48,1288,1291],{},[23,1286,1287],{},"空 (2)",[847,1289,1290],{},"EXEC SQL DECLARE SX CURSOR FOR",[40,1292,1293],{},[43,1294,1295,1297,1298,1301,1302,178],{},[23,1296,56],{},"：在执行连接数据库的代码后，代码上方有一个 ",[847,1299,1300],{},"SELECT Stno, Sname... FROM Student"," 的查询语句。在嵌入式SQL中，对于返回多行结果的查询，必须声明一个游标（Cursor）来逐行处理。该空的作用就是声明游标 ",[847,1303,1304],{},"SX",[43,1306,1307,48,1310,1313],{},[23,1308,1309],{},"空 (3)",[847,1311,1312],{},"EXEC SQL OPEN SX;",[40,1314,1315],{},[43,1316,1317,1319],{},[23,1318,56],{},"：注释提示“打开游标SX”。在使用游标之前，必须用OPEN命令打开它，此时DBMS才真正执行查询并将结果集准备好。",[43,1321,1322,48,1325,1328],{},[23,1323,1324],{},"空 (4)",[847,1326,1327],{},"EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex, :HSage;",[40,1329,1330],{},[43,1331,1332,1334,1335,1338],{},[23,1333,56],{},"：进入循环后，注释提示“推进游标,将当前数据放入主变量”。FETCH操作用于将游标当前指向的某一条记录提取出来，并赋值给C语言中定义的变量（主变量前需加冒号 ",[847,1336,1337],{},":"," 标识）。",[43,1340,1341,48,1344,1347],{},[23,1342,1343],{},"空 (5)",[847,1345,1346],{},"EXEC SQL UPDATE Student",[40,1348,1349],{},[43,1350,1351,1353,1354,1357],{},[23,1352,56],{},"：注释提示“嵌入式 SQL 更新”。紧随其后的代码是 ",[847,1355,1356],{},"SET Sage=:NEWAGE WHERE CURRENT OF SX;","，这属于“定位更新”（修改游标当前指向的行）。因此这里需要补全UPDATE的基础语法，即指定要更新的表名。",{"title":1359,"searchDepth":1360,"depth":1360,"links":1361},"",2,[1362,1364,1365,1366,1367,1368],{"id":17,"depth":1363,"text":18},3,{"id":549,"depth":1363,"text":550},{"id":652,"depth":1363,"text":653},{"id":816,"depth":1363,"text":817},{"id":1020,"depth":1363,"text":1021},{"id":1254,"depth":1363,"text":1255},"md",{},true,"\u002Fsource\u002Fcs\u002Fdb\u002Fpastpapers\u002Fdb-pastpaper-1",{"title":5,"description":1359},"source\u002Fcs\u002Fdb\u002Fpastpapers\u002Fdb-pastpaper-1","TE4XIlRN0s_V3UsFQMM5_mSZFZkVroeweQx96rS1Bgc",null,1784032891035]