大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(8)

大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(8)

1-前言

为了考上大学院,做了日语版本练习,边学边看边记录

2-数据库データベース


問1【データベース/B木操作(相似①)】

次に示す 2 次の B 木 に対して,以下の操作を この順に 行った後の B 木を,
図と同様の表記方法(ノード・キー・ポインタ) を用いて描け。

(1) キー値 16 のレコードを挿入する。

(2) (1) の結果に対して,キー値 28 のレコードを挿入する。

(3) (2) の結果に対して,キー値 6 のレコードを挿入する。

(4) (3) の結果に対して,キー値 21 のレコードを挿入する。

ただし,ノードの分割が生じる場合は,
どのキーが昇格するかが分かるように 明確に示すこと。


問2【データベース/B木操作(相似②)】

次に示す B+ 木 に対して,キー値 24 を削除する操作を行う。

(1) 削除後の B+ 木を図示せよ。

(2) 削除に伴い,再配分または併合が必要となるか否かを判定し,

必要な場合は,その理由を述べよ。

ただし,

  • 各ノードのキー数の制約を満たすこと。
  • 再配分が可能な場合は,併合は行わないものとする。

問3【データベース/正規化(予測①)】

次の関係 ( R ) が与えられている。

R(\\underline{A}, B, C, D, E)

また,以下の関数従属が成り立つものとする。

  • ( A \rightarrow C )
  • ( B \rightarrow D )
  • ( AC \rightarrow B )
  • ( D \rightarrow E )

(1) この関係 ( R ) の 候補キー をすべて求めよ。

(2) 関係 ( R ) が 第 2 正規形 を満たすか判定し,理由を述べよ。

(3) 関係 ( R ) を 第 3 正規形 に分解せよ。


問4【データベース/SQL(予測②)】

次の表を考える。下線は主キーを表す。

  • 学生( 学生番号 , 学生名, 学科番号)
  • 科目( 科目番号 , 科目名, 開講年度)
  • 履修( 学生番号, 科目番号 , 成績)

次の問いに答える SQL 文 を記述せよ。

(1)

すべての開講年度 において,少なくとも 1 科目を履修している学生」の

学生番号と学生名を求めよ。

(2)

各学科について,その学科に所属する学生のうち,
成績が学科内で最高点である学生 の学生番号をすべて求めよ。

ただし,同点が複数存在する場合は,すべて出力するものとする。


3-数据库データベース-答案解析


問1(2次B木:16→28→6→21 挿入)正しい最終結果

前提(2次B木)

  • 1ノードの最大キー数 = 2
  • 3キーになったら 分割 し、中央キーが昇格

(1) 16 挿入後

右側の葉(17)に入る → [16 17](分割なし)

  • 根:[15]
  • 左:内部[9] → 葉[3 5], [10 13]
  • 右:内部[23] → 葉[16 17], [25 30]

(2) 28 挿入後

