객체-데이터 매핑 개선하기
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 데이터베이스 만들기
연습 안내
id(기본 키),name(최대 길이 50),email(최대 길이 50) 컬럼을 갖는contact테이블을 생성하세요.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);