본문 바로가기
CS 전공지식/데이터 베이스

2. ERD와 정규화 과정

by eunjineee 2023. 8. 9.

ERD(Entity Relationship Diagram)

: 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할

릴레이션 간의 관계들을 정의한 것

만약 서비스를 구축한다면 가장 먼저 신경 써야 할 부분

 

1. ERD의 중요성은?

ERD는 시스템의 요구 사항을 기반으로 작성

이 ERD를 기반으로 데이터베이스를 구축

데이터베이스를 구축한 이후에도 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우에 설계도 역할을 담당

 

장점

ERD는 관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용

 

단점

비정형 데이터(비구조화 데이터, 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보)를 충분히 표현할 수 없다

 

2. 예제로 배우는 ERD

승원 영업부서의 ERD

요구 사항

• 영업사원은 0~n명의 고객을 관리한다.

• 고객은 0~n개의 주문을 넣을 수 있다.

• 주문에는 1~n개의 상품이 들어간다.

 

 

 

 

 

 

무무오브레전드의 ERD

요구 사항

• 선수들은 1명의 챔피언을 고를 수 있다.

• 챔피언은 한 개 이상의 스킬을 갖는다.

• 스킬은 한 개 이상의 특성을 갖는다.

 

 

 

 

3 .정규화 과정

릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나,

저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정

 

데이터베이스 이상 현상

  1. 회원이 한 개의 등급을 가져야 하는데 세 개의 등급을 갖거나
  2. 삭제할 때 필요한 데이터가 같이 삭제되고,
  3. 데이터를 삽입해야 하는데 하나의 필드 값이 NULL이 되면 안 되어서 삽입하기 어려운 현상

정규화 과정

정규형 원칙을 기반으로 정규형을 만들어가는 과정

정규화된 정도는 정규형(NF, Normal Form)으로 표현

 

정규형 종류

  • 기본 정규형
    • 제1정규형
    • 제2정규형
    • 제3정규형
    • 보이스/코드 정규형
  • 고급 정규형
    • 제4정규형
    • 제5정규형

정규형 원칙

  1. 같은 의미를 표현하는 릴레이션이지만 좀 더 좋은 구조로 만들어야 하고,
  2. 자료의 중복성은 감소해야 하고,
  3. 독립적인 관계는 별개의 릴레이션으로 표현해야 하며,
  4. 각각의 릴레이션은 독립적인 표현이 가능해야 하는 것

 

제1정규형 (1NF)

릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성

한 개의 기본키에 대해 두 개 이상의 값을 가지는 반복 집합이 있어서는 안 됨

 

 

제2정규형 (2NF)

릴레이션이 제1정규형이며, 부분적 함수 종속을 제거한 정규형

기본키가 아닌 속성이 기본키에 대한 완전 함수적 종속을 만족

주의할 점

  • 릴레이션을 분해할 때 동등한 릴레이션으로 분해해야 함
  • 정보 손실이 발생하지 않는 무손실 분해로 분해되어야 함

 

제3정규형 (3NF)

제2정규형이고 기본키가 아닌 모든 속성이 이행적 함수 종속(transitive FD)을 만족하지 않는 상태

 

[이행적 함수 종속]

 A → B와 B → C가 존재하면 논리적으로 A → C가 성립하는데,

이때 집합 C가 집합 A에 이행적으로 함수 종속이 되었다고 함

->  집합 C와 A가 나뉠 수 있도록 테이블을 분해하면 제 2정규형 > 제 3정규형이 됨

 

 

보이스/코드 정규형(BCNF)

모든 결정자(함수 종속 관계에서 특정 종속자(dependent)를 결정짓는 요소)가 후보키인 정규형

결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태(종속성 보존X)

예시 참고링크

 

제 4정규형 (4NF)

다치 종속이 성립하는 경우, R의 모든 속성이 A에 함수적 종속 관계를 만족

 

제 5정규형(5NF)

모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형

'CS 전공지식 > 데이터 베이스' 카테고리의 다른 글

4. 데이터베이스의 종류  (0) 2023.08.10
3. 트랜젝션과 무결성  (0) 2023.08.10
1. 데이터베이스의 기본  (0) 2023.08.09