소개
이번 챌린지에서는 PostgreSQL 에서 직원의 상세 연락처를 저장하기 위한 employee_contacts 테이블을 설계하고 생성합니다. 적절한 데이터 타입과 제약 조건을 설정하여 데이터의 무결성을 확보하는 것이 핵심입니다. 여러분은 employees 테이블이 이미 준비된 환경에서 실습을 수행하게 됩니다.
주요 작업은 psql 도구를 사용하여 postgres 사용자로 데이터베이스에 접속한 뒤, SQL 명령어를 직접 실행하여 employee_contacts 테이블을 만드는 것입니다. 이 테이블은 contact_id(자동 증가 기본 키), employee_id(employees 테이블을 참조하는 외래 키), phone_number(중복 불가), email(필수 입력) 컬럼을 포함해야 합니다.
직원 테이블 생성
데이터 무결성을 보장할 수 있는 적절한 데이터 타입과 제약 조건을 사용하여 직원 연락처 정보를 저장할 테이블을 설계하세요.
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_id(employees테이블을 참조하는 외래 키),phone_number(고유값),email(NULL 불가) 컬럼을 포함해야 합니다. employee_id컬럼이employees테이블의employee_id컬럼을 올바르게 참조하도록 설정하세요.
요구 사항
contact_id컬럼은 자동으로 값이 증가하는 기본 키여야 합니다.phone_number컬럼은 중복된 값을 허용하지 않아야 합니다.email컬럼은NULL값을 허용하지 않아야 합니다.employee_id컬럼은employees테이블을 참조하는 외래 키여야 합니다.- 모든 SQL 명령어는
psql을 통해 실행해야 합니다.
예시
employees 테이블과 employee_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_id와employees테이블의employee_id사이에 관계를 형성하려면FOREIGN KEY제약 조건을 사용합니다.- SQL 명령어를 실행하기 전에
sudo -u postgres psql명령어로 PostgreSQL 데이터베이스에 접속하는 것을 잊지 마세요.
요약
이번 챌린지에서는 지정된 환경 내에서 employee_contacts라는 PostgreSQL 테이블을 성공적으로 생성했습니다. 이 과정에서 contact_id(자동 증가 기본 키), employee_id(외래 키), phone_number(고유값), email(필수값) 컬럼을 포함하는 테이블 구조를 설계했습니다.
psql을 사용하여 데이터베이스에 접속하고 필요한 SQL 명령어를 실행함으로써, 테이블 간의 올바른 관계를 설정하고 데이터 무결성을 보장하는 제약 조건을 적용하는 방법을 익혔습니다.


