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

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

1-前言

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

2-数据库データベース

データベース(本番レベル問題)

※以下の問いにすべて答えよ。

※特に断りのない限り,関係は集合(重複を含まない)とする。


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

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

A B C D
1 x p 10
1 x q 10
2 y p 20
2 y p 20
3 y q 30

以下の問いに答えよ。

  1. 上の関係において 必ず成り立つ 関数従属性をすべて記述せよ。

  2. 候補キーをすべて求めよ。

  3. 関係 ( R ) を 第3正規形 に分解せよ。ただし,

    • 情報損失が生じないこと
    • 関数従属性が保存されること
      に留意すること。
  • 重複行の存在に惑わされないこと
  • 推移的に導かれる従属性を「必ず成り立つ」と誤認しないこと
  • 第3正規形分解における従属性保存を確認すること

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

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

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

  1. 学科番号ごとに,GPA の最大値を持つ学生 の学生番号と GPA を出力せよ。

    ただし,同一学科内に複数存在する場合はすべて出力すること。

  2. 1980年1月1日以前に生まれた学生の GPA の平均値以上 の GPA を持つ学生の

    学生番号と学生名を求めよ。

  3. 全学生のうち,自分と同じ学科に所属する学生が 3 人以上存在する学生をすべて出力せよ。

🔍 *注意

  • WHERE と HAVING の混同
  • 集約関数と非集約属性の同時使用
  • 副問合せの結果が「単一値」か「集合」かの判断ミス

【問題3】(データベース分野・予測問題:関係代数/結合)

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


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

(1) 必ず成り立つ関数従属性

你的答案

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

判定:⚠️ 减分(不是满分)

  • A → B:正确
  • B → D:正确
  • A → D不应写

👉 原因(这点非常关键)
A → D 是由 A → B → D 推出来的"传递従属性"

题目要求的是:

必ず成り立つ(最小・直接)関数従属性

本番安全答案

复制代码
A → B
B → D

⚠️ 多写不会加分,只会扣"理解不准确分"


(2) 候補キー

你的答案

复制代码
AC

判定:✅ 满分

✔ 正确

✔ 最小

✔ 唯一


(3) 第3正規形分解

你的答案

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

判定:✅ 满分(这次是完全正确的)

你这一步明显比上一套进步了,逐条检查:

检查项 结果
无损连接
保持 FD
各关系 3NF

【問題2】SQL

(1) 学科别 GPA 最大值

你的答案

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

判定:❌ 本番 0 分

错误

  • GROUP BY 学科番号
  • SELECT 学生番号 ❌(非集约列)
  • 语义不成立

👉 题目要的是:

GPA 最大的学生(行)

而你写的是:

学科的最大 GPA(数值)

正确方向提示(不是答案)

  • 要用 相关子查询
  • 或 JOIN + MAX

(2) 1980 年以前出生 & GPA ≥ 平均

你的答案

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

判定:❌ 语义错误

错在哪?

题目是:

1980年以前出生的学生的 GPA 平均值

而你写成了:

全体学生的 GPA 平均值

正确思路

  • AVG(GPA) 的计算对象
  • WHERE 条件是否一致

(3) 同一学科人数 ≥ 3 的学生

你的答案(概念性)

sql 复制代码
SELECT *
FROM 学生 s
WHERE COUNT(学科番号) >= 3

判定:❌ SQL 结构错误(0 分)

错因

  • COUNT 不能直接写在 WHERE
  • 没有 GROUP BY
  • 没有关联"同一学科"

正确方向提示

  • 子查询:先算「学科人数 ≥3 的学科」
  • 再选属于这些学科的学生

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

(1) 自然結合 P ⋈ Q

你的结果

你写出了:

  • B=2 的 4 行
  • B=3 的 4 行

判定:✅ 满分

✔ 行数正确

✔ 组合完整

✔ B 只保留一列


(2) 条件付き結合(D=10)

你的结果

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

判定:✅ 满分


(3) 理由说明

你的说明(要点)

有 B 作为共通属性

再加上 D=10 的条件,结果被筛掉

判定:⚠️ 内容正确,表达略弱

本番更稳一句

复制代码
自然結合は共通属性 B の一致のみを条件とするが,
条件付き結合ではさらに Q.D = 10 の制約が加わるため,
条件を満たさないタプルが除外される。

【問題2】SQL 正确答案

关系:
学生(学生番号, 学生名, 学科番号, GPA, 生年月日)


(1) 学科番号ごとに,GPA の最大値を持つ学生の学生番号と GPA

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

✔ 同一学科内并列第一也会全部输出

✔ 本番满分写法


(2) 1980年1月1日以前に生まれた学生の GPA の平均値以上の GPA を持つ学生

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

✔ AVG 的计算对象正确

✔ 条件范围不混乱


(3) 自分と同じ学科に所属する学生が 3 人以上存在する学生

