본문 바로가기

내가 만드는 개발자 교안/Computer Science

Every CS - 데이터베이스 05 - 데이터베이스 설계

728x90

DB 05 - 데이터베이스 설계

01. ER 다이어그램

ER 다이어그램(ERD) : 데이터베이스를 구성하는 요소들의 관계를 나타내는 그림

  • 목적 : 데이터베이스의 저장되는 엔티티의 구조를 모델링하는 것(즉, 시각적으로 설계하는 것)

  • 효과 : 추후에 데이터베이스를 확장하거나 수정할 때, 어떤 부분이 영향을 받는지 쉽게 파악할 수 있어, 유지보수가 용이하고 원활한 소통이 가능하다.

ERD 표기 방식 1 - 피터 첸 표기법

이런 표기방식은 개념적으로 엔티티를 모델링하는 데에 매우 유용하다.
하지만 엔티티가 많아질 경우 그림이 다소 복잡해지고 RDBMS 상에서 어떻게 테이블의 형태로 표현되는지 한 눈에 파악하기 어렵다.
따라서, 요즘에는 IE 표기법(새 발 표기법, 까마귀 발 표기법)이라고 하는 ERD 표기 방식을 사용한다.

ERD 표기 방식 2 - IE(Information Engineering) 표기법

그림에서 처럼 그림의 사각형 하나가 테이블 하나를 나타낸다.
상단 사각형에 테이블의 이름을 쓰고, 내부에는 속성(필드)를 쓰는 방식이다.

이 테이블 간의 관계를 나타내는 표기는 ERD에서 매우 중요한 개념이다.

참고 - 식별/비식별 관계

식별관계 : 참조되는 엔티티가 존재해야만 엔티티가 존재할 수 있는 관계

비식별관계 : 참조되는 엔티티가 존재하지 않아도 존재할 수 있는 관계

위 그림에서 동그라미가 붙은 관계의 경우가 식별 관계이다.

ERD를 그리기 위한 도구(무료)및 특징

  1. ERDCloud

    • 온라인 사용
    • 쉬운 사용성 및 공유
  2. DRAW.io

    • 다이어그램을 저장할 위치 지정
    • 여러 언어로 사용 가능
    • Jira 및 Confluence와의 통합
  3. GITMIND

    • 온라인 사용
    • 광범위한 도형 라이브러리
    • 공유 링크를 통한 프로젝트 공유

02. 정규화

정규화(Normalization) : 테이블간의 중복된 데이터를 허용하지 않음으로써 무결성을 개선하기 위해 데이터를 정규형에 맞도록 구조화하는 프로세스

1. 제 1 정규형 (1NF)

  • 모든 속성이 원자 값을 가진다.
  • 즉, 필드 데이터가 더 이상 쪼개질 수 없는 값을 가져야 한다는 것이다.

Example

정규화되지 않은 테이블

방법 1 - 하나의 테이블로 중복을 감수하고 설계

방법 2 - 테이블을 쪼개는 것

2. 제 2 정규형 (2NF)

  • 제 1 정규형을 만족함과 동시에,
  • 기본 키가 아닌 모든 필드들이 모든 기본 키에 완전히 종속될 것

참고

부분 함수 종속성 : 기본 키가 아닌 필드가 기본 키의 일부에 종속된 경우

완전 함수 종속성 : 기본 키 전체에 완전하게 종속되어 있는 경우

제 2정규형은 부분 함수 종속성이 없는 완전 함수 종속성을 만족하는 상태라고 할 수 있다.

Example

정규화되지 않은 테이블

제2 정규화를 마친 테이블

3. 제 3 정규형 (3NF)

  • 제 2 정규형을 만족함과 동시에,
  • 기본 키가 아닌 모든 필드가 기본 키에 이행적 종속성이 없는 상태

이행 함수 종속성 : 속성 X, Y, Z 가 있을 때, X가 Y 를 결정하고, Y는 Z를 결정하는 경우 이행함수 종속성이 있다고 말한다.

  • 예를 들어, X(학생 ID), Y(학과 ID), Z(학과 이름) 과 같은 경우를 예시로 들 수 있다.

Example

정규화되지 않은 테이블

제2 정규화를 마친 테이블

4. 보이스/코드 정규형(BNCF)

  • 제 3정규형을 만족하는 동시에,
  • 모든 결정자가 후보 키여야 한다는 조건

결정자 : 특정 필드를 식별할 수 있는 필드

  • 위의 테이블은 제3정규형을 만족하는 테이블이다.
  • 하지만, BNCF는 만족하지 않는다.
  • '담당 교수'는 '과목 코드'의 결정자 역할을 하기 때문이다.
  • 따라서, '학번과 과목코드'를 하나의 테이블로, '과목 코드와 담당교수'를 다른 하나의 테이블로 분리해야 한다.

정리

전체 정규화 과정

역정규화

  • 정규화를 거듭반복하다보면 테이블이 쪼개지면서 너무 많아질 수 있고,

  • 이 때문에, 조인연산이 빈번해지고, 성능적인 비용이 늘어날 수 있다.

  • 따라서, 어느 정도의 데이터 중복 및 연산의 번거로움을 감수하더라도 ㅔ이블을 합쳐서 관리하는 경우가 있다.

반응형