데이터 정규화의 중요성

PostgreSQL 데이터베이스 만들기

Darryl Reeves

Industry Assistant Professor, New York University

예시 1: 중복 데이터

  • 데이터 중복은 문제가 될 수 있음
CREATE TABLE loan (
    borrower_id INTEGER REFERENCES borrower(id),
    bank_name VARCHAR(50) DEFAULT NULL,
    ...
);
CREATE TABLE bank ( 
    id SERIAL PRIMARY KEY, 
    name VARCHAR(50) DEFAULT NULL, 
    ... 
);
PostgreSQL 데이터베이스 만들기

예시 1: 중복 데이터

CREATE TABLE loan (
    borrower_id INTEGER REFERENCES borrower(id),
    bank_name VARCHAR(50) DEFAULT NULL,
    ...
);
CREATE TABLE bank ( 
    id SERIAL PRIMARY KEY, 
    name VARCHAR(50) DEFAULT NULL, 
    ... 
);
  • 문제 1: 다른 은행/같은 이름
  • 문제 2: 이름 변경
PostgreSQL 데이터베이스 만들기

예시 1: 중복 데이터

CREATE TABLE loan (
    borrower_id INTEGER REFERENCES borrower(id),
    bank_id INTEGER REFERENCES bank(id),
    ...
);
  • 같은 이름의 은행도 고유 id 제공
  • 은행명 변경은 bank 테이블만 갱신
PostgreSQL 데이터베이스 만들기

예시 2: 레코드 통합

applicant

id name
1 Jane Simmmons
2 Rick Demps
3 Pam Jones

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
PostgreSQL 데이터베이스 만들기

예시 2: 레코드 통합

applicant

id name
1 Jane Simmmons
2 Rick Demps
3 Pam Jones

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
4 Pam Jones
PostgreSQL 데이터베이스 만들기

예시 2: 레코드 통합

applicant

id name
1 Jane Simmmons
2 Rick Demps
3 Pam Jones

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
PostgreSQL 데이터베이스 만들기

예시 2: 레코드 통합

applicant

id name
1 Jane Simmmons
2 Rick Demps

borrower

id name
1 Jack Smith
2 Sara Williams
3 Jennifer Valdez
4 Pam Jones
PostgreSQL 데이터베이스 만들기

예시 2: 레코드 통합

CREATE TABLE borrower (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL
);
PostgreSQL 데이터베이스 만들기

예시 2: 레코드 통합

CREATE TABLE borrower (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    approved BOOLEAN DEFAULT NULL
);
  • approvedNULL => applicant
  • approvedtrue => borrower
  • approvedfalse => 거절된 신청
PostgreSQL 데이터베이스 만들기

왜 정규화할까요?

  • 데이터 중복 감소
  • 일관성 향상
  • 구조/관리 개선
PostgreSQL 데이터베이스 만들기

연습해 봅시다!

PostgreSQL 데이터베이스 만들기

Preparing Video For Download...