PostgreSQL での従業員連絡先テーブルの作成

PostgreSQLBeginner
オンラインで実践に進む

はじめに

このチャレンジでは、PostgreSQL で従業員の連絡先詳細を保存するための employee_contacts テーブルを設計・作成し、適切なデータ型と制約を通じてデータの整合性を確保します。すでに employees テーブルが存在する構成済みの環境で作業を進めます。

あなたのタスクは、psql を使用して postgres ユーザーとして PostgreSQL データベースに接続し、SQL コマンドを直接実行して employee_contacts テーブルを作成することです。このテーブルには、contact_id(主キー、自動インクリメント)、employee_idemployees テーブルを参照する外部キー)、phone_number(一意)、および email(NOT NULL)の各カラムを含める必要があります。

従業員テーブルの作成

適切なデータ型と制約を使用してデータの整合性を確保しながら、従業員の連絡先詳細を保存するためのテーブルを設計してください。

employees テーブルはあらかじめ作成されています。もし確認できない場合は、以下のコマンドを使用して作成できます。

CREATE TABLE employees (
    employee_id SERIAL PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL
);

タスク

  • PostgreSQL に employee_contacts という名前のテーブルを作成します。このテーブルには、contact_id(主キー)、employee_idemployees テーブルを参照する外部キー)、phone_number(一意)、および email(NOT NULL)のカラムを含めてください。
  • employee_id カラムが、employees テーブルの employee_id カラムを正しく参照していることを確認してください。

要件

  1. contact_id カラムは、自動インクリメントされる主キー(Primary Key)であること。
  2. phone_number カラムは、一意(Unique)であること。
  3. email カラムは、NULL 値を許可しない(Not Null)こと。
  4. employee_id カラムは、employees テーブルを参照する外部キー(Foreign Key)であること。
  5. psql を使用して SQL コマンドを実行すること。

employees テーブルと employee_contacts テーブルは、以下のような構造になります。

employees テーブルと contacts テーブルの構造
                                          Table "public.employees"
   Column    |         Type          | Collation | Nullable |                    Default
-------------+-----------------------+-----------+----------+------------------------------------------------
 employee_id | integer               |           | not null | nextval('employees_employee_id_seq'::regclass)
 first_name  | character varying(50) |           |          |
 last_name   | character varying(50) |           |          |
Indexes:
    "employees_pkey" PRIMARY KEY, btree (employee_id)
Referenced by:
    TABLE "employee_contacts" CONSTRAINT "employee_contacts_employee_id_fkey" FOREIGN KEY (employee_id) REFERENCES employees(employee_id)
                                      Table "public.employee_contacts"
     Column     |          Type          | Collation | Nullable |                     Default
----------------+------------------------+-----------+----------+--------------------------------------------------
 contact_id     | integer                |           | not null | nextval('employee_contacts_contact_id_seq'::regclass)
 employee_id    | integer                |           |          |
 phone_number   | character varying(20)  |           |          |
 email          | character varying(100) |           | not null |
Indexes:
    "employee_contacts_pkey" PRIMARY KEY, btree (contact_id)
    "employee_contacts_phone_number_key" UNIQUE CONSTRAINT, btree (phone_number)
Foreign-key constraints:
    "employee_contacts_employee_id_fkey" FOREIGN KEY (employee_id) REFERENCES employees(employee_id)

ヒント

  • テーブルの作成には CREATE TABLE 文を使用します。
  • contact_id カラムに一意の整数値を自動生成させるには、SERIAL データ型を使用します。
  • 主キーを定義するには PRIMARY KEY 制約を使用します。
  • phone_number カラムに重複した値が入らないようにするには、UNIQUE 制約を使用します。
  • email カラムに空の値を許可しないようにするには、NOT NULL 制約を使用します。
  • employee_contacts テーブルの employee_idemployees テーブルの employee_id の間にリレーションシップを作成するには、FOREIGN KEY 制約を使用します。
  • SQL コマンドを実行する前に、sudo -u postgres psql を使用して PostgreSQL データベースに接続することを忘れないでください。
✨ 解答を確認して練習

まとめ

このチャレンジでは、指定された環境内で employee_contacts という名前の PostgreSQL テーブルを作成しました。これには、contact_id(主キー、自動インクリメント)、employee_idemployees テーブルを参照する外部キー)、phone_number(一意)、および email(NOT NULL)のカラムを持つテーブル構造の設計が含まれます。

解決には、psql を使用して postgres ユーザーとして PostgreSQL データベースに接続し、必要な SQL コマンドを直接実行してテーブルとその制約を定義し、データの整合性とテーブル間の適切なリレーションシップを確保することが求められました。