Navicatブログ

Navicat 17 で PostgreSQL のデータ型を拡張する - パート 1 27 Dec, 2024 by Robert Gravelle

Domains

データを適切な形式で保存することで、データの整合性が確保され、エラーが防止され、パフォーマンスが最適化され、検証ルールの適用と効率的なデータ管理によってシステム間で一貫性が維持されます。これらの理由から、PostgreSQL のような一流のリレーショナルデータベースは、さまざまなデータ型を提供しています。さらに、PostgreSQL では、「CREATE DOMAIN」および「CREATE TYPE」ステートメントを使用してカスタムデータ型を作成できるため、開発者はアプリケーション固有のデータ検証、整合性、および一貫性を強化するためにデータ型を拡張できます。今日のブログでは、Navicat Premium 17 を使用して、無料の DVD レンタルデータベースのカスタムドメインを作成する方法を学びます。パート 2 では、型について説明します。

CREATE DOMAIN と CREATE TYPE の簡単な比較

CREATE DOMAIN ステートメントと CREATE TYPE ステートメントはどちらもユーザー定義データ型を作成するために使用できますが、認識しておくべき重要な違いがいくつかあります。

  • CREATE DOMAIN は、NOT NULL や CHECK などの制約を持つユーザー定義データ型を作成します。
  • CREATE TYPE は、ストアドプロシージャで戻り値のデータ型として使用される複合型を作成します。

Eメールドメインの作成

ドメインは、NULL 値を防ぎ、特定のフィールドタイプの空白をトリムする標準的な制約を作成するなど、複数のテーブルにわたって再利用可能な検証ルールを定義できるようにすることで、制約管理を一元化します。検証チェック付きでメールアドレスのドメインを作成する例を次に示します。

CREATE DOMAIN email AS VARCHAR(255)
CHECK (
  VALUE ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$'
);

-- Use in a table definition
CREATE TABLE customer_contacts (
  customer_id INT,
  contact_email email
);

Navicat Premium 17Navicat for PostgreSQL 17 はどちらも、正確な構文をすべて知らなくてもドメインと型を生成するための GUI ベースのツールを提供しています。どちらもメインツールバーの「その他」にあります。(以下の両方のメニュー項目が赤色で強調表示されています):

others_context_menu (45K)

ドメインツールには、[一般]、[チェック]、[コメント]、[SQLプレビュー] の4つのタブがあります。

一般属性

すべてのドメインは、型に基づいています。この場合は VARCHAR です。[基になる型のカテゴリ] で [基本型] を選択すると、2つの [基になる型] ドロップダウンから [pg_catalog] と [varchar] を選択できます。また、VARCHAR の [長さ] が 255 であることを確認する必要があります。以下は、そのすべての情報が提供された [一般] タブです。

email_domain_general_tab (39K)

チェック

次のタブでは、誰かが私たちの型に値を割り当てようとしたときに実行する1つ以上のチェックを定義できます。私たちのチェックは、RegEx(正規表現)に対して値をテストします。

email_domain_checks_tab (21K)

SQLプレビュー

この時点で、生成された CREATE DOMAIN ステートメントを実行するドメインの保存に進むか、[SQLプレビュー] タブをクリックして保存前にステートメントを表示することができます。

email_domain_preview_and_save_as_dialog (38K)

ドメイン定義をまだ保存していないため、ドメイン名は「Untitled」になっています。これは正常です。

テーブルでemailドメインを使用する

「email」ドメインが作成されたことを確認する最良の方法は、テーブルで試してみることです。「dvdrental」データベースの「staff」テーブルには、emailフィールドが含まれています。現在、検証チェックなしでVARCHARとして値を格納しています。テーブルデザイナーの[型]ドロップダウンから[(ドメイン)]オプションを選択し、[オブジェクト型]に「public」と「email」を選択することで、型をドメインに変更できます。

setting_column_to_email_domain (92K)

テーブルを保存すると、有効なメールアドレスではない値を変更(または追加)しようとすると、制約違反が発生します。

failed_check (63K)

まとめ

無料のdvdrentalデータベースのカスタムドメインを作成することにより、再利用可能な検証ルールを定義できるようにすることで、ドメインが制約管理を一元化する方法を確認しました。パート2では、Navicat Premium 17の型ツールを使用して独自の型を作成します。

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