情報処理試験を勉強していると、データベース分野で「データディクショナリ」という用語に出くわし、「データベースの中にある辞書?何を管理しているの?」と疑問に思うことがあります。
ここでは、その正体と試験での狙われ方を整理します。
対象試験と出題頻度
データディクショナリは、基本情報技術者・応用情報技術者で出題されるテーマです。
DBMSが内部で管理するメタデータの保管庫として、「何が格納されるか」を正確に区別できるかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★☆☆☆
ランクC(応用)余裕があれば覚える
用語の定義
データディクショナリ(Data Dictionary)とは、一言で言うと
「データベースに格納されているデータの定義情報(メタデータ)を一元管理する仕組み」
のことです。
イメージとしては、「図書館の蔵書目録」です。
図書館には大量の本がありますが、蔵書目録を見れば「どんなタイトルの本が・どの棚に・どんなジャンルで配置されているか」がわかります。
本の中身そのもの(実データ)は書かれていませんが、本を探すための情報はすべて揃っています。
データディクショナリも同じで、テーブルの中身(実際の行データ)ではなく、「テーブル名は何か」「どんな列があるか」「データ型や制約は何か」といった”データに関するデータ”を管理する場所です。
📊 データディクショナリの基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Data Dictionary(DD) |
| 別名 | システムカタログ(ほぼ同義で使われることが多い) |
| 管理対象 | スキーマ定義、テーブル・ビュー・インデックスの定義、制約情報、ユーザー権限など |
| 管理主体 | DBMS(RDBMSが自動的に維持・更新する) |
解説
データベースは、ただデータを溜め込むだけでは機能しません。
「このテーブルにはどんな列があるのか」「この列のデータ型は数値なのか文字列なのか」「外部キーでどのテーブルと紐づいているのか」といった構造情報を、DBMS自身が常に把握しておく必要があります。
この構造情報(メタデータ)をまとめて保管しているのがデータディクショナリです。
格納される情報
データディクショナリには、以下のような情報が格納されます。ここだけは確実に押さえてください。
| 格納される情報 | 具体例 |
|---|---|
| スキーマの定義情報 | 概念スキーマ・外部スキーマ・内部スキーマの定義とそれらの変換定義 |
| オブジェクトの定義 | テーブル、ビュー、インデックスなどの名前・構造 |
| 制約情報 | 主キー、外部キー、NOT NULL、CHECK制約など |
| ユーザー・権限情報 | どのユーザーがどのテーブルに対してSELECT/INSERT等の権限を持つか |
逆に、「表の実データ(行の中身)」や「インデックスの実体データ」は格納されません。
データディクショナリはあくまで”データについてのデータ”を管理する場所です。
図解:データディクショナリの位置づけ
RDBMSの内部構造とデータディクショナリの関係
RDBMS
📖 データディクショナリ
・スキーマ定義
・テーブル/ビュー定義
・制約情報
・ユーザー権限
= メタデータ(定義情報)
💾 実データ領域
・テーブルの行データ
・インデックスの実体
・LOBデータ など
= ユーザーが格納した実データ
▲ データディクショナリと実データ領域は明確に分離されている。DDLを実行するとデータディクショナリが更新される。
DDLとの関係
DDL(CREATE TABLE、ALTER TABLE、DROP TABLEなど)を実行すると、RDBMSはデータディクショナリの内容を自動的に追加・変更・削除します。
つまり、開発者がテーブルを新しく作るたびに、データディクショナリには「このテーブルはこういう列構成で、こういう制約がある」という情報が書き込まれます。
DDL実行時のデータディクショナリ更新フロー
開発者が CREATE TABLE を実行
テーブルの名前・列・データ型・制約をSQL文で指示する
RDBMS が構文を解析
SQL文に文法エラーや矛盾がないかチェックする
データディクショナリにテーブル定義を登録
テーブル名・列名・データ型・制約などのメタデータを書き込む
実データ領域に格納領域を確保
INSERTで行データを投入できるよう、ディスク上に空き領域を割り当てる
※ SELECT / INSERT 等のDMLでは実データ領域が操作対象となり、データディクショナリは参照のみ
SQL標準での参照方法
SQL標準(ISO/IEC 9075)では、データディクショナリの内容を参照するためにINFORMATION_SCHEMAというビュー群が定義されています。
たとえばINFORMATION_SCHEMA.TABLESを参照すると、データベース内の全テーブルの一覧を取得できます。
OracleではDBA_TABLES、USER_TABLESといった独自のデータディクショナリビューが用意されています。
— SQL標準:テーブル一覧を取得する例
SELECT TABLE_NAME, TABLE_TYPE
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = ‘my_database’;
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 データディクショナリの核心を3行で
・RDBMSがスキーマ定義・オブジェクト定義・制約・権限などのメタデータを格納する保管庫
・実データ(行の中身やインデックスの実体)は格納されない
・DDL実行時に自動更新され、SQL標準ではINFORMATION_SCHEMAで参照可能
試験ではこう出る!
データディクショナリは、FE・APの午前問題で繰り返し出題されています。出題パターンは大きく2つです。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE H23特別 午前 問35 |
「DBMSが管理するデータ,利用者,プログラムに関する情報の集合体」を選ばせる問題。 | ・正解は「データディクショナリ」 ・データウェアハウス、データマート、データマイニングがひっかけ |
| AP H30春 午前 問29 |
「RDBMSのデータディクショナリに格納されるもの」を選ばせる問題。 | ・正解は「スキーマの定義情報」 ・OSのファイル定義、表の実データ、インデックスの内容がひっかけ |
| AP H26秋 午前 問28 |
分散データベースにおけるデータディクショナリ/ディレクトリの配置方式を選ばせる問題。 | ・集中管理方式と分散管理方式の特性の区別 ・「集中管理のサイト障害=システム全体に影響」が正解 |
| DB H22春 午前II 問20 |
AP H30春 問29と同一構成の問題(流用)。 | ・FE/APとDBスペシャリストで同じ問題が流用される典型例 |
📝 IPA試験での出題パターン
パターン1:「データディクショナリの説明を選べ」
データウェアハウス・データマート・データマイニングなど、”データ○○”という紛らわしい用語と並べて正しいものを選ばせる形式。キーワードは「メタデータ」「定義情報」「スキーマ」。実データやインデックスの中身を選ばないことがポイント。
パターン2:「格納されるものを選べ」
4つの選択肢から「データディクショナリに格納されるもの」を問う形式。「スキーマの定義情報」が正解。「OSが管理するファイル情報」「表の行データ」「インデックスの内容」は格納対象外なので除外する。
試験ではここまででOKです。INFORMATION_SCHEMAの具体的なビュー名やOracle固有のディクショナリビュー名まで問われることはないので、深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. 関係データベース管理システム(RDBMS)のデータディクショナリに格納されるものとして、最も適切なものはどれでしょうか?
- A. スキーマの定義情報やテーブル・ビューの構造定義、ユーザー権限などのメタデータ。
- B. 各テーブルに格納されている行データ(レコード)そのもの。
- C. 大量の業務データを時系列で蓄積し、意思決定を支援するための統合データ。
正解と解説を見る
正解:A
解説:
データディクショナリはRDBMSが内部で維持する定義情報の保管庫であり、スキーマ定義、オブジェクト定義、制約情報、ユーザー権限などが格納されます。AP H30春 午前問29でも「スキーマの定義情報」が正解として出題されています。
選択肢Bは表の実データの説明です。行データはデータディクショナリではなく、実データ領域に格納されます。選択肢Cはデータウェアハウスの説明です。FE H23特別 午前問35でデータディクショナリのひっかけ選択肢として登場した用語であり、混同しないよう注意が必要です。
よくある質問(FAQ)
Q. データディクショナリとシステムカタログは別物ですか?
IPA試験の範囲では、ほぼ同義として扱って問題ありません。厳密には、データディクショナリは「データの定義情報を管理する仕組み」という広い概念で、システムカタログは「RDBMSが内部的に保持するその実装形態」です。OracleではDBA_/ALL_/USER_系のビュー、PostgreSQLではpg_catalog、SQL標準ではINFORMATION_SCHEMAがシステムカタログに該当します。
Q. データディクショナリとデータカタログはどう違いますか?
データディクショナリは特定のデータベース内のテーブル定義・制約・権限などを管理するものです。一方、データカタログは組織全体のデータ資産(複数のデータベース、ファイル、APIなど)の所在・意味・品質・オーナーシップを横断的に管理する仕組みです。データカタログはAlationやCollibraなどのツールで実現されることが多く、近年のデータガバナンス文脈で注目されています。IPA試験では出題対象外ですが、実務では区別が必要です。
Q. データディクショナリの内容をユーザーが直接書き換えることはできますか?
原則としてできません。データディクショナリはRDBMSが自動管理する読取り専用の領域です。テーブル定義を変更したければALTER TABLEなどのDDL文を通じて行い、RDBMSがデータディクショナリを自動更新します。直接UPDATE文で書き換えるような操作はサポートされておらず、仮に可能な製品でも破損リスクがあるため禁忌行為とされています。
Q. 「データディクショナリ/ディレクトリ(DD/D)」のディレクトリとは何ですか?
分散データベースの文脈で使われる表現です。ディレクトリは「どのデータがどのサイト(ノード)に存在するか」という所在情報を管理する部分を指します。AP H26秋 午前問28では、このDD/Dの集中管理方式と分散管理方式の特性の違いが出題されました。単独のRDBMSではデータディクショナリだけで十分ですが、複数拠点にデータベースが分かれている場合は、所在を把握するディレクトリ機能も必要になります。