개인 공부😊/Database

[데이터베이스] 4.2 ERD와 정규화 과정

송테이토 2022. 11. 27. 21:05

ERD란?

→ 데이터베이스 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간 관계들을 정의한 것.

시스템의 요구 사항 기반으로 작성되며 ERD를 기반으로 데이터베이스를 구축한다.

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

ERD 단점

→ 관계형 구조는 유용 BUT 비정형 데이터를 충분히 표현할 수 없다.

비정형 데이터 : 비구조화 데이터, 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보

정규화 과정

정규형 원칙

  • 자료의 중복성 감소
  • 독립적인 관계는 별개의 릴레이션으로 표현
  • 각가의 릴레이션은 독립적인 표현이 가능해야 함

데이터베이스 이상 현상 : 삭제할 때 필요한 데이터가 같이 삭제되고, 데이터 삽입을 해야하는데 하나의 필드가 NULL이되면서 삽입하기 어려운 형상

제1 정규형

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

  • 반복 집합 불가능!(제거해야함)

예를 들어 위처럼 릴레이션이 이루어져 있다면 , 제1 정규형을 만족하지 못한다.

학번이 100인 학생의 과목 번호와 성적이 2개로 이루어져 있기 때문이다.

→ 올바른 예시!!

제1 정규형에서는 어떠한 이상현상이 발생할까?

-삽입 이상 : 학생이 새 과목을 수강 신청할 때 반드시 학생의 학과와 지도교수를 알아야 한다. (불필요한 정보)

-삭제 이상 : 300번 학생이 C400 과목을 취소하면, 해당 과목에 대한 정보가 모두 사라진다.

-갱신 이상 : 100번 학생이 지도교수를 변경할 때, P1인 행을 모두 찾아서 변경해주어야 한다.

제1 정규형에서 이러한 이상현상이 발생하는 이유는,

기본키(primary key)가 아닌 속성들이 기본키에 완전 함수 종속되지 못하고 부분 함수 종속되어 있기 때문이다. 즉, 기본키의 일부 속성에만 의존하고 있기 때문이다.

아래의 그림을 참고하면 기본키는 (학번, 과목 번호)이고, 지도교수와 학과가 부분 함수 종속되어 있다.

2. 제2 정규형 (2NF)

제2 정규형은 제1 정규형이면서, 기본키(primary key)에 속하지 않은 속성 모두가 기본키에 완전 함수 종속인 정규형을 말한다

부분 함수의 종속성 제거 : 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것!

.위 그림처럼 각 속성들이 모두 완전 함수 종속이 되도록 릴레이션을 분리시켜준다.

제2 정규형에도 여전히 이상현상이 존재한다.

  • 삽입 이상 : 지도교수가 학과에 소속되어 있음을 추가할 때 반드시 지도 학생이 있어야 한다. (불필요한 정보 필요)
  • 삭제 이상 : 300번 학생이 자퇴하는 경우 P3 교수의 학과 정보가 사라진다.
  • 갱신 이상 : 지도교수의 학과가 변경되는 경우 모두 찾아서 변경시켜주어야 한다. (지도교수가 동일한 학생이 여러 명 있는 경우)

제2 정규형에서 이상현상이 여전히 발생하는 이유는 '이행적 함수 종속성' 때문이다

이행적 함수 종속성은 속성이 A→B이고, B→C이면서 A→C의 관계에 있는 것을 말한다

3. 제3 정규형 (3NF)

제3 정규형은 제 2 정규형이면서, 이행적 함수 종속성을 제거한 정규형을 말한다.

즉,기본키에 속하지 않은 모든 속성이 기본키에 이행적 함수 종속이 아닐 때 제3 정규형이라고 한다.

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

4. 보이스/코드 정규형 BCNFBCNF (Boyce and Codd Normal Form)

제3 정규형을 조금 더 강화시킨 개념이다. 강한 제3 정규형이라고도 한다.

한 교수당 하나의 수업만 맡는다고 가정한다. 이렇게 되면 제3 정규형을 만족한다.

이 경우에는 어떤 이상현상이 생길까?

  • 삽입 이상 : 새로운 교수가 특정 과목을 담당한다는 새로운 정보를 추가할 수 없다. 적어도 한 명 이상의 수강 학생이 필요하다.
  • 삭제 이상 : 학번 100이 C234 과목을 취소하면, P2가 C234 과목을 담당한다는 정보도 삭제된다.
  • 갱신 이상 : P1의 과목이 변경되면 P1인 행을 모두 찾아 변경시켜주어야 한다.

이러한 이상현상이 생기는 이유는,

결정자(Determinant)가 후보키(Alternative Key)로 취급되고 있지 않기 때문이다.

  • 결정자 : 함수 종속 관계에서 특정 종속자를 결정짓는 요소

후보키는 슈퍼키(super key) 중에서 최소성을 갖는 키이므로 이 릴레이션에서는 (학번, 과목명)이나 (학번, 담당교수)가 후보키가 된다. 담당 교수만으로는 후보키가 될 수 없다.하지만, 후보키가 아님에도 과목명을 결정할 수 있기 때문에 담당 교수는 결정자에 속한다.이 이상현상을 해결하기 위해서모든 결정자는 항상 후보키가 되도록 릴레이션을 분해해주면 강한 제3 정규형, 즉 BCNF를 만족하게 된다.