Navicatブログ

PostgreSQLの様々な制約タイプを調べる 2024年5月3日 Robert Gravelle

PostgreSQLの重要な機能の1つは、データに様々な制約を適用して、データの整合性と信頼性を確保する機能です。今日のブログ記事では、PostgreSQLの様々な制約タイプの概要を示し、無料の "dvdrental"サンプルデータベース の例を使用して、その使用法を調べます。

1. チェック制約:

チェック制約を使用すると、データを挿入または更新する時に列に対して満たす必要がある条件を指定できます。これにより、有効なデータのみがデータベースに保存されます。例えば、"customers"テーブルがあり、顧客の年齢が18歳以上であることを確実にしたい場合は、次のようなチェック制約を追加できます:

ALTER TABLE customers
ADD CONSTRAINT check_age CHECK (age >= 18);
    

2. NOT NULL制約:

NOT NULL制約は、列にNULL値を含められないようにします。例えば、"customers"テーブルで、全ての顧客が有効な電子メールアドレスを持っていることを確実にしたい場合は、次のように電子メール列にNOT NULL制約を適用できます:

ALTER TABLE customers
ALTER COLUMN email SET NOT NULL;
    

3. 一意制約:

一意制約は、列の値または列のグループの値がテーブル内の全ての行にわたって一意であることを保証します。これは、ユーザー名や電子メールアドレスなどのフィールドで重複を避けるためによく使用されます。例えば、"customers"テーブルで、各顧客が一意の電子メールアドレスを持っていることを確実にしたい場合は、次のように一意制約を追加できます:

ALTER TABLE customers
ADD CONSTRAINT unique_email UNIQUE (email);
    

4. プライマリキー:

プライマリキーは、一意制約とNOT NULL制約の組み合わせです。プライマリキーは、テーブル内の各レコードを一意に識別し、データの整合性を保証します。"customers"テーブルには、プライマリキーとして機能する"customer_id"という列がある場合があります:

ALTER TABLE customers
ADD CONSTRAINT pk_customer_id PRIMARY KEY (customer_id);
    

5. 外部キー:

外部キーは、参照整合性を適用することで2つのテーブル間の関係を確立します。外部キーは、1つのテーブルの列の値が別のテーブルの列の値と一致することを保証します。例えば、“rental”テーブルで、全てのレンタルレコードが有効な顧客を参照していることを確実にしたい場合は、次のように外部キー制約を追加できます:

ALTER TABLE rental
ADD CONSTRAINT fk_customer_id
FOREIGN KEY (customer_id)
REFERENCES customers(customer_id);
    

6. 排他制約:

排他制約は、テーブル内の2つの行が指定された述語を満たさないことを保証します。これにより、単純な一意制約やチェック制約を超えたカスタム制約を定義できます。例えば、"bookings"テーブルで、同じ部屋の2つの予約が時間的に重複しないことを確実にしたい場合があります:

ALTER TABLE bookings
ADD CONSTRAINT exclude_overlapping_bookings
EXCLUDE USING GIST (room_id WITH =, booking_range WITH &&);
    

Navicatの制約

Navicat for PostgreSQL 16 は、PostgreSQLの制約の作成と管理に使いやすいグラフィカルなテーブルデザイナーを提供します:

Screenshot_Navicat_16_PostgreSQL_Windows_02_ObjectDesign.png

プライマリキー制約は、キー列をクリックして1つ以上のフィールドにキーアイコンを追加すると作成されます。その他の制約は、関連するタブにあります。

まとめ

PostgreSQLは、データの整合性を維持し、ビジネスルールを適用するために、様々な種類の制約を提供します。これらの制約を理解することと効果的に使用する方法は、堅牢で信頼性の高いデータベーススキーマを設計するために不可欠です。

PostgreSQLデータベース開発用の使いやすいグラフィカルツールをお探しですか?Navicat 16 For PostgreSQLが役に立ちます。 こちら をクリックして、全ての機能が使えるアプリケーションをダウンロードし、14日間の無料トライアルをお試しください。

ブログのアーカイブ
シェア