CS/데이터베이스

ERD와 정규화 과정

최-코드 2025. 2. 19. 10:14
ERD : 릴레이션 간의 관계들을 정의한 것
비정형 데이터 : 비구조화 데이터를 말하며, 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보를 말한다.
ERD는 관계형 구조로 표현할 수 있는 데이터를 구성하는데 유용하지만 비정형 데이터를 충분히 표현할 수 없다는 단점이 있다.

 

정규화 과정

정규화 과정 : 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 중복된 데이터를 없애 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정

  • 삽입이상 : 정보를 삽입할 때 의도하지 않은 정보까지 삽입해야만 정보를 테이블에 추가가 가능한 현상
    • 강의를 아직 수강하지 않은 새로운 학생을 삽입할 경우 강의 코드와 강의명 속성에는 null값이 들어가야 하는 문제가 발생
  • 갱신이상 : 중복된 데이터 중 일부만 수정되어 데이터 모순이 일어나는 현상
    • 강의 코드가 'A3'인 김현수의 전화번호를 수정할 경우, 3번째 튜플의 데이터만 수정이 일어나서 다른 김현수 데이터는 기존의 전화번호를 가지고 있다.
  • 삭제이상 : 어떤 정보를 삭제하면, 의도하지 않은 정보까지 삭제되어버리는 현상
    • 강의코드가 'A1'인 강의를 삭제하면 이태호 데이터까지 삭제된다.
임의의 후보 키에 속하는 속성을 주요 속성, 그렇지 않은 속성을 비주요 속성이라고 한다.
즉, 모든 후보 키에 대해 속하지 않은 속성을 비주요 속성이라고 한다.

a,b 속성으로 이뤄진 것에 대해 특정 속성이 a,b에만 종속성을 보이는 것을 완전 함수 종속성이라고 하며, a 혹은 b에도 종속성을 보이는 것을 부분 함수 종속성이라고 한다.

b가 a에 대해 종속성을 보이고, c가 b에 대해 종속성을 보일 때 c가 a에 대해 이행 함수 종속성을 가진다고 한다.
즉, a->b, b->c 일 때 a->c의 형태를 이행 함수 종속성이라고 한다.
(a는 결정자, b는 종속자)

제 1정규형

  • 필드값이 더 이상 분해될 수 없는 원자 값으로 구성되어 있는 상태를 말한다.
  • 즉, 필드값이 하나의 값만 가지고 있어야 한다.

제 2정규형

제 1정규형 상태에서 모든 비주요 속성이 임의의 후보 키에 대해 완전 함수 종속적이어야 한다.

 

제 3정규형

  • 제 2정규형 상태에서 비주요 속성이 임의의 후보키에 대해 이행 함수 종속적이지 않아야 한다.

BCNF 정규형

  • 의미있는 함수 종속성의 결정자는 모두 후보키이어야 한다.

 

반정규화

성능 향상을 위해 정규화된 데이터 모델에서 중복, 통합 등을 수행하는 모든 과정을 의미한다. 반정규화를 적용하면 데이터 무결성이 깨질 수 있는 위험이 있다.