sql 复制代码
SELECT *
FROM 学生
WHERE 学科番号 IN (
  SELECT 学科番号
  FROM 学生
  GROUP BY 学科番号
  HAVING COUNT(*) >= 3
);

✔ COUNT 用在 HAVING


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

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

ウォーターフォール型開発において,

各工程を順に進めるという特徴が,
要件定義段階で発生した誤りを後工程で修正しにくくする理由について説明せよ。

なお,工程間の関係に着目して述べること。

【陷阱】

  • ❌ 「手戻りが発生する」だけで終わる
  • ❌ 成本の話だけを書く
  • ✅ 工程の依存関係・前工程成果物に言及できているか

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

統合テストにおいて用いられる
トップダウンテスト およびボトムアップテスト について,

それぞれのテスト開始位置と結合の進め方を説明せよ。

また,各手法で使用される補助プログラムの役割についても述べよ。

【陷阱(超頻出)】

  • ❌ スタブとドライバの対応関係の誤り
  • ❌ 単体テストとの混同
  • ✅ 「開始位置+補助プログラムの役割」を両方書いているか

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

ソフトウェアテストにおいて,
ブラックボックステストとホワイトボックステスト

異なる観点から行われる。

それぞれのテストの特徴を説明し,

着目する情報の違いについて述べよ。

【予測ポイント】

  • 近年出やすい「対比+観点」型
  • 開発モデル・統合テストとは非重複

【陷阱】

  • ❌ テスト技法(境界値など)に話を広げすぎる
  • ❌ 「中身を見る/見ない」だけで終わる
  • ✅ 何を情報として利用するかを明確に述べているか

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

ソフトウェアの品質特性の一つとして
保守性が挙げられる。

保守性が高いソフトウェアとはどのようなものかを説明し,

その実現が重要とされる理由について述べよ。

【予測ポイント】

  • 品質特性(ISO的思考)
  • リファクタリング・開発手法とは非重複

【陷阱】

  • ❌ 「バグが少ない」だけ
  • ❌ 性能・信頼性と混同
  • ✅ 修正・変更・理解のしやすさに言及しているか

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

問1|ウォーターフォール型開発(相似题)

你的答案评价

✔ 抓到了三个关键点:

  • 早期要件定义
  • 要件模糊
  • 后期返工困难

👉 方向是对的


会被扣分的地方

❌ 问题在于:

  • 没有明确说明"为什么结构上难以修正"
  • "工程之间的关系"写得太轻

阅卷人期待看到的是:

👉 前工程成果物 = 后工程输入


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

ウォーターフォール型開発では,

各工程が前工程の成果物を前提として順に進められる。

そのため,要件定義段階での誤りは後工程に引き継がれ,

開発が進むにつれて修正が困難となる。

結果として,大きな手戻りが発生しやすい。

🔑 关键词已全部命中评分点


問2|トップダウン/ボトムアップ(相似题)

你的答案评价

这一题你是安全的

  • 上位→下位 / Stub ✔
  • 下位→上位 / Driver ✔
  • 没写反 ✔

👉 这题 = 8~9 分起步


但为什么还不是满分?

❌ 结尾一句:

つまり、開発と補助プログラムの識別の区別

这一句:

  • 表达有点不自然
  • 没总结"测试思想差异"

✅ 满分润色版(日文)

トップダウンテストは,上位モジュールから順に結合し,

未完成の下位モジュールをスタブで代替する。

ボトムアップテストは,下位モジュールから順に結合し,

上位モジュールの動作をドライバで模擬する。

👉 不需要多一句废话


問3|ブラックボックス/ホワイトボックス(预测题)

你的答案评价

✔ 方向正确

✔ 没混淆

✔ 关键词基本齐全

但 ⚠️ 这是"容易被细扣"的题


会扣你的点

  1. ブラックボックス:

    • 没明确说 「仕様に基づく」
  2. ホワイトボックス:

    • "境界值"写了,但主轴不够清晰

✅ 满分标准答案(日文)

ブラックボックステストは,

プログラムの内部構造を考慮せず,

仕様に基づいて入力と出力の関係を確認するテストである。

ホワイトボックステストは,

プログラムの内部構造に着目し,

制御構造や処理経路を確認するテストである。

👉 这是"最安全模板"


問4|保守性(预测题)

你的答案评价

✔ 懂保守性

✔ 没写错方向

但 ❌ 踩了一个典型陷阱


致命扣分点

你写了:

バグが少ない

品質特性が高い

  • "バグが少ない" ≠ 保守性
  • 这是「信頼性」的方向

想看到的关键词

  • 修正しやすい
  • 変更しやすい
  • 理解しやすい

✅ 满分修正版(日文)

保守性が高いソフトウェアとは,

不具合修正や仕様変更を容易に行えるソフトウェアである。

内部構造が理解しやすく整理されているため,

保守作業の負担を軽減できる。


6-总结

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

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