상세 컨텐츠

본문 제목

3-3. 데이터베이스 생성하기

카테고리 없음

by 본투비곰손 2023. 8. 11. 22:16

본문

728x90

constraint 이름 명시하기

  • 이름을 붙이면 어떤 constraint을 위반했는지 쉽게 파악할 수 있다.
  • constraint를 삭제하고 싶을 때 해당 이름으로 삭제 가능

PROJECT 정의 하기

create table PROJECT(
    -> id       INT     PRIMARY KEY,
    -> name VARCHAR(20) NOT NULL        UNIQUE,
    -> leader_id        INT,
    -> start_date       DATE,
    -> end_date         DATE,
    -> FOREIGN KEY (leader_id) references EMPLOYEE(id)
    ->  on delete SET NULL on update CASCADE,
    -> CHECK (start_date < end_date)
    -> );

WORK_ON 정의하기

create table WORKS_ON(
empl_id INT,
proj_id INT,
PRIMARY KEY (empl_id, proj_id),
FOREIGN KEY (empl_id) references EMPLOYEE(id)
  on delete CASCADE on update CASCADE
FOREIGN KEY (proj_id) references PROJECT(id)
  on delete CASCADE on update CASCADE
);

table 만들어진 이후 schema변경하기 (ALTER)

ALTER TABLE department ADD FOREIGN KEY (leader_id)// leader_id에 대한 FOREIGN KEY 추가
    -> REFERENCES employee(id)
    -> on update CASCADE
    -> on delete SET NULL;

ALTER TABLE

  • table의 schema를 변경하고 싶을 때 사용
  • 이미 서비스 중인 table의 schema를 변경하는 것이라면 서비스의 백엔드에 영향이 없을지 검토한 후 변경하는 것이 필요하다. 중요!!!

DROP TABLE

  • table를 삭제할때 사용
  • DROP TABLE 테이블 이름

데이터 베이스를 정의할 때 중요한점

만들려는 서비스의 스펙과 데이터 일관성, 편의성, 확장성 등을 종합적으로 고려하여 DB 스키마를 적절하게 정의하는 것이 중요하다.

728x90