Kodrill

一般知識

OSS-DB Silver

PostgreSQL の特徴・ライセンス・コミュニティ・バージョンとサポート/関係モデル・SQL の分類・正規化

問題数
17 問
合格ライン
70%
実行して確認済み
3 問
この分野の要点を読む7 章・約 8 分。実行して確かめたコード例と、試験でよくある引っかけをまとめています

ログインなしで試す

無料の 5 問を、1問ごとに正誤と解説を見ながら解けます。解答は保存されません。

5 問を試す

無料登録して学習を記録する

学習履歴・ダッシュボード・ブックマーク・模試モードが使えます。

★ 残り 12 問はプレミアム会員限定です

無料プランでは先頭 5 問まで解けます。プレミアムなら全問題・苦手問題の復習・広告非表示が使えます。
料金プランを見る

問題と解説を見る (無料)

登録しなくても、次の5問は問題文と解説をそのまま読めます。

一般知識の要点

内容の確認日: 2026-10-29

この分野は出題範囲の S1 (一般知識) に当たり、50 問中およそ 8 問 (S1.1 OSS-DB の一般的特徴 4 問・S1.2 リレーショナルデータベースに関する一般知識 4 問) が出題されます。

S1.1 は PostgreSQL そのものの知識 (ライセンス・コミュニティ・バージョンとサポート)、S1.2 は特定の製品によらないデータベースの基礎 (関係モデル・SQL の分類・正規化) です。暗記の比重が大きい分野ですが、数字や用語の取り違えを狙った選択肢が多いので、正確に覚えましょう。

ライセンスとコミュニティ

PostgreSQL は、BSD・MIT と同じ系統の緩やかな PostgreSQL License で配布されています。著作権表示とライセンスの文言を残せば、商用を含めて自由に使用・改変・再配布でき、改変したソースコードを公開する義務もありません。GPL のような「改変したらソースを公開する」条件や、有償の商用版はありません。

開発は PostgreSQL Global Development Group (PGDG) というコミュニティが行っています。世界中の個人と企業の開発者が参加し、特定の 1 社が支配しているわけではありません。開発の議論はメーリングリスト (pgsql-hackers など) で行われ、誰でも無料で参加できます。日本には 日本PostgreSQLユーザ会 (JPUG) があります。

不具合は、公式サイトの報告フォームか pgsql-bugs メーリングリストで報告します。GitHub のリポジトリはミラーなので、Issue や Pull Request は受け付けていません。セキュリティの脆弱性は、公開の場ではなく専用の窓口 (security@postgresql.org) に報告します。

バージョン番号・リリース・サポート

PostgreSQL 10 からは、バージョン番号の 1 つ目の数字がメジャーバージョン、2 つ目がマイナーバージョン です (14.24 なら、メジャー 14 の 24 回目のマイナーリリース)。9.6 以前は先頭の 2 つの数字 (9.6) がメジャーバージョンでした。

・メジャーバージョン: おおむね年に 1 回リリースされ、最初のリリースから 5 年間 サポートされる ・マイナーリリース: 少なくとも 3 か月に 1 回。不具合とセキュリティの修正だけで、新機能やデータの形式の変更はない

マイナーバージョンアップは、サーバーを停止してプログラムを入れ替え、起動し直すだけで済みます。コミュニティは、常に最新のマイナーリリースを使うことを推奨しています。メジャーバージョンアップでは内部の形式が変わることがあるので、pg_dump でのダンプとリストア、pg_upgrade、ロジカルレプリケーションのいずれかで移します。

サーバーのバージョンは SQL で確かめられます。version() は文字列、設定項目の server_version_num は「メジャーバージョン × 10000 + マイナーバージョン」の数値 (14.24 なら 140024) なので、10000 で割るとメジャーバージョンが分かります。

SQL
SELECT current_setting('server_version_num')::integer / 10000;
ターミナル
psql -A -t -P null=NULL -f example.sql
14

PostgreSQL の主な特徴

・マルチプロセス: 親プロセス (postmaster) が接続を受け付けるたびに、その接続専用のバックエンドプロセスを起動する (スレッドではない) ・MVCC (多版型同時実行制御): 更新中の行も更新前の版が読めるので、読み取りと書き込みが互いをブロックしない ・拡張性: 拡張 (extension) を CREATE EXTENSION でデータベースごとに組み込める。データ型・関数・インデックスの種類も追加できる ・標準的な機能: 外部キー・トリガー・ビュー・ストアドプロシージャ・パーティション・レプリケーションなど

