始める無料で始める

オブジェクトとデータの対応を改善する

Small Business Development Center の client テーブルは、クライアントの連絡担当者の情報を含めずに定義されていました。データベースチームの当初の考えは、contact_namecontact_email 列を client テーブルに追加するだけ、というものでした。しかし、適切なデータ設計の観点から、将来的に連絡担当者が複数のテーブルから参照される可能性があるため、この案には反対しました。本演習では、clientcontact オブジェクトを適切に分離できるよう、クライアント情報と連絡担当者情報のテーブル構造を定義します。

以前の client テーブルの定義を思い出してください。

CREATE TABLE client (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    site_url VARCHAR(50),
    num_employees SMALLINT,
    num_customers INTEGER
);

この演習はコースの一部です

PostgreSQL データベースの作成

コースを見る

演習の手順

  • contact テーブルを作成し、列は id(主キー)、name(最大長 50)、email(最大長 50)とします。
  • client テーブルに contact_id 列を追加し、外部キーとして設定してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

-- Create the contact table
___ ___ ___ (
  	-- Define the id primary key column
	___ SERIAL ___ ___,
  	-- Define the name column
  	___ ___(50) NOT NULL,
    -- Define the email column
  	___ VARCHAR(___) NOT NULL
);

-- Add contact_id to the client table
ALTER TABLE ___ ADD ___ INTEGER NOT NULL;

-- Add a FOREIGN KEY constraint to the client table
ALTER TABLE ___ ADD CONSTRAINT fk_c_id FOREIGN KEY (___) REFERENCES ___(id);
コードを編集して実行