1、中级数据库系统工程师下午试题-20 及答案解析(总分:75.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)工厂包括厂名和厂长名需建立一个管理数据库存储以下信息:(1)一个厂内有多个车间每个车间有车间号、车间主任姓名、地址和电话,(2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种,(3)一个车间生产多种产品,产品有产品号和价格。(4)一个车间生产多种零件,一个零件也可能为多个车间制造。零件有零件号、重量和价格。(5)一个产品由多种零件组成,一种零件也可装配出多种产品。(6)产品与零件均存仓库中。(7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。
2、(分数:15.00)(1).画出该系统的 E-R 图。(分数:5.00)_(2).给出相应的关系模式。(分数:5.00)_(3).画出该系统的层次模型图。(分数:5.00)_二、B试题二/B(总题数:1,分数:15.00)1.如图所示给出的是一个调度的事件序列。该调度包含 T1,T2,T2 等 12 个事务,A,B,H 为数据库中的数据项,假定“读 i”(i=A,B,H)成功,则获得 i 上的一个 S 锁,而“修改 i”成功时,则将锁升级为 X 锁。又假定所有锁都保持到事务结束,那么,在时刻 t36 是否存在死锁?并分析哪些事务处于等待另一个事务的状态。 时间 事务 操作 时间 事务 操作t1
3、 T1 读 A t19 T9 修改 Gt2 T2 读 B t0 T8 读 Et3 T1 读 C t1 T7 COMMITt4 T4 读 D t2 T9 读 Ht5 T5 读 A t3 T3 读 Gt6 T2 读 E t4 T10 读 At7 T2 修改 E t5 T9 修改 Ht8 T3 读 F t6 T6 COMMITt9 T2 读 F t27 T11 读 Ct10 T5 修改 A t28 T12 读 Dt11 T1 COMMIT t29 T12 读 Ct12 T6 读 A t30 T2 修改 Ft13 T5 ROLLBACK t31 T11 修改 Ct14 T6 读 C t32 T12 读
4、 At15 T6 修改 C t33 T10 修改 At16 T7 读 G t34 T12 修改 Dt17 T8 读 H t35 T4 读 Gt18 T9 读 G t36 1 1一个调度的事件序列(分数:15.00)_三、B试题三/B(总题数:1,分数:15.00)如图所示是有关大学(university)和学生(student)信息的对象联系图。(分数:15.00)(1).试用 ORDB 的定义语言定义这个数据库。 大学和学生信息的对象联系图(分数:7.50)_(2).试用 ORDB 的查询语言写出下列查询的 SELECT 语句:检索每个大学里籍贯为本地的学生,要求显示大学名、城市、学生身份证
5、号和学生姓名。(分数:7.50)_四、B试题四/B(总题数:1,分数:15.00)阅读下列说明和 E-R 图,回答下列问题。说明 设有下列关于教务管理系统的 E-R 图。图中矩形表示实体,圆表示属性,双圆表示关键属性,菱形表示实体间的联系。为了答题的方便,图中的实体和属性同时给出了中英文两种名字,回答问题时只须写出英文名即可。(分数:15.00)(1).写出与上述 E-R 图对应的关系模式,并且下划线标明相应的关键字。(分数:5.00)_(2).问题 1 中的关系模型属于第几范式?如果属于第三范式,则说明理由:如果不属于第三范式,则将它化为第三范式(回答时只须写出修改的部分)。(分数:5.00
6、)_(3).试用 SQL 语言定义教师(TEACHER)模式。回答时字段的数据类型以及题中未指明的名字由考生自己定义。(分数:5.00)_五、B试题五/B(总题数:1,分数:15.00)2.为了满足大量数据传输的需要,有时候需要把数据库中的数据分页传送,比如说,传送 1000 条数据时,可以一次传送 10 条数据,等到用户发出需求时再传送下 10 条数据,如此循环。试实现如下功能:只有当用户第次点击脚本的页时,才从数据库中获取记录集,然后把记录集作为一个断开的记录集存储在一个Session 变量中。这个 Session 变量用于在用户翻页时提供记录集。(分数:15.00)_中级数据库系统工程师
7、下午试题-20 答案解析(总分:75.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)工厂包括厂名和厂长名需建立一个管理数据库存储以下信息:(1)一个厂内有多个车间每个车间有车间号、车间主任姓名、地址和电话,(2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种,(3)一个车间生产多种产品,产品有产品号和价格。(4)一个车间生产多种零件,一个零件也可能为多个车间制造。零件有零件号、重量和价格。(5)一个产品由多种零件组成,一种零件也可装配出多种产品。(6)产品与零件均存仓库中。(7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。(分数:15.00)(
8、1).画出该系统的 E-R 图。(分数:5.00)_正确答案:(该系统的 E-R 图如下图所示。各实体的属性为:工厂:厂名、厂长、厂长姓名车间:车间号、车间主任性名、地址、电话工人:职工号、姓名、年龄、性别、工种仓库:仓库号、仓库主任姓名、电话零件:零件号、重量、价格产品:产品号、价格*该系统的 E-R 图)解析:(2).给出相应的关系模式。(分数:5.00)_正确答案:(相应的关系模式如下: 工厂(厂名、厂长姓名) 车间(车间号、车间主任姓名、地址、电话、厂名) 工人(职工号、姓名、年龄、姓别、工种、车间号) 仓库(仓库号、仓库主任姓名、电话、厂名) 产品(产品号、价格、车间号、仓库号) 零
9、件(零件号、重量、价格、仓库号) 制造(车间号、零件号)解析:(3).画出该系统的层次模型图。(分数:5.00)_正确答案:(该系统的层次模型图如下图所示。*该系统的层次模型图)解析:二、B试题二/B(总题数:1,分数:15.00)1.如图所示给出的是一个调度的事件序列。该调度包含 T1,T2,T2 等 12 个事务,A,B,H 为数据库中的数据项,假定“读 i”(i=A,B,H)成功,则获得 i 上的一个 S 锁,而“修改 i”成功时,则将锁升级为 X 锁。又假定所有锁都保持到事务结束,那么,在时刻 t36 是否存在死锁?并分析哪些事务处于等待另一个事务的状态。 时间 事务 操作 时间 事务
10、 操作t1 T1 读 A t19 T9 修改 Gt2 T2 读 B t0 T8 读 Et3 T1 读 C t1 T7 COMMITt4 T4 读 D t2 T9 读 Ht5 T5 读 A t3 T3 读 Gt6 T2 读 E t4 T10 读 At7 T2 修改 E t5 T9 修改 Ht8 T3 读 F t6 T6 COMMITt9 T2 读 F t27 T11 读 Ct10 T5 修改 A t28 T12 读 Dt11 T1 COMMIT t29 T12 读 Ct12 T6 读 A t30 T2 修改 Ft13 T5 ROLLBACK t31 T11 修改 Ct14 T6 读 C t32
11、T12 读 At15 T6 修改 C t33 T10 修改 At16 T7 读 G t34 T12 修改 Dt17 T8 读 H t35 T4 读 Gt18 T9 读 G t36 1 1一个调度的事件序列(分数:15.00)_正确答案:(在时刻 t36 存在事务 T2,T3,T9 和 T8 死锁,另外,事务 T4 等待事务 T9,事务 T12 等待事务 T4,事务 T11,T10 等待事务 T12。)解析:三、B试题三/B(总题数:1,分数:15.00)如图所示是有关大学(university)和学生(student)信息的对象联系图。(分数:15.00)(1).试用 ORDB 的定义语言定义
12、这个数据库。 大学和学生信息的对象联系图(分数:7.50)_正确答案:(采用 ORDB 的定义语言定义这个数据库的语句如下: CREATE TYPE MyString charvarying; CREATE TABLE university(uname MyString, city MyString, staffsetof (ref (stndent); CREATE TABLE student(sno MyString, Sname MyString, city MyString, language setof (MyString), study ref (unversity);)解析:(2
13、).试用 ORDB 的查询语言写出下列查询的 SELECT 语句:检索每个大学里籍贯为本地的学生,要求显示大学名、城市、学生身份证号和学生姓名。(分数:7.50)_正确答案:(对应查询的 SELE(W 语句如下: SELECT A. uname, A. city, B. sno, B. Sname FROM unversity as A, A. staff as B WHERE A. city=B, city)解析:四、B试题四/B(总题数:1,分数:15.00)阅读下列说明和 E-R 图,回答下列问题。说明 设有下列关于教务管理系统的 E-R 图。图中矩形表示实体,圆表示属性,双圆表示关键属
14、性,菱形表示实体间的联系。为了答题的方便,图中的实体和属性同时给出了中英文两种名字,回答问题时只须写出英文名即可。(分数:15.00)(1).写出与上述 E-R 图对应的关系模式,并且下划线标明相应的关键字。(分数:5.00)_正确答案:(DEPT(UDNAME/U, DHEAD, PHONE) TEACHER(UTNO/U, TNAME, SEX, AGE, TITLE) STUDENT(USNO/U, SNAME, SEX, CIASS, MONITOR) COURSE (UCNO/U, CNAME, HOUR, ROOM) D-T(DNAME, TNO) D-S(UDNAME/U, US
15、NO/U) TEACH(UTNO/U, UCNO/U, EVAL) STUDY(USNO/U, UCNO/U, GRADE) 其中有下划线的项为关键项。)解析:(2).问题 1 中的关系模型属于第几范式?如果属于第三范式,则说明理由:如果不属于第三范式,则将它化为第三范式(回答时只须写出修改的部分)。(分数:5.00)_正确答案:(将 STUDENT 分解为 STUDENT(SNO, SNAME, SEX, CLASS), SCLASS(CLASS, MONITOR)解析:(3).试用 SQL 语言定义教师(TEACHER)模式。回答时字段的数据类型以及题中未指明的名字由考生自己定义。(分数:
16、5.00)_正确答案:(CREATE TABLE TEACHER (TNO (CHAR (8), NONULL), TNAME(CHAR(20), SEX (CHAR(1), AGE (INTEGER), TITLE (CHAI)解析:五、B试题五/B(总题数:1,分数:15.00)2.为了满足大量数据传输的需要,有时候需要把数据库中的数据分页传送,比如说,传送 1000 条数据时,可以一次传送 10 条数据,等到用户发出需求时再传送下 10 条数据,如此循环。试实现如下功能:只有当用户第次点击脚本的页时,才从数据库中获取记录集,然后把记录集作为一个断开的记录集存储在一个Session 变量中
17、。这个 Session 变量用于在用户翻页时提供记录集。(分数:15.00)_正确答案:(程序清单: 1. % LANGUAGE =“VBSCRIP“% 2. % 3. Qption Explicit 4. Response. Expires = 0 5. % 6. !-#include file =“adovbs. inc“- 7. % 8. Const intPageSize =10 9. Dim imCurrentPage, objConn, objRS, strQ 10. Dim intTotalPages, intI 11. 12. If Request. ServerVariabl
18、es(“CONTENT_LENGTH“- 0 Then 13. intCurrentPage= 1 14. Else 15. intCurrentPage = Cint(Request. Form(“Current Page“) 16. Select Case Request. Form(“Submit“) 17. Case “Previous“ 18. intCurrentPage = intCurrentPage - 1 19. Case “Next“ 20. intCurrentPage=intCurrentPage+1 21. End Select 22. Set objRS - Se
19、ssion (“MyRecol-dset“) 23. End If 24. 25. If Not (isobjeet(objRS) Then 26. Set objConn=Server. Createobject (“ADODB. Connection“) 27. objConn. Open“Data Source = Northwind; User ID = sa; Password = 1“ 28. 29. Set objRS =Server. CreateObject (“ADODB. Recordset“) 30. objRS = CursodocatJon = adUseClien
20、t 31. objRS = CursorType = adOpenStatic 32. objRS = CaeheSize = intPageSize 33. strQ = “SELECT Customers. CompanyName, orders, orderDate“ 34. strQ = strQ &“FROM Orders INNER JOIN Customers ON“ 35. strQ = strQ &“Orders. CustomerlD- Customem CustomerlD“ 36. strQ = strQ &“ORDER BY Orders. OrderDate,“ 3
21、7. strQ = strQ &“Customers. CompanyName“ 38. objRS. Open strQ, objCom, Nothing 39. Set objRS. ActiveConnction = Nothing 40. objConn. Close 41. Set objConn = Nothing 42. Set Session(“MyRecordset“) = objRS 43. End If 44. 45. objRS. PageSize = intPageSize 46. If Not(objRS. EOF) Then ohjRS. AbsolutePage
22、 = intCurrentPage 47. 48. intTotalPages = objRS. PageCount 49. % 50. HTML BODY 51. B Customer:OrderDate/Bp 52. % 53. inti = 0 54. Do while(Not objRS. EOF) And (inti obRS. PageSize) 55. Response. Write Server. HTMLEncode (objRS(“CompanyName“) &:“&objRS(“OrderDate“) &“BR“ 56. inti=inti + 1 57. ohjRS.
23、MoveNext 58. Loop 59. % 60. BR 61. Page % = intCurrentPage % of % = intTotalPages % 7 p 62. FORM ACTION=“% =Request. ServerVariables(“SCRIPT_NAME“)%“ 63. INPUT TYPE=“Hidden“NAME=“CvrrentPage“VALUE =“% = intCurrentPage% 64. % 65. If intCurrentPage1 Then % 66. INPUT TYPE = “Submit“NhME = “Submit“VALUE
24、 = “Previous“ 67. % End If 68. If intCurrentPage00intTotalPages Then % 69. INPUT TYPE = “SubmitNAME = “SubmitVALUE = “Next“ 70. % End If % 71. /FORM 72. /BODY/HTML 注意储存在Session 变量中的记录集在脚本中从没有关闭,因而,应该在 810bal 屈 a 中的 SPSlon 的 OtlEnd 事件中完成这件事情: 1. SCRIPT LANGUAGE = VBscript RUNAT = Server 2. Sub Session OnEnd 3. Dim ohRS 4. Set obRS=Session (MyRecordset“) 5. If isobject (objRS) Then 6. obojRS. Close 7. Set objRS = Nothing 8. Set Session (“MyRecordset“) = Nothing 9. End If 10. End sub 11. /SCRIPT)解析: