• 데이터베이스 설계는 사용자들의 요구사항을 고려하여 데이터베이스를 생성하는 과정이다. 데이터베이스에 실제로 데이터가 저장되기 시작하면 구조를 변경하기 매우 어렵다. 저장된 데이터와 설계된 구조를 모두 지우고 데이터베이스 scheme을 재작성 해야하는 것은 물론, 어플리케이션에서 데이터베이스에 접근하는 코드 역시 수정이 필요하기 때문이다.
  • 많은 라이브에서 데이터베이스에서 계속 사용중이기 때문에 일관성과 무결성을 지키며 무중단으로 migration 하는 것은 어렵다.
  • RDB모델을 기반으로 두고 데이터베이스를 설계할 때는 두 가지 방법을 주로 사용한다.
    • ER모델 - 릴레이션 변환
    • 정규화

ER모델 - 릴레이션 변환

요구사항 분석

  • 데이터베이스의 설계는 요구사항 분석부터 시작된다.
  • 사용자에게서 필요한 데이터의 종류와 처리 방법 같은 다양한 요구사항을 수집한다.
  • 수집한 요구사항은 이후 설계 단계에서 중요하게 사용되고 데이터베이스의 품질을 결정짓는 중요한 기준이 된다.
  • 요구사항 명세서를 작성한다.

개념적 설계

  • DBMS에 독립적인 개념적 구조 설계
  • ERD로 표현

개념적 모델링 과정

1) 개체와 속성 추출

  • 요구사항 명세서에서 entity를 추출한다.
  • entity를 중심으로 attribute도 추출한다.
  • entity ERD 작성.

2) 관계 추출

  • entity간의 관계를 결정한다.
  • 요구사항 명세서에서 동사를 중심으로 추출한다.
  • 관계에 대한 mapping cardinality와 참여 특성을 결정한다.

3) ERD 작성

  • 작성한 entity와 릴레이션을 하나의 ERD로 작성한다.

논리적 설계

  • DBMS에 적합한 논리적 구조 설계
  • relation(table)로 표현

릴레이션 scheme 변환 규칙

  1. 모든 개체는 릴레이션으로 변환한다

ERD를 위 릴레이션 스키마로 변환한다.

  1. N:M 관계는 릴레이션으로 변환한다

ERD를 위 릴레이션 스키마로 변환한다.

  1. 1:N 관계는 외래키로 표현한다

PK를 FK로 포함시킨다.

  1. 1:1 관계
  • 일반적인 1:1 관계는 FK를 서로 주고 받는다
  • 필수적으로 참여하는 entity의 FK를 받는다.
  • 모든 개체가 1:1관계에 필수적이라면 하나의 릴레이션으로 합친다.
  1. 다중 값 속성은 릴레이션으로 변환한다.
  • ex) EAV 패턴

물리적 설계

  • DBMS로 구현 가능한 물리적 구조 설계.
  • 사용할 DBMS에 맞는 scheme 작성.
  • SQL은 따로 다루겠음.

구현

  • DBMS에 데이터베이스 생성
  • scheme을 이용해 생성하는 단계다.

Comments