関係モデルと SQL の分類

関係モデルでは、表を リレーション、行を タプル、列を 属性、列が取りうる値の集合を 定義域 と呼びます。関係演算のうち、列を取り出すのが 射影、条件に合う行を取り出すのが 選択 です。

SQL は次の 3 つに分けられます。

・DDL (データ定義言語): CREATE・ALTER・DROP など。テーブルやインデックスなどの構造を定義する ・DML (データ操作言語): SELECT・INSERT・UPDATE・DELETE。データを読み書きする ・DCL (データ制御言語): GRANT・REVOKE。権限を管理する

SQL では、二重引用符で囲まない識別子 (テーブル名・列名) は 小文字に変換 されます。二重引用符で囲むと大文字小文字がそのまま残り、以後も二重引用符で参照する必要があります。文字列の値は単一引用符で囲みます。

SQL
CREATE TABLE Item (Id integer, "Name" text);SELECT column_name FROM information_schema.columns WHERE table_name = 'item' ORDER BY ordinal_position;
ターミナル
psql -A -t -P null=NULL -f example.sql
id
Name

正規化

正規化は、データの重複をなくし、更新のときの矛盾 (更新時異常) を防ぐために表を分けることです。

・第 1 正規形: 列の値に繰り返しがない (「電話番号 1・電話番号 2…」のような列の繰り返しは、別の表の行に分ける) ・第 2 正規形: 第 1 正規形で、主キーの一部だけで決まる列 (部分関数従属) がない ・第 3 正規形: 第 2 正規形で、主キー以外の列を経由して決まる列 (推移的関数従属) がない

例えば、主キーが (受注番号, 商品コード) の表に、商品コードだけで決まる商品名があれば、第 2 正規形ではありません。主キーが社員番号の表に、部署コードで決まる部署名があれば、第 3 正規形ではありません。どちらも、従属している列を別の表に分けます。

NULL と三値論理

NULL は「値がない・不明」を表し、NULL と値を比べた結果は真でも偽でもない NULL (不明) になります。WHERE 句は結果が真の行だけを残すので、比較の結果が NULL の行は含まれません。NULL かどうかは IS NULL で調べます。

SQL
CREATE TABLE t (x integer);INSERT INTO t VALUES (1), (NULL), (3);SELECT count(*) FROM t WHERE x <> 1;SELECT count(*) FROM t WHERE x IS NULL;SELECT NULL = NULL, true OR NULL, false AND NULL;
ターミナル
psql -A -t -P null=NULL -f example.sql
1
1
NULL|t|f

NULL = NULL も NULL です。一方、OR は片方が真なら全体が真、AND は片方が偽なら全体が偽と決まるので、NULL を含んでも結果が決まります。

試験でよくある引っかけ

  • PostgreSQL License は GPL ではない

    改変したものを配布しても、ソースコードの公開は求められません。商用版・有償ライセンスもありません。

  • バージョン番号の読み方

    10 以降は 1 つ目の数字がメジャーバージョンです (14.24 のメジャーは 14)。9.6 以前は 9.6 までがメジャーです。

  • サポート期間は 5 年

    各メジャーバージョンは、最初のリリースから 5 年間修正版が出ます。LTS のような特別な版はありません。

  • マイナーアップでダンプは不要

    マイナーバージョンアップはプログラムの入れ替えだけです。pg_dump・pg_upgrade が必要なのはメジャーバージョンアップです。

  • GRANT・REVOKE は DCL

    DDL (CREATE など) や DML (SELECT など) と取り違えないようにします。

  • 第 2 正規形と第 3 正規形

    主キーの一部で決まる列が残っていれば第 2 正規形ではなく、主キー以外の列で決まる列が残っていれば第 3 正規形ではありません。

  • NULL との比較

    x <> 1 や x = NULL では NULL の行は選ばれません。IS NULL・IS DISTINCT FROM を使います。

問題で確認する

この分野の問題を、解説つきで読めます (登録不要)。

出典・参考

コード例は、PostgreSQL 14 で実際に実行して結果を確認しています。