大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(7)
- 1-前言
- 2-数据库データベース
- 問1【データベース・B木操作|相似①】
- 問2【データベース・B木操作|相似②】
- 問3【データベース・正規化|予測①】
- 問4【データベース・SQL|予測②】
- 3-数据库データベース-答案解析
- 一、問3(正規化)——❌ 核心概念性错误(必须纠正)
- 题目回顾(问3)
- 你写的答案
- (1)
- 正确分析(一步一步)
- ① 先做闭包
- ✅ 正确结论
- (2)
- 正确逻辑是:
- (3) 你给的分解
- 为什么错?
- ✅ 标准满分分解
- 📌 問3 採点评价
- 二、問4(SQL)——❌ 结构性错误(但可修)
- 問4(1)
- 正确思路(考试要你这样想)
- ✅ 满分结构(示意)
- 問4(2)
- 当前的问题
- 正确逻辑
- 正确结构(示意)
- 📌 問4 採点评价
- 4-软件工程(ソフトウェア)
- 【問題1】(软件工程・相似母题)
- 【問題2】(软件工程・相似母题)
- 【問題3】(软件工程・预测题)
- 【問題4】(软件工程・预测题)
- 5-软件工程(ソフトウェア)答案解析
- 問題1 评阅(要求定义为什么难)
- 你的原意(✔ 对)
- ✅ 本番满分修正版(推荐背)
- 問題2 评阅(开发模型对比)
- 理解(✔ 对)
- 致命扣分点(⚠⚠)
- ✅ 本番满分修正版
- 問題3 评阅(是正保守 vs 適応保守)
- 你的理解(✔ 非常好)
- 小扣分点(⚠)
- ✅ 本番满分修正版
- 問題4 评阅(模块化 / 低耦合)
- 你的理解(✔ 对)
- ✅ 本番满分修正版
- 6-总结
1-前言
为了考上大学院,做了日语版本练习,边学边看边记录
2-数据库データベース
問1【データベース・B木操作|相似①】
次に示す2 次の B 木に対して,以下の操作をこの順に行った後の B 木を,
与えられた図と同様の箱・●ポインタ形式で描け。
(1) キー値18のレコードを挿入する。
(2) (1) の結果に対して,キー値26のレコードを挿入する。
(3) (2) の結果に対して,キー値7のレコードを挿入する。
(4) (3) の結果に対して,キー値21のレコードを挿入する。
ただし,ノードの分割が発生する場合は,
分割の過程および昇格するキーが分かるように図示すること。
(注意)
- 2 次 B 木における1 ノードあたりのキー数に注意せよ。
- 境界条件(<,≦)の扱いを誤らないこと。
問2【データベース・B木操作|相似②】
次に示すB+ 木(内部ノードと葉ノードを区別する)に対して,
キー値30を削除する操作を行った。
(1) 削除後の B+ 木を図示せよ。
(2) 再配分または併合が発生するか否かを判定し,
発生する場合はその理由を説明せよ。
ただし,
- すべての葉ノードは同一深さにあるものとする。
- 再配分が可能な場合は,併合は行わないものとする。
問3【データベース・正規化|予測①】
次の関係 ( R ) が与えられている。
[
R(\underline{A}, B, C, D, E)
]
また,以下の関数従属が成り立つものとする。
- ( A \rightarrow B )
- ( B \rightarrow C )
- ( AD \rightarrow E )
(1) 候補キーをすべて求めよ。
(2) 関係 ( R ) が第 2 正規形であるか判定し,理由を述べよ。
(3) ( R ) を第 3 正規形に分解せよ。
(注意)
- 部分関数従属と推移的関数従属を混同しないこと。
- 不要な分解は減点対象とする。
問4【データベース・SQL|予測②】
次の表を考える。下線は主キーを表す。
- 学生(学生番号, 学生名, 学科番号, 生年月日)
- 履修(学生番号, 科目番号, 成績)
- 科目(科目番号, 科目名, 学期)
次の問い合わせをSQL を用いて記述せよ。
(1)
「すべての学期において1 科目以上を履修している学生」の
学生番号と学生名を求めよ。
(2)
生年月日が1995 年 1 月 1 日以降の学生のうち,
その学生の成績が同一学科内で最高点である学生の全情報を求めよ。
(注意)
- WHERE と HAVING の使い分けに注意せよ。
- 同点が複数存在する場合はすべて出力すること。
- 集合の包含関係を正しく表現すること。
3-数据库データベース-答案解析
一、問3(正規化)——❌ 核心概念性错误(必须纠正)
这是今天最重要的一点。
题目回顾(问3)
关系:
[
R(\underline{A}, B, C, D, E)
]
函数依赖:
- ( A \rightarrow B )
- ( B \rightarrow C )
- ( AD \rightarrow E )
你写的答案
(1)
候補キーはB と D
❌错误(致命)
正确分析(一步一步)
① 先做闭包
- ( A^+ = {A, B, C} )
- ( (A,D)^+ = {A, B, C, D, E} )
👉只有 AD 能决定所有属性
✅ 正确结论
候補キー:AD(唯一)
❌B 不是键(B 推不出 A、D、E)
(2)
第2正規形ではない
理由:非主属性的部分依赖没有消除
❌判断对,理由写错一半
正确逻辑是:
- 主键是AD
- 非主属性B、C
- 存在
[
A \rightarrow B,\ C
] - A 是主键的一部分
→部分関数従属
👉 所以不满足第2正規形
⚠️ 你没有明确点出「AD 是主键」,
(3) 你给的分解
R1(A, B, C) R2(A, D, E)❌错误(不满足 3NF)
为什么错?
在R1(A,B,C)中:
- 有 ( A → B )
- 有 ( B → C )
👉仍然存在推移的函数従属
不是第3正規形
✅ 标准满分分解
[
\begin{aligned}
R_1(A, B)
R_2(B, C)
R_3(A, D, E)
\end{aligned}
]
这三个表:
- 无部分依赖
- 无推移依赖
- 无信息丢失
📌 問3 採点评价
| 小问 | 评价 |
|---|---|
| (1) 候補キー | ❌ |
| (2) 正規形判断 | ⚠️(结论对,论证不严) |
| (3) 分解 | ❌ |
👉本番:几乎整题失分
⚠️ 这是「概念没完全站稳」的典型信号
好消息是:这是最好补的那种错误
二、問4(SQL)——❌ 结构性错误(但可修)
問4(1)
「すべての学期において1科目以上履修している学生」
正确思路(考试要你这样想)
这是经典的:
不存在某个学期,该学生没有修任何课
👉 用NOT EXISTS + 二重否定
✅ 满分结构(示意)
SELECTS.学生番号,S.学生名FROM学生 SWHERENOTEXISTS(SELECT*FROM科目 KWHERENOTEXISTS(SELECT*FROM履修 RWHERER.学生番号=S.学生番号ANDR.科目番号=K.科目番号));問4(2)
「学科内で最高点(同点含む)」
当前的问题
- ❌ 把子查询最大值写成了结构混乱的 HAVING
- ❌ 没有按学科分组比较
- ❌ MAX 的作用域不清晰
正确逻辑
- 对每个学科算 MAX
- 与学生成绩比较
- 同点全部输出
正确结构(示意)
SELECT*FROM学生 SJOIN履修 RONS.学生番号=R.学生番号WHERER.成績=(SELECTMAX(R2.成績)FROM学生 S2JOIN履修 R2ONS2.学生番号=R2.学生番号WHERES2.学科番号=S.学科番号);📌 問4 採点评价
| 小问 | 评价 |
|---|---|
| (1) | ❌ |
| (2) | ❌ |
4-软件工程(ソフトウェア)
【問題1】(软件工程・相似母题)
問1.
ソフトウェア開発において,要件定義の段階で問題が十分に解決されないまま設計・実装に進むことの問題点を,1つ挙げて説明せよ。
陷阱提示(你自己注意)
- ❌ 不要写「バグが増える」这种结果
- ✅ 要写「なぜ工程後半で致命化するか」
【問題2】(软件工程・相似母题)
問2.
ウォーターフォールモデルと比較した場合の,反復型(イテレーティブ)開発プロセスの特徴を1つ述べ,その理由を説明せよ。
陷阱提示
- ❌ 只写「柔軟」会被判不充分
- ✅ 必须出现「フィードバック」「要求変更」中的至少一个
【問題3】(软件工程・预测题)
问3.
ソフトウェアの保守作業において,**是正保守(corrective maintenance)と適応保守(adaptive maintenance)**の目的がどのように異なるかを説明せよ。
陷阱提示
- ❌ 把「機能追加」写进去是常见扣分点
- ✅ 抓住「原因来源不同」
【問題4】(软件工程・预测题)
問4.
モジュール分割を行う際に,結合度を低く保つことが重要とされる理由を,ソフトウェアの品質の観点から説明せよ。
陷阱提示
- ❌ 不要只写「わかりやすい」
- ✅ 必须连接到「変更」「影響範囲」「保守性」
5-软件工程(ソフトウェア)答案解析
問題1 评阅(要求定义为什么难)
你的原意(✔ 对)
用户懂业务,不懂系统
要求没说清 → 后期问题多 → 返工、重做
「专业知识不足」写得有点泛
没明确点出“解釈のズレ”这个关键词
✅ 本番满分修正版(推荐背)
顧客は自らの業務に関する知識を豊富に持っている一方で, システム開発に関する専門知識が十分でない場合が多い。 そのため,要件定義の段階で要求の解釈にずれが生じ, 曖昧な要求が残ったまま開発が進むと, 工程後半で多くの問題が発生し,手戻りや再構築が必要となる。📌这一题:现在 ≈ 70% → 修正后 ≈ 95%
問題2 评阅(开发模型对比)
理解(✔ 对)
- 瀑布:前期固定,不灵活
- 迭代:能应对需求变化
致命扣分点(⚠⚠)
- 问题问的是「反復型の利点」
- 你写成了「ウォーターフォールの欠点」
「方向对,但答题焦点偏了」= 会被扣分
✅ 本番满分修正版
反復型開発プロセスでは,開発の途中で顧客からの フィードバックを取り入れながら, 要求の変更や修正に柔軟に対応することができる。 そのため,要求の曖昧さを早期に発見し, 完成度の高いソフトウェアを開発しやすい。📌这一题:现在 ≈ 50~60% → 修正后 ≈ 100%
問題3 评阅(是正保守 vs 適応保守)
你的理解(✔ 非常好)
- 是正保守:修正错误、保证正确性
- 適応保守:适应环境变化
小扣分点(⚠)
- 「使用方法」有点模糊
- 少了一个环境变化的具体来源
✅ 本番满分修正版
是正保守の目的は,ソフトウェアに内在する欠陥を修正し, 正しい動作を維持することである。 一方,適応保守の目的は, ハードウェアやOSなどの実行環境の変化に対応し, ソフトウェアを適応させることである。📌这一题:你已经 ≈ 85~90%
問題4 评阅(模块化 / 低耦合)
你的理解(✔ 对)
影响范围小
修改不影响其他模块
保守性
変更容易性
✅ 本番满分修正版
モジュール分割の目的は, 各モジュールの影響範囲を限定することである。 結合度を低く保つことで, あるモジュールを変更しても他のモジュールに 影響を与えにくくなり, ソフトウェア全体の保守性や変更容易性が向上する。📌这一题:现在 ≈ 75% → 修正后 ≈ 95%
6-总结
用日语的方式来直接训练,我认为是提示能力的好办法吧,希望从今天开始,每天坚持到考试那天,一直训练。