25 30\] に 28 → \[25 28 30\] **分割** 中央 **28 昇格** → 右内部が **\[23 28\]** * 根:\[15

  • 左:内部[9] → 葉[3 5], [10 13]
  • 右:内部[23 28] → 葉[16 17], [25], [30]

(3) 6 挿入後

3 5\] に 6 → \[3 5 6\] **分割** 中央 **5 昇格** → 左内部が **\[5 9\]** * 根:\[15

  • 左:内部[5 9] → 葉[3], [6], [10 13]
  • 右:内部[23 28] → 葉[16 17], [25], [30]

✅ (4) 21 挿入後(最終)

16 17\] に 21 → \[16 17 21\] **分割** 、中央 **17 昇格** 右内部 \[23 28\] に 17 を入れると \[17 23 28\] **溢れ** → **分割** 、中央 **23 昇格** 根 \[15\] に 23 を入れて **\[15 23\]** で完成 #### ✅ 最終形 * **根:\[15 23\]** * 左子:内部 **\[5 9\]** → 葉 **\[3\] , \[6\] , \[10 13\]** * 中子:内部 **\[17\]** → 葉 **\[16\] , \[21\]** * 右子:内部 **\[28\]** → 葉 **\[25\] , \[30\]** > これが「2次B木として合法」な唯一の終形です。 *** ** * ** *** ## 問2(B+木:24 削除)正しい書き方 ※問題のB+木の図がこちらに無いので、あなたが書いた前提 「**キー24が存在しない**」場合の正答はこれ: **(1)** 24 を探索した結果,該当する葉ノードに **キー24は存在しない** 。 したがって **木は変化しない** 。 **(2)** 削除が発生していないため,**再配分・併合は不要**。 > 立命館的には「存在しない→だから何も起きない」でも、**探索して存在しないことを明記**しないと減点されます(そこがポイント)。 *** ** * ** *** ## 問3(正規化)正しいアンサー 与えられた FD: * (A \\rightarrow C) * (B \\rightarrow D) * (AC \\rightarrow B) * (D \\rightarrow E) *** ** * ** *** ### (1) 候補キー ((AC)\^+): AC → B → D → E,かつ A→C より ((AC)\^+ = {A,B,C,D,E}) ✅ **候補キー:AC(のみ)** *** ** * ** *** ### (2) 第2正規形か 主キーは **AC** (複合キー)。 2NF違反は「**非主属性**がキーの一部に部分従属」するとき。 * A→C は **Cが主属性(キーの一部)** なので 2NF違反にならない * B, D, E は AC 全体から導かれる(部分従属ではない) ✅ **第2正規形は満たす** *** ** * ** *** ### (3) 第3正規形への分解(満点形) 推移従属(AC→B→D→E)があるので 3NF 違反。 3NF分解: * (R_1(A, C, B))(AC→B と A→C を保持) * (R_2(B, D))(B→D) * (R_3(D, E))(D→E) ✅ **3NF 分解: { (A,C,B), (B,D), (D,E) }** *** ** * ** *** ## 問4(SQL)正しいアンサー 表: * 学生(学生番号, 学生名, 学科番号) * 科目(科目番号, 科目名, 開講年度) * 履修(学生番号, 科目番号, 成績) *** ** * ** *** ### (1) 「すべての開講年度で1科目以上履修」 (年度の全称量化=二重 NOT EXISTS) ```sql SELECT s.学生番号, s.学生名 FROM 学生 s WHERE NOT EXISTS ( SELECT 1 FROM (SELECT DISTINCT 開講年度 FROM 科目) y WHERE NOT EXISTS ( SELECT 1 FROM 履修 r JOIN 科目 k ON k.科目番号 = r.科目番号 WHERE r.学生番号 = s.学生番号 AND k.開講年度 = y.開講年度 ) ); ``` *** ** * ** *** ### (2) 「学科内で最高点の学生(同点は全員)」 (相関サブクエリ+MAX) ```sql SELECT DISTINCT s.学生番号 FROM 学生 s JOIN 履修 r ON r.学生番号 = s.学生番号 WHERE r.成績 = ( SELECT MAX(r2.成績) FROM 学生 s2 JOIN 履修 r2 ON r2.学生番号 = s2.学生番号 WHERE s2.学科番号 = s.学科番号 ); ``` *** ** * ** *** ## 4-软件工程(ソフトウェア) ### 【問題1】(ソフトウェア分野・相似①) **問1.** 要件定義と外部設計において, **顧客要求が正しく反映されない原因** を 1 つ挙げ, それが後工程に与える影響について説明せよ。 🔻**立命馆常见陷阱** * ❌ 只写「認識不足」「ミスが起きる」=抽象过头 * ✅ 必须出现「解釈のずれ」「工程後半」 *** ** * ** *** ### 【問題2】(ソフトウェア分野・相似②) **問2.** ソフトウェアテストにおいて, **テストケースの設計が重要とされる理由** を テストの目的と関連づけて説明せよ。 🔻**立命馆常见陷阱** * ❌ 把「バグを直す」写进来(那是デバッグ) * ✅ 关键词是「欠陥の発見」「網羅性」 *** ** * ** *** ### 【問題3】(ソフトウェア分野・预测①) **問3.** ソフトウェア開発において, **内部品質** と**外部品質**が区別される理由を説明せよ。 🔻**立命馆常见陷阱** * ❌ 写成"用户视角 / 开发者视角"一句话就结束 * ✅ 必须点出: * 内部结构 * 利用者から見えない点 * 保守・変更との关系 *** ** * ** *** ### 【問題4】(ソフトウェア分野・预测②) **問4.** リファクタリングを行う際に, **外部的挙動を変更しないこと**が重要とされる理由を説明せよ。 🔻**立命馆常见陷阱** * ❌ 只写「動作が変わると困る」=小学生答案 * ✅ 要连到: * 品質保証 * テスト * 保守工程 *** ** * ** *** ## 5-软件工程(ソフトウェア)答案解析 ![请添加图片描述](https://i-blog.csdnimg.cn/direct/d83dc8b7035f46c6b5f286b240d66aa0.png) ### 【問1】要件反映失败原因 #### 你的优点 ✅ * 抓对了「顧客 vs 開発者 知識差」 * 有写「要求が曖昧」「正しい理解が困難」 #### 扣分点 ⚠️(立命馆常见) 1. 「原因の一つは問題を発生する」 → **语义回环**(原因=问题) 2. 没明确写 **「後工程への影響」** #### 🔧 最小改动·满分修正版 ```text 顧客は業務について十分な知識を持っているが, システム開発に関する専門知識は十分でない場合が多い。 一方,開発者は開発の専門知識を持つが, 業務内容の理解が不十分なことがある。 そのため,要件が曖昧なままでは正しい解釈が困難となり, 工程後半で問題が発生する可能性が高くなる。 ``` 📌 **评价:○ → ◎** *** ** * ** *** ### 【問2】テストケース設計的重要性 #### 你的理解 ✅ * テスト目的 = 欠陥発見 * 与品质(保守性、適応性)挂钩 ------ 思路是对的 #### 严重扣分点 ⚠⚠ * **问题问的是「テストケース設計が重要な理由」** * 你写成了「テストの目的」 👉 这是\*\*"答非所问型扣分"\*\* #### 🔧 最小改动·满分修正版 ```text テストケースの設計が重要とされる理由は, ソフトウェア中の欠陥を効率よく発見するためである。 適切なテストケースを設計することで, 様々な条件を網羅的に検証でき, 欠陥の見落としを防ぐことができる。 ``` 📌 **评价:△ → ◎** *** ** * ** *** ### 【問3】内部品質 vs 外部品質 #### 你的理解 ✅(这题写得很好) * 内部品質:用户看不到 * 外部品質:用户体验、使用感 #### 小扣分点 ⚠ * 内部品質 **必须连到「保守・変更」** * 外部品質 **必须连到「利用者評価」** #### 🔧 最小改动·满分修正版 ```text 内部品質とは,利用者からは直接見えない ソフトウェアの内部構造に関する品質であり, 保守性や変更容易性に影響を与える。 一方,外部品質とは, 利用者が直接評価できる品質であり, 操作性や性能などが使用体験を通じて現れる。 ``` 📌 **评价:◎ → ◎(安定)** *** ** * ** *** ### 【問4】リファクタリング #### 你的理解 ✅ * 内部品質向上 * 保守工程が楽になる #### 立命馆明确要求但你没写的点 ⚠⚠ * **「外部的挙動を変更しない理由」** * 没提测试 / 品质保证 #### 🔧 最小改动·满分修正版 ```text リファクタリングを行う目的は, ソフトウェアの内部構造を改善し, 内部品質を向上させることである。 外部的挙動を変更しないことで, 既存の機能やテスト結果を維持でき, 保守工程を安全かつ容易に行うことができる。 ``` 📌 **评价:○ → ◎** *** ** * ** *** ## 6-总结 用日语的方式来直接训练,我认为是提示能力的好办法吧,希望从今天开始,每天坚持到考试那天,一直训练。

相关推荐
天上的光2 小时前
车道线检测
学习
咚咚王者2 小时前
人工智能之核心基础 机器学习 第十三章 自监督学习
人工智能·学习·机器学习
2501_944934732 小时前
高职学历转行电商运营的数据分析学习路径
学习·数据挖掘·数据分析
承渊政道2 小时前
C++学习之旅【C++String类介绍】
c语言·c++·vscode·学习
week_泽2 小时前
第10课:从零构建生产级AI Agent服务技术方案 - 学习笔记_10
人工智能·笔记·学习·ai agent
非凡ghost2 小时前
GiliSoft Audio Recorder(音频录制工具)
学习·音视频·软件需求
IT=>小脑虎2 小时前
AI时代下后端的出路在哪?
人工智能·后端·学习
前端程序猿之路2 小时前
30天大模型学习之Day3:高级 Prompt 工程
人工智能·python·学习·语言模型·大模型·prompt·ai编程
专注于大数据技术栈2 小时前
java学习--ArrayList
java·学习