戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

データベーススペシャリスト 2013年 午前207


問題文

SQLにおけるドメインに関する記述のうち、適切なものはどれか。

選択肢

基底表を定義するには、ドメインの定義が必須である。
ドメインの定義にはCREATE文、削除にはDROP文を用いる。(正解)
ドメインの定義は、それを参照する基底表内に複製される。
ドメイン名は、データベースの中で一意である必要はない。

🔒 解説は解答すると表示されます

ドメイン定義と管理【午前2解説】

正解の理由

SQLの「ドメイン」は列で使う再利用可能なデータ型+制約の定義で、作成・削除には標準のDDL文を用います。従って、ドメインの定義にCREATE文、削除にDROP文を使う選択肢が正しいため、選択肢が正解です。
付記すると、ドメイン名の一意性は「スキーマ(名前空間)単位」で規定される点が重要です。つまり同一スキーマ内では名前が重複してはいけませんが、異なるスキーマ間では同名を許すDBMSもあります(DBMSごとに実装差があります)。

解法ステップ

  1. 「ドメイン」が何を指すかを確認する(ユーザ定義型+制約の集合)。
  2. ドメインの作成・削除に対応するSQL文が何かを思い出す(CREATE DOMAIN / DROP DOMAIN)。
  3. 各選択肢と照らし合わせ、ドメインの定義方法、格納の有無、名前のスコープについて正誤を判定する。

選択肢別の誤答解説

  • ア: 基底表(テーブル)を定義するのにドメイン定義は必須ではありません。列には組込み型(INT, VARCHARなど)を直接指定でき、ドメインはあくまで任意の再利用手段です。よって誤り。
  • : ドメインの作成はCREATE DOMAIN、削除はDROP DOMAIN(またはDBMS固有の文)で行うのが標準的であり正しい。例:
    CREATE DOMAIN price AS NUMERIC(10,2) CHECK (VALUE >= 0);
    DROP DOMAIN price;
    
    (DBMSによりシンタックス差やサポート状況があります)
  • ウ: ドメイン定義が「基底表内に複製される」というのは誤り。テーブルの列はドメインを参照して型と制約を適用する形で保持され、定義が物理的に複製されるわけではありません。したがって、ドメインを変更すれば(DBMSの方針により)参照列に影響することがありますが、実装差に注意が必要です。
  • エ: 「ドメイン名はデータベース内で一意である必要はない」との記述は文脈によって誤解を招きます。正しくは「スキーマ(名前空間)ごとに一意である必要がある」が標準的な考え方です。したがって選択肢の断定は不正確で、試験上は誤りとなります。

よくある誤解

  • ドメインは必ずテーブルの内部にコピーされる:実際には参照される形で管理され、定義の更新が参照先にどう影響するかはDBMS次第です。
  • ドメイン名はデータベース全体でユニーク:標準ではスキーマ単位の名前空間で管理されるため、スキーマを跨いで同じ名前を使える場合があります。
  • すべてのDBMSがCREATE DOMAINをサポートする:MySQLなど一部DBMSはCREATE DOMAINを直接サポートしていないため、DBMS固有の代替機能(ユーザー定義型など)を使います。

補足コラム

  • ALTER DOMAIN: SQL標準ではドメインに対する制約追加などの操作をサポートしますが、実際の挙動はDBMS依存です。たとえば、あるドメインに新たなCHECKを追加した場合、既存列の既存データが新制約に違反するとALTERが失敗することがあります。運用では事前にデータ検査や更新を行う必要があります。
  • DBMS差異の実例:
    • PostgreSQL: CREATE DOMAIN をサポート。ALTER/DROP も利用可。
    • MySQL: 古くは CREATE DOMAIN をサポートしていない(代わりに列定義やユーザー定義型の利用)。
    • SQL Server: CREATE TYPE を使ったエイリアス型やユーザー定義型で類似機能を提供する。
    • Oracle: 標準的な CREATE DOMAIN はないが、ユーザー定義型や制約を駆使して同等の設計を行う。

FAQ

Q. ドメインを変更すると既存の列に自動適用されますか?
A. 原則として列はドメイン参照を保持するため、ドメイン定義の一部変更は参照列に影響しますが、DBMSによっては既存データチェックが行われたり、制約追加が拒否されたりします。事前検証が必要です。
Q. 小規模システムでもドメインを使う利点は?
A. 型と共通の制約を再利用できるため、設計の一貫性・保守性が向上します。特に同じビジネスルールを複数列で共有する場合に有効です。
Q. CREATE DOMAIN が使えないDBMSではどうする?
A. DBMS固有のユーザー定義型(CREATE TYPEなど)や、テーブル設計で列定義を統一、あるいはチェック制約をテンプレート化して運用する方法があります。

関連キーワード: SQL、CREATE DOMAIN、DROP DOMAIN、スキーマ、ユーザ定義型、チェック制約、DBMS差異
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

データベーススペシャリスト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について