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

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

1-前言

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

2-数据库データベース

【問題1】(データベース分野:関数従属性・正規化)

次の関係 ( R(A, B, C, D) ) が与えられている。

A B C D
1 x α 10
1 x β 10
2 y α 20
2 y α 20
3 y β 30

以下の問いに答えよ。

  1. 上の関係において 必ず成り立つ 関数従属性をすべて記述せよ。
  2. 候補キーをすべて求めよ。
  3. 関係 ( R ) を 第3正規形 に分解せよ。ただし、情報損失および関数従属性の保存に留意すること。
  • 重複行の扱い(集合として考える)
  • 「たまたま成り立っている」従属性と「常に成り立つ」従属性の混同
  • 候補キーを最小でなく挙げてしまうミス

【問題2】(データベース分野:SQL・集約・副問合せ)

次の関係 学生(学生番号, 学生名, 学科番号, GPA, 生年月日) が存在するとする。

以下の問い合わせを SQLで記述せよ

  1. 学科番号ごとに、GPA の平均値が 3.0 以上である学科番号と平均 GPA を求めよ。
  2. 1985年1月1日以降に生まれた学生の中で、全体の GPA の最大値を上回る GPA を持つ学生の学生番号と学生名を求めよ。
  3. GPA が 同一学科内で最大値となる学生をすべて出力せよ。
  • WHERE と HAVING の使い分け
  • 集約関数と非集約属性の同時使用
  • 副問い合わせで 比較対象が集合になるケースの処理

【問題3】(データベース分野:予測問題/結合演算)

次の 2 つの関係 ( P ), ( Q ) が与えられている。

関係 P

A B
1 2
2 3
3 2

関係 Q

B C D
2 x 10
2 y 20
3 x 10

以下の問いに答えよ。

  1. 自然結合 ( P \bowtie Q ) の結果をすべて記述せよ。
  2. 条件付き結合 ( P \bowtie_{P.B = Q.B \land Q.D = 10} Q ) の結果を記述せよ。
  3. 上記 2 つの結果が異なる理由を、属性の一致条件の観点から簡潔に説明せよ。

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


【問題1】関数従属性・正規化

(1) 関数従属性

你的答案

复制代码
A → B  
A → D  
B → D

判定:⚠️ 部分正确(减分)

正确判定

必ず成り立つ 的是:

  • A → B(同一 A 的 B 不变)
  • A → D(这是经由 B 间接得到,不能直接写)
  • B → D

👉 规则

只能写"最小・直接"函数従属性

推导出来的(经由传递)不算"必ず成り立つ"

本番满分写法

复制代码
A → B  
B → D

(2) 候補キー

你的答案

复制代码
AC

判定:✅ 完全正确(满分)

理由(你脑子里是对的):

  • A 不能决定 C
  • C 不能被其他决定
  • AC⁺ = ABCD

✔ 标准候补キー


(3) 第3正規形分解

你的答案

复制代码
{ (A, B), (A, C, D) }

判定:❌ 本番 0 分级错误

错因(非常重要)

你忽略了 B → D 这个函数従属性。

👉 判卷逻辑:

  • 每个 FD 必须在 某一个关系中被保持

  • 你拆出来的两个关系里:

    • (A,B) ❌ 不含 D
    • (A,C,D) ❌ 不含 B
  • B → D 被破坏 → 不满足 3NF 分解条件

正确满分分解

复制代码
R1(A, B)
R2(B, D)
R3(A, C)

✔ 无损连接

✔ 保持所有 FD

✔ 第3正規形


【問題2】SQL

(1) 学科别 GPA 平均 ≥ 3.0

你的答案

sql 复制代码
SELECT 学科番号, AVG(GPA)
FROM 学生
GROUP BY 学科番号
HAVING AVG(GPA) >= 3.0;

(2) 1985年以后出生中,超过"整体最大 GPA"的学生

你的答案

sql 复制代码
SELECT 学生番号, 学生名
FROM 学生
WHERE GPA > (
  SELECT MAX(GPA)
  FROM 学生
  WHERE 生年月日 >= '1985-1-1'
);

判定:❌ 逻辑错误(会被扣分)

错误点

题目是:

1985年以后出生的人中,
GPA >「全体学生的最大 GPA」

你却写成了:

GPA >「1985年以后出生者中的最大 GPA」

正确满分写法

sql 复制代码
SELECT 学生番号, 学生名
FROM 学生
WHERE 生年月日 >= '1985-01-01'
  AND GPA > (
    SELECT MAX(GPA)
    FROM 学生
  );

(3) 学科内 GPA 最大的学生

你的答案

sql 复制代码
SELECT *
FROM 学生
GROUP BY 学科番号
HAVING GPA = MAX(GPA);

判定:❌ 本番 0 分

原因(SQL 死亡陷阱)

  • GROUP BY 后
  • SELECT * ❌
  • GPA 非集约列 ❌
  • 标准 SQL 不允许

正确写法(相关子查询)

sql 复制代码
SELECT *
FROM 学生 s
WHERE GPA = (
  SELECT MAX(GPA)
  FROM 学生
  WHERE 学科番号 = s.学科番号
);

【問題3】関係代数(結合)

(1) 自然結合 P ⋈ Q

结果

把 B=2 的所有组合都列出来了

判定:⚠️ 结果数量偏多(减分)

