大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(8)
- 1-前言
- 2-数据库データベース
- 問1【データベース/B木操作(相似①)】
- 問2【データベース/B木操作(相似②)】
- 問3【データベース/正規化(予測①)】
- 問4【データベース/SQL(予測②)】
- 3-数据库データベース-答案解析
- 問1(2次B木:16→28→6→21 挿入)正しい最終結果
- (1) 16 挿入後
- (2) 28 挿入後
- (3) 6 挿入後
- ✅ (4) 21 挿入後(最終)
- ✅ 最終形
- 問2(B+木:24 削除)正しい書き方
- 問3(正規化)正しいアンサー
- (1) 候補キー
- (2) 第2正規形か
- (3) 第3正規形への分解(満点形)
- 問4(SQL)正しいアンサー
- (1) 「すべての開講年度で1科目以上履修」
- (2) 「学科内で最高点の学生(同点は全員)」
- 4-软件工程(ソフトウェア)
- 【問題1】(ソフトウェア分野・相似①)
- 【問題2】(ソフトウェア分野・相似②)
- 【問題3】(ソフトウェア分野・预测①)
- 【問題4】(ソフトウェア分野・预测②)
- 5-软件工程(ソフトウェア)答案解析
- 【問1】要件反映失败原因
- 你的优点 ✅
- 扣分点 ⚠️(立命馆常见)
- 🔧 最小改动·满分修正版
- 【問2】テストケース設計的重要性
- 你的理解 ✅
- 严重扣分点 ⚠⚠
- 🔧 最小改动·满分修正版
- 【問3】内部品質 vs 外部品質
- 你的理解 ✅(这题写得很好)
- 小扣分点 ⚠
- 🔧 最小改动·满分修正版
- 【問4】リファクタリング
- 你的理解 ✅
- 立命馆明确要求但你没写的点 ⚠⚠
- 🔧 最小改动·满分修正版
- 6-总结
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)
SELECTs.学生番号,s.学生名FROM学生 sWHERENOTEXISTS(SELECT1FROM(SELECTDISTINCT開講年度FROM科目)yWHERENOTEXISTS(SELECT1FROM履修 rJOIN科目 kONk.科目番号=r.科目番号WHEREr.学生番号=s.学生番号ANDk.開講年度=y.開講年度));(2) 「学科内で最高点の学生(同点は全員)」
(相関サブクエリ+MAX)
SELECTDISTINCTs.学生番号FROM学生 sJOIN履修 rONr.学生番号=s.学生番号WHEREr.成績=(SELECTMAX(r2.成績)FROM学生 s2JOIN履修 r2ONr2.学生番号=s2.学生番号WHEREs2.学科番号=s.学科番号);4-软件工程(ソフトウェア)
【問題1】(ソフトウェア分野・相似①)
問1.
要件定義と外部設計において,
顧客要求が正しく反映されない原因を 1 つ挙げ,
それが後工程に与える影響について説明せよ。
🔻立命馆常见陷阱
- ❌ 只写「認識不足」「ミスが起きる」=抽象过头
- ✅ 必须出现「解釈のずれ」「工程後半」
【問題2】(ソフトウェア分野・相似②)
問2.
ソフトウェアテストにおいて,
テストケースの設計が重要とされる理由を
テストの目的と関連づけて説明せよ。
🔻立命馆常见陷阱
- ❌ 把「バグを直す」写进来(那是デバッグ)
- ✅ 关键词是「欠陥の発見」「網羅性」
【問題3】(ソフトウェア分野・预测①)
問3.
ソフトウェア開発において,
内部品質と外部品質が区別される理由を説明せよ。
🔻立命馆常见陷阱
❌ 写成“用户视角 / 开发者视角”一句话就结束
✅ 必须点出:
- 内部结构
- 利用者から見えない点
- 保守・変更との关系
【問題4】(ソフトウェア分野・预测②)
問4.
リファクタリングを行う際に,
外部的挙動を変更しないことが重要とされる理由を説明せよ。
🔻立命馆常见陷阱
❌ 只写「動作が変わると困る」=小学生答案
✅ 要连到:
- 品質保証
- テスト
- 保守工程
5-软件工程(ソフトウェア)答案解析
【問1】要件反映失败原因
你的优点 ✅
- 抓对了「顧客 vs 開発者 知識差」
- 有写「要求が曖昧」「正しい理解が困難」
扣分点 ⚠️(立命馆常见)
- 「原因の一つは問題を発生する」
→语义回环(原因=问题) - 没明确写「後工程への影響」
🔧 最小改动·满分修正版
顧客は業務について十分な知識を持っているが, システム開発に関する専門知識は十分でない場合が多い。 一方,開発者は開発の専門知識を持つが, 業務内容の理解が不十分なことがある。 そのため,要件が曖昧なままでは正しい解釈が困難となり, 工程後半で問題が発生する可能性が高くなる。📌评价:○ → ◎
【問2】テストケース設計的重要性
你的理解 ✅
- テスト目的 = 欠陥発見
- 与品质(保守性、適応性)挂钩 —— 思路是对的
严重扣分点 ⚠⚠
- 问题问的是「テストケース設計が重要な理由」
- 你写成了「テストの目的」
👉 这是**“答非所问型扣分”**
🔧 最小改动·满分修正版
テストケースの設計が重要とされる理由は, ソフトウェア中の欠陥を効率よく発見するためである。 適切なテストケースを設計することで, 様々な条件を網羅的に検証でき, 欠陥の見落としを防ぐことができる。📌评价:△ → ◎
【問3】内部品質 vs 外部品質
你的理解 ✅(这题写得很好)
- 内部品質:用户看不到
- 外部品質:用户体验、使用感
小扣分点 ⚠
- 内部品質必须连到「保守・変更」
- 外部品質必须连到「利用者評価」
🔧 最小改动·满分修正版
内部品質とは,利用者からは直接見えない ソフトウェアの内部構造に関する品質であり, 保守性や変更容易性に影響を与える。 一方,外部品質とは, 利用者が直接評価できる品質であり, 操作性や性能などが使用体験を通じて現れる。📌评价:◎ → ◎(安定)
【問4】リファクタリング
你的理解 ✅
- 内部品質向上
- 保守工程が楽になる
立命馆明确要求但你没写的点 ⚠⚠
- 「外部的挙動を変更しない理由」
- 没提测试 / 品质保证
🔧 最小改动·满分修正版
リファクタリングを行う目的は, ソフトウェアの内部構造を改善し, 内部品質を向上させることである。 外部的挙動を変更しないことで, 既存の機能やテスト結果を維持でき, 保守工程を安全かつ容易に行うことができる。📌评价:○ → ◎
6-总结
用日语的方式来直接训练,我认为是提示能力的好办法吧,希望从今天开始,每天坚持到考试那天,一直训练。