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