正确自然结合结果

自然结合条件:P.B = Q.B

A B C D
1 2 x 10
1 2 y 20
3 2 x 10
3 2 y 20
2 3 x 10

(2) 条件结合 P ⋈ (B 且 D=10)

你的答案

复制代码
(1,2,x,10)
(2,3,x,10)
(3,2,x,10)

判定:✅ 满分


(3) 理由说明

你的说明

条件を制限することで、不満足のものは出ない

判定:⚠️ 意思对,但表述不够

建议满分句

复制代码
自然結合は同名属性の一致のみを条件とするが,
条件付き結合ではさらに D=10 という制約が加わるため,
結果に含まれるタプル数が減少する。

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

問1【ソフトウェア工学・相似】

ウォーターフォールモデルにおいて、
要件定義段階での不備が後工程に与える影響 について説明せよ。

また、その影響が特に大きくなる理由を、工程の進め方の観点から述べよ。

※ 図示不要。文章で簡潔に説明すること。

  • 「手戻りが発生する」だけ写完 ❌
  • 为什么在ウォーターフォール中"更严重" 没说清 ❌
  • 混入「アジャイルなら〜」跑题 ❌

問2【ソフトウェア工学・相似】

統合テストにおいて、
トップダウンテストとボトムアップテストの特徴的な違い を述べよ。

あわせて、それぞれで用いられる補助プログラムについて説明せよ。

  • 只写「順序が違う」❌
  • スタブ / ドライバ的角色写反
  • 把「単体テスト」と混在 ❌

問3【ソフトウェア工学・予測】

リファクタリングの目的を述べよ。

また、リファクタリングを行う際に保持されなければならない性質について説明せよ。

  • 近年常考**"目的 + 制約"型问题**

  • 明确区分:

    • ✔ 内部構造
    • ❌ 外部仕様

🔍 常见陷阱

  • 写成「性能改善」「機能追加」 ❌
  • 没点出"何が変わらないか" ❌

問4【ソフトウェア工学・予測】

ソフトウェア開発において、
プロトタイピングを用いる開発手法が有効となる理由 を説明せよ。

特に、要件定義との関係に着目して述べよ。

  • 强烈偏好:

    • 要件の不明確性
    • 利用者との認識差

🔍 常见陷阱

  • 写成「開発が速くなる」❌
  • 没有联系「仕様の曖昧さ」❌

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


(1)关于「需求难以准确反映」的问题

你写的内容(评价)

✔ 抓到了核心原因

  • 客户 & 开发者 知识不对称
  • 需求描述 模糊、不完整
  • 后期会引发 返工

👉 方向完全正确


❌ 会被扣分的点

  1. 没有明确点出"仕様化"的困难
  2. 没有把"为什么反映不到规格书"说得足够抽象
  3. 稍微偏"叙述",少一句"总结性结论句"

✅ 最小修改·满分版(日文)

顧客は業務内容には詳しいが,

ソフトウェア開発に関する専門知識を十分に持たない場合が多い。

一方,開発者は技術には詳しいが,

業務の背景や目的を正確に理解できないことがある。

このため,要件定義では内容が曖昧になりやすく,

要求を仕様として正確に反映させることが難しくなる。


(2)トップダウン / ボトムアップ测试

你写的内容(评价)

⚠️ 这里是最危险的一题

你现在的版本:

  • 思路:✔ 对
  • 但有 明显概念错误

❌ 严重扣分点(重点看)

你写的是:

トップダウンは下位から上位

ボトムアップは上位から下位

上位をコールは Driver

全部反了

👉 在
这题一反 = 基本 0 分


✅ 正确关系(你一定要刻进脑子)

测试方式 起点 用的假模块
トップダウン 上位 → 下位 Stub(桩)
ボトムアップ 下位 → 上位 Driver(驱动)

✅ 满分修正版(日文,直接背)

トップダウンテストは,上位モジュールから順に結合していくテスト方法であり,

未完成の下位モジュールは スタブ(Stub) によって代替する。

ボトムアップテストは,下位モジュールから順に結合していくテスト方法であり,

上位モジュールの動作を模擬するために ドライバ(Driver) を用いる。


(3)リファクタリング的目的

你写的内容(评价)

非常好的一题

  • 外部行为不变
  • 内部结构改善
  • 保守性、适应性提升

👉 完全命中出题点


⚠️ 唯一小问题

  • "目的"没用一句话总结

✅ 满分润色版(日文)

リファクタリングの目的は,

外部から見た振る舞いを変えずに,

内部構造を改善することである。

これにより,保守性や拡張性などの品質を向上させることができる。

👉 这题你原本就接近满分


(4)プロトタイピング的理由

你写的内容(评价)

✔ 抓到核心:

  • 需求不明确
  • 用户 & 开发者理解不一致

👉 方向正确


❌ 会被扣的小点

  • 没明确写出:
    "通过可视化减少认知差异"

✅ 满分修正版(日文)

プロトタイピングを用いることで,

実際に動作する試作品を通して,

利用者と開発者の認識のずれを早期に発見できる。

その結果,要件を具体化し,

要件定義をより正確に行うことが可能となる。


6-总结

用日语的方式来直接训练,我认为是提示能力的好办法吧,希望从今天开始,每天坚持到考试那天,一直训练。

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