Computer Science/Database

[면접을 위한 CS 노트] 4-2 ERD와 정규화 과정

킹우현 2023. 11. 25. 18:10

Entity Relationship Diagram은 개체 속성과 개체 간의 관계를 그림 혹은 도표로 표현한 것이며 시스템의 요구사항을 기반으로 작성되고 이를 통해 데이터베이스를 구축한다.

 

관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용하지만, 비정형 데이터를 충분히 표현할 수 없다는 단점이 있다.

1-1. 정규화 과정

정규화 과정이란 ? 릴레이션 간의 '잘못된 종속 관계'로 인해 발생하는 '데이터베이스 이상 현상'을 방지하고, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정

이상 현상이란 ? 테이블 내의 데이터들이 불필요하게 중복되어 테이블을 조작할 때 발생되는 데이터 불일치 현상을 말한다.
- 삽입 이상 : 불필요한 정보를 함께 저장하지 않으면 어떤 정보를 저장하는 것이 불가능하다.

- 갱신 이상 : 반복된 데이터 중에 일부를 수정할 경우 데이터 불일치가 발생한다.
- 삭제 이상 :  어떤 정보를 삭제할때 필요한 정보가 같이 삭제된다.

 

0) 정규형 원칙

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

1) 제 1 정규형

예를 들어 위처럼 릴레이션이 이루어져 있다면, 제1 정규형을 만족하지 못한다. 학번이 100인 학생의 과목 번호와 성적이 2개로 이루어져 있기 때문이다. 따라서 제1 정규형이 되려면 다음과 같이 속성 값을 분리해주어야 한다. 

제1 정규형은 릴레이션에 속하는 속성 값이 모두 원자값(Atomic Value)만으로 구성되어야 한다.

 

2) 제 2 정규형

위 그림처럼 각 속성들이 모두 완전 함수 종속이 되도록 릴레이션을 분리시켜준다. 따라서 아래와 같이 릴레이션이 형성된다.

제2 정규형은 제1 정규형이면서, 기본키에 속하지 않은 모든 속성이 기본키에 완전 함수 종속인 정규형을 말한다. 

 

3) 제 3 정규형

제3 정규형은 제2 정규형이면서, 기본키에 속하지 않은 모든 속성이 기본키에 이행적 함수 종속이 아닌 정규형을 말한다.

 

다르게 표현하면, 기본키 이외의 속성이 그 외 다른 속성을 결정할 수 없는 것이다. 

 

4) 보이스/코드 정규형

보이스/코드 정규형은 제 3 정규형이면서, 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 정규형을 말한다.

결정자 : 함수 종속 관계에서 특정 종속자를 결정짓는 요소로서, X 👉 Y일 때 X는 결정자이고 Y는 종속자이다.

 

참고 : https://rebro.kr/160

 

[DB] 8. 정규형 (1NF, 2NF, 3NF, BCNF)

[목차] 1. 제1 정규형 2. 제2 정규형 3. 제3 정규형 4. BCNF 정규형이란 정규화된 결과를 말하며, 제1 정규형, 제2 정규형, 제3 정규형, BCNF, 제4 정규형, 제5 정규형이 있다. 실무적으로 제4, 제5 정규형은

rebro.kr

 

이렇게 정규형 과정을 거쳐서 릴레이션을 분해한다고 해서 성능이 100% 좋아지는 것은 아니라, 어떠한 쿼리에서 Join을 해야 하는 경우가 발생해서 오히려 성능이 나빠질 수도 있다. 따라서 서비스에 맞게 정규화 또는 비정규화 과정을 진행해야 한다.