大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(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-总结 用日语的方式来直接训练,我认为是提示能力的好办法吧,希望从今天开始,每天坚持到考试那天,一直训练。

相关推荐
西岸行者3 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意3 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码3 天前
嵌入式学习路线
学习
毛小茛3 天前
计算机系统概论——校验码
学习
babe小鑫3 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms3 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下3 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。3 天前
2026.2.25监控学习
学习
im_AMBER3 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J3 天前
从“Hello World“ 开始 C++
c语言·c++·学习