[RDBMS] Database Design

Updated:

  • Normalization
  • Relationships
  • Constraints

Normalization (정규화)

  • 데이터베이스의 데이터를 효율적으로 구조화하는 프로세스
  • 중복을 제거
  • 테이블 내에 관련있는 데이터만 저장

Benefits

  • 저장소의 용량 확보
  • 삽입, 갱신, 삭제 이상(anomaly)을 줄일 수 있음
  • 쿼리 퍼포먼스 증가

Levels of normalization

  • 1st Normal Form (1NF)
  • 2nd Normal Form (2NF)
  • 3rd Normal Form (3NF)
  • Boyce and Codd Normal Form (BCNF)

1NF

  • 레코드 중복 없어야함
  • 컬럼은 오직 한 가지 값만 가질 수 있음
  • 테이블에는 primary key가 있어야함

2NF

  • 1NF 조건 만족
  • primary key가 아닌 모든 컬럼은 모든 primary key에 의존해야함 (완전 함수적 종속)
  • 반대로, primary key 중 특정 컬럼에만 종속된 컬럼(부분적 종속)이 없어야함
  • ex) 두 개의 컬럼을 묶어 primary key를 형성하는데, pk가 아닌 다른 컬럼이 그 pk인 두 컬럼 모두에 의존해야함

3NF

  • 2NF 조건 만족
  • primary key가 아닌 모든 컬럼은 pk에만 의존해야함
  • 즉, pk가 아닌 컬럼이 pk가 아닌 다른 컬럼을 결정(이행적 함수 종속)할 수 없어야함

Relationships

  • 테이블들은 pk, fk로 서로 연관되어 있음
  • One to One
  • One to Many
  • Many to Many
Type of relationships Description
One to One 한 테이블의 키가 다른 테이블에서의 키로서 하나보다 많지 않을 경우 ex) product - product detail
One to Many 한 테이블의 pk가 다른 테이블에서 다수의 row로서 fk가 될 때 ex) customers - orders
Many to Many 두 테이블이 서로의 intance를 다수 가지고 있을 때 ex) products - orders (중간에 order_detail 테이블로 one-to-many 연결)

Constraints

  • 컬럼에 어떤 값이 들어가야하는지에 대한 제약조건

Types

  • NOT NULL - NULL 값이 들어갈 수 없음
  • UNIQUE - 중복된 다른 값이 있을 수 없음
  • PRIMARY KEY - 특정 row를 uniquely identify 할 수 있는 컬럼
  • FOREIGN KEY - 다른 테이블의 pk와 관련된 컬럼
  • CHECK - 조건을 달아 들어오는 값을 제어
  • DEFAULT - 값이 안 들어오는 경우, DEFAULT로 초기 값 정해줄 수 있음

ref :
데이터베이스 정규화 1NF, 2NF, 3NF, BCNF
Database relationships
제약조건

Categories:

Updated:

Leave a comment