2025-4I データベース工学 第13回 講義資料

2026年02月19日 (木) 3-4時限

1 課題2 と EX課題

課題2を未提出の人は、早急に提出ください。採点後は、修正版の再提出や追提出があっても原則として再評価はしませんが、Teams で点数がフィードバックされるまでは、(URLに変更がない範囲で) 加筆・修正等が可能です。実際の採点は、早ければ 2月24日 (火) から開始予定です。

1.1 最終チェック

2 成績評価

総合成績(年度末の最終成績)は、シラバス記載のように「試験45%、小テスト35%、課題20%の割合で総合して評価」します。

3 「問題1」の解説・補足

3.1 (04) と (05)

ER図の文脈において「多重度」は、英語で何と表現されるか。英語もしくはカタカタで答えよ。

ER図の文脈において「任意性」は、英語で何と表現されるか。英語もしくはカタカタで答えよ。

問題4の (44) の問題文のなかに答え (=カーディナリティ、オプショナリティ) が書かれています。

3.2 (07)

PostgreSQLにおいて、タイムゾーン情報を含めた日時を保持するために最も適したデータ型を答えよ。

TIMESTAMPZ という誤答が (中間試験に引き続き) 目立ちました。TIMESTAMPTZ が正しいです。

4 「問題3」の解説・補足

4.1 (21)

UNIQUE 制約を指定しているカラムで、NULL が複数行に存在しても一意性違反にはならない。

👉 ⭕ 正しい

4.2 (22)

NOT NULL 制約を指定していないカラムのデフォルト値は、自動的に NULL となる。

👉 ⭕ 正しい

4.3 (23)

ageカラムが、age INTEGER CHECK (age >= 0) のように定義されるとき、このカラムに NULL を挿入することはできない。

👉 ❌ 誤り。値が null のとき、age >= 0UNKNOWN と評価されます。そして、評価結果が UNKNOWN のとき、「CHECK制約には違反していない」と判断されます。

4.4 (24)

内部結合では、結合条件を評価して FALSE とならなかった行のみが結果セットに残る。

👉 ❌ 誤り。評価結果が FALSE または UNKNOWN (NULL) ではない行のみが結果セットに含まれます。言い換えれば、評価結果が TRUE となる行のみが結果セットに含まれます。

4.5 (25)

CHECK制約においては、条件の評価結果が FALSE もしくは UNKNOWN となるときに制約違反となる。

👉 ❌ 誤り。(23) とも関連。チェック制約が満たされないと判断されるのは、評価結果が FALSE の場合のみです。

4.6 (26)

標準SQLにおいて table_1 OUTER JOIN table_2 と記述した場合、構文エラーとなる。

👉 ⭕ 正しいLEFT JOINLEFT OUTER JOIN はよいが、OUTER JOIN は構文エラーとなります。

4.7 (27)

2つのテーブルのクロス結合においては、結合順を入れ替えても、結果セットの正味の内容 (集合としての行) は変化しない。

👉 ⭕ 正しい

4.8 (28)

外部結合と等価な処理は、内部結合とWHERE句の組み合わせで記述することもできる。

👉 ❌ 誤り。内部結合では、WHERE句と組み合わせても、片方のテーブルにしか存在しない行を結果に含めることはできない。

4.9 (29)

PostgreSQLにおいてNUMERIC(n, m) とDECIMAL(n, m) は同義語で内部実装も同じとなっている。

👉 ⭕ 正しい

4.10 (30)

CHECK(age < 20)CHECK(age > 80) という2つのチェック制約の列挙とCHECK(age < 20 OR age > 80) は、論理的に等価である。

👉 誤り。複数のCHECK制約を列挙した場合、それらはAND条件で結合されます。

5 「問題4」の解説・補足

5.1 (32)

id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
id INTEGER GENERATED ALWAYS AS IDENTITY (
    START
    WITH
      1
) PRIMARY KEY, 
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

5.2 (33)

purchased_at TIMESTAMP NOT NULL DEFAULT LOCALTIMESTAMP(0)
purchased_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(0)
purchased_at TIMESTAMP DEFAULT DATE_TRUNC('second', CURRENT_TIMESTAMP) NOT NULL

6 授業評価アンケート

本科目の達成目標は、以下のようになります。

  1. データベース管理システムの基本概念と利点を説明できる。
  2. 主要なデータベースモデル(リレーショナル/ドキュメント指向など)の特性を理解し、適切な選択ができる。
  3. 現実世界の要件を分析し、概念データモデル(ER図など)に変換できる。
  4. リレーショナルデータベースの論理設計(正規化など)ができる。
  5. SQLを用いてリレーショナルデータベースに対する基本的な操作とクエリを実行できる。