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

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

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 + 二重否定

✅ 满分结构(示意)

sql 复制代码
SELECT S.学生番号, S.学生名
FROM 学生 S
WHERE NOT EXISTS (
  SELECT *
  FROM 科目 K
  WHERE NOT EXISTS (
    SELECT *
    FROM 履修 R
    WHERE R.学生番号 = S.学生番号
      AND R.科目番号 = K.科目番号
  )
);

問4(2)

「学科内で最高点(同点含む)」


当前的问题

  • ❌ 把 子查询最大值 写成了结构混乱的 HAVING
  • ❌ 没有按 学科分组比较
  • ❌ MAX 的作用域不清晰

正确逻辑

  • 对每个学科算 MAX
  • 与学生成绩比较
  • 同点全部输出

正确结构(示意)

sql 复制代码
SELECT *
FROM 学生 S
JOIN 履修 R ON S.学生番号 = R.学生番号
WHERE R.成績 = (
  SELECT MAX(R2.成績)
  FROM 学生 S2
  JOIN 履修 R2 ON S2.学生番号 = R2.学生番号
  WHERE S2.学科番号 = S.学科番号
);

📌 問4 採点评价

小问 评价
(1)
(2)

4-软件工程(ソフトウェア)

【問題1】(软件工程・相似母题)

問1.

ソフトウェア開発において,要件定義の段階で問題が十分に解決されないまま設計・実装に進むことの問題点を,1つ挙げて説明せよ。

陷阱提示(你自己注意)

  • ❌ 不要写「バグが増える」这种结果
  • ✅ 要写「なぜ工程後半で致命化するか

【問題2】(软件工程・相似母题)

問2.

ウォーターフォールモデルと比較した場合の,反復型(イテレーティブ)開発プロセスの特徴を1つ述べ,その理由を説明せよ。

陷阱提示

  • ❌ 只写「柔軟」会被判不充分
  • ✅ 必须出现「フィードバック 」「要求変更」中的至少一个

【問題3】(软件工程・预测题)

问3.

ソフトウェアの保守作業において,**是正保守(corrective maintenance)適応保守(adaptive maintenance)**の目的がどのように異なるかを説明せよ。

陷阱提示

  • ❌ 把「機能追加」写进去是常见扣分点
  • ✅ 抓住「原因来源不同」

【問題4】(软件工程・预测题)

問4.

モジュール分割を行う際に,結合度を低く保つことが重要とされる理由を,ソフトウェアの品質の観点から説明せよ。

陷阱提示

  • ❌ 不要只写「わかりやすい」
  • ✅ 必须连接到「変更」「影響範囲」「保守性」

5-软件工程(ソフトウェア)答案解析


問題1 评阅(要求定义为什么难)

你的原意(✔ 对)

  • 用户懂业务,不懂系统

  • 要求没说清 → 后期问题多 → 返工、重做

  • 「专业知识不足」写得有点

  • 没明确点出 "解釈のズレ" 这个关键词

✅ 本番满分修正版(推荐背)

text 复制代码
顧客は自らの業務に関する知識を豊富に持っている一方で,
システム開発に関する専門知識が十分でない場合が多い。
そのため,要件定義の段階で要求の解釈にずれが生じ,
曖昧な要求が残ったまま開発が進むと,
工程後半で多くの問題が発生し,手戻りや再構築が必要となる。

📌 这一题:现在 ≈ 70% → 修正后 ≈ 95%


問題2 评阅(开发模型对比)

理解(✔ 对)

  • 瀑布:前期固定,不灵活
  • 迭代:能应对需求变化

致命扣分点(⚠⚠)

  • 问题问的是「反復型の利点」
  • 你写成了「ウォーターフォールの欠点」

「方向对,但答题焦点偏了」= 会被扣分

✅ 本番满分修正版

text 复制代码
反復型開発プロセスでは,開発の途中で顧客からの
フィードバックを取り入れながら,
要求の変更や修正に柔軟に対応することができる。
そのため,要求の曖昧さを早期に発見し,
完成度の高いソフトウェアを開発しやすい。

📌 这一题:现在 ≈ 50~60% → 修正后 ≈ 100%


問題3 评阅(是正保守 vs 適応保守)

你的理解(✔ 非常好)

  • 是正保守:修正错误、保证正确性
  • 適応保守:适应环境变化

小扣分点(⚠)

  • 「使用方法」有点模糊
  • 少了一个环境变化的具体来源

✅ 本番满分修正版

text 复制代码
是正保守の目的は,ソフトウェアに内在する欠陥を修正し,
正しい動作を維持することである。
一方,適応保守の目的は,
ハードウェアやOSなどの実行環境の変化に対応し,
ソフトウェアを適応させることである。

📌 这一题:你已经 ≈ 85~90%


問題4 评阅(模块化 / 低耦合)

你的理解(✔ 对)

  • 影响范围小

  • 修改不影响其他模块

  • 保守性

  • 変更容易性

✅ 本番满分修正版

text 复制代码
モジュール分割の目的は,
各モジュールの影響範囲を限定することである。
結合度を低く保つことで,
あるモジュールを変更しても他のモジュールに
影響を与えにくくなり,
ソフトウェア全体の保守性や変更容易性が向上する。

📌 这一题:现在 ≈ 75% → 修正后 ≈ 95%


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++·学习