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

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

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)

sql 复制代码
SELECT s.学生番号, s.学生名
FROM 学生 s
WHERE NOT EXISTS (
  SELECT 1
  FROM (SELECT DISTINCT 開講年度 FROM 科目) y
  WHERE NOT EXISTS (
    SELECT 1
    FROM 履修 r
    JOIN 科目 k ON k.科目番号 = r.科目番号
    WHERE r.学生番号 = s.学生番号
      AND k.開講年度 = y.開講年度
  )
);

(2) 「学科内で最高点の学生(同点は全員)」

(相関サブクエリ+MAX)

sql 复制代码
SELECT DISTINCT s.学生番号
FROM 学生 s
JOIN 履修 r ON r.学生番号 = s.学生番号
WHERE r.成績 = (
  SELECT MAX(r2.成績)
  FROM 学生 s2
  JOIN 履修 r2 ON r2.学生番号 = s2.学生番号
  WHERE s2.学科番号 = s.学科番号
);

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

【問題1】(ソフトウェア分野・相似①)

問1.

要件定義と外部設計において,
顧客要求が正しく反映されない原因 を 1 つ挙げ,

それが後工程に与える影響について説明せよ。

🔻立命馆常见陷阱

  • ❌ 只写「認識不足」「ミスが起きる」=抽象过头
  • ✅ 必须出现「解釈のずれ」「工程後半」

【問題2】(ソフトウェア分野・相似②)

問2.

ソフトウェアテストにおいて,
テストケースの設計が重要とされる理由

テストの目的と関連づけて説明せよ。

🔻立命馆常见陷阱

  • ❌ 把「バグを直す」写进来(那是デバッグ)
  • ✅ 关键词是「欠陥の発見」「網羅性」

【問題3】(ソフトウェア分野・预测①)

問3.

ソフトウェア開発において,
内部品質外部品質が区別される理由を説明せよ。

🔻立命馆常见陷阱

  • ❌ 写成"用户视角 / 开发者视角"一句话就结束

  • ✅ 必须点出:

    • 内部结构
    • 利用者から見えない点
    • 保守・変更との关系

【問題4】(ソフトウェア分野・预测②)

問4.

リファクタリングを行う際に,
外部的挙動を変更しないことが重要とされる理由を説明せよ。

🔻立命馆常见陷阱

  • ❌ 只写「動作が変わると困る」=小学生答案

  • ✅ 要连到:

    • 品質保証
    • テスト
    • 保守工程

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

【問1】要件反映失败原因

你的优点 ✅

  • 抓对了「顧客 vs 開発者 知識差」
  • 有写「要求が曖昧」「正しい理解が困難」

扣分点 ⚠️(立命馆常见)

  1. 「原因の一つは問題を発生する」
    语义回环(原因=问题)
  2. 没明确写 「後工程への影響」

🔧 最小改动·满分修正版

text 复制代码
顧客は業務について十分な知識を持っているが,
システム開発に関する専門知識は十分でない場合が多い。
一方,開発者は開発の専門知識を持つが,
業務内容の理解が不十分なことがある。
そのため,要件が曖昧なままでは正しい解釈が困難となり,
工程後半で問題が発生する可能性が高くなる。

📌 评价:○ → ◎


【問2】テストケース設計的重要性

你的理解 ✅

  • テスト目的 = 欠陥発見
  • 与品质(保守性、適応性)挂钩 ------ 思路是对的

严重扣分点 ⚠⚠

  • 问题问的是「テストケース設計が重要な理由」
  • 你写成了「テストの目的」

👉 这是**"答非所问型扣分"**

🔧 最小改动·满分修正版

text 复制代码
テストケースの設計が重要とされる理由は,
ソフトウェア中の欠陥を効率よく発見するためである。
適切なテストケースを設計することで,
様々な条件を網羅的に検証でき,
欠陥の見落としを防ぐことができる。

📌 评价:△ → ◎


【問3】内部品質 vs 外部品質

你的理解 ✅(这题写得很好)

  • 内部品質:用户看不到
  • 外部品質:用户体验、使用感

小扣分点 ⚠

  • 内部品質 必须连到「保守・変更」
  • 外部品質 必须连到「利用者評価」

🔧 最小改动·满分修正版

text 复制代码
内部品質とは,利用者からは直接見えない
ソフトウェアの内部構造に関する品質であり,
保守性や変更容易性に影響を与える。
一方,外部品質とは,
利用者が直接評価できる品質であり,
操作性や性能などが使用体験を通じて現れる。

📌 评价:◎ → ◎(安定)


【問4】リファクタリング

你的理解 ✅

  • 内部品質向上
  • 保守工程が楽になる

立命馆明确要求但你没写的点 ⚠⚠

  • 「外部的挙動を変更しない理由」
  • 没提测试 / 品质保证

🔧 最小改动·满分修正版

text 复制代码
リファクタリングを行う目的は,
ソフトウェアの内部構造を改善し,
内部品質を向上させることである。
外部的挙動を変更しないことで,
既存の機能やテスト結果を維持でき,
保守工程を安全かつ容易に行うことができる。

📌 评价:○ → ◎


6-总结

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

相关推荐
V搜xhliang024636 分钟前
AI智能体的数据安全与合规实践
人工智能·学习·数据分析·自动化·ai编程
无敌的牛1 小时前
redis学习过程
数据库·redis·学习
旅僧3 小时前
Π环境部署(运行 且 无理论讲解)
学习
jushi89993 小时前
Lucas Chess R国际象棋、中国象棋、日本将棋、五子棋训练学习工具游戏软件
学习
自传.4 小时前
尚硅谷 Vibe Coding|第一章 AI 编程基础理论 学习笔记
笔记·学习·尚硅谷·vibe coding
吃好睡好便好5 小时前
改变时间轴的跨度
学习·生活
fox_lht5 小时前
15.3.改进我们之前的输入、输出项目
开发语言·后端·学习·rust
chase。5 小时前
【学习笔记】SimpleVLA-RL:通过强化学习扩展 VLA 训练
笔记·学习
C语言小火车5 小时前
什么时候用智能指针?什么时候用裸指针?
c语言·c++·学习·指针
AOwhisky6 小时前
Redis 学习笔记(第一期):概述、安装配置与核心理论
运维·数据库·redis·笔记·学习·云计算