AtraFelis's Develop Diary

E-R모델을 이용한 관계 데이터베이스 설계 방법 본문

DataBase

E-R모델을 이용한 관계 데이터베이스 설계 방법

AtraFelis 2024. 11. 27. 23:31

관계 데이터베이스의 대표적인 설계 방법은 E-R모델과 릴레이션 변환 규칙을 이용하거나, 정규화를 이용하여 설계하는 방법이 있다. 지금은 전자의 방법을 이용하여 관계 데이터베이스를 설계하는 방법을 알아보려고 한다.

E-R 모델과 릴레이션 변환 규칙을 이용한 설계의 과정은 아래와 같다.

  1. 요구 사항 분석
    • 데이터베이스 용도 파악
    • 결과물 : 요구 사항 명세서
  2. 개념적 설계
    • DBMS에 독립적인 개념적 구조 설계
    • 결과물 : 개념적 스키마 (E-R 다이어그램)
  3. 논리적 설계
    • DBMS에 적합한 논리적 구조 설계
    • 결과물 : 논리적 스키마 (릴레이션 스키마)
  4. 물리적 설계
    • DBMS로 구현 가능한 물리적 구조 설계
    • 결과물 : 물리적 스키마
  5. 구현
    • SQL 문을 작성한 후 이를 DBMS에서 실행해 데이터베이스 생성

설계 과정 중 오류를 발견하여 변경이 필요하면 이전 단계로 되돌아가 설계 내용을 변경 가능하다. 이것은 모든 과정에서 가능하다.


1. 요구 사항 분석

요구 사항 분석을 하는 이유는 개발할 데이터베이스의 용도 파악을 위해서이다. 사용자의 요구 사항을 수집하고 분석하여 업무에 필요한 데이터가 무엇인지, 그 데이터에 어떤 처리가 필요한지 등을 고려해 요구 사항 명세서를 작성한다.

 

2. 개념적 설계

개념적 설계 단계에서는 DBMS에 독립적인 개념적 스키마를 설계한다. 요구 사항 분석 명세서를 보고 E-R 모델 등을 이용하여 개념적 구조로 표현한다. 결과물로서 개념적 스키마인 E-R다이어그램을 얻을 수 있다.

개념적 설계의 작업 과정은 세 단계로 나뉜다.

  1. 개체와 속성 추출
    • 요구사항 문서에서 업무와 깊은 관련이 있는 명사를 찾아 개체와 속성으로 구분한다.
    • 구분한 속성 중에서 개체를 고유하게 구분하는 속성을 키로 분류한다.
  2. 개체 간의 관계 결정
    • 개체 간의 연관성을 의미 있게 표현한 동사를 찾는다.
    • 찾아낸 관계에 대해 매핑 카디널리티(1:1, 1:n, n:m) / 참여 특성(필수, 선택)을 결정한다.
  3. E-R 다이어그램으로 표현

 

3. 논리적 설계

DBMS에 적합한 논리적 스키마를 설계한다. 개념적 설계 단계에서 만든 개념적 스키마를 논리적 데이터 모델을 이용해 논리적 구조로 표현한다. 일반적으로 관계 데이터 모델을 사용하여 논리적 모델링을 진행한다.

E-R 다이어그램을 릴레이션 스키마로 변환할 때는 몇 가지 규칙이 존재한다.

  1. 모든 개체는 릴레이션으로 변환한다.
    • 복합 성성인 경우에는 이를 구성하는 단순 속성을 릴레이션의 속성으로 변환한다.
  2. 다대다(n:m) 관계는 릴레이션으로 변환한다.
    • 이 관계에 참여하는 릴레이션들의 기본키를 외래키로 지정하고, 이 외래키를 조합하여 복합기본키로 사용한다.
  3. 일대다(1:n) 관계는 외래키로 표현한다.
    • 다수(n)가 참여하는 관계에 혼자(1) 참여하는 개체의 기본키를 외래키로 표현한다.
    • 관계의 속성들은 n측 개체에 포함시킨다.
  4. 일대일(1:1) 관계는 외래키로 표현한다.
    • 관계에 참여하는 개체끼리 각자의 기본키를 주고받아 외래키로 지정한다. 단, 필수로 참여하는 개체 릴레이션만 외래키와 관계의 속성들을 받는다.
    • 관계의 속성들도 각 개체의 릴레이션에 포함시킨다.
  5. 다중 값 속성은 릴레이션으로 변환한다.
  6. 기타 고려사항
    • 개체의 자기 참조 관계도 기본 규칙을 그대로 적용한다.
    • 속성이 많은 관계는 관계 유형에 상관없이 릴레이션으로의 변환을 고려할 수 있다. (즉, 1:n 관계여도 관계의 속성이 많다면 독립적인 릴레이션으로 변환해도 된다.)

 

4. 물리적 설계와 구현

하드웨어나 운영체제의 특성을 고려하여 물리적인 구조를 설계한다. 이후 SQL로 작성한 명령문을 DBMS에서 실행하여 데이터베이스를 생성한다.

SQL문 같은 경우는 ChatGPT와 같은 LLM 모델들이 굉장히 잘 만들어 주니까 이용하도록 하자.