Home 정규화 (Normalization)
Post
Cancel

정규화 (Normalization)

정규화

정규화의 기본 목표는 테이블 간에 중복된 데이터를 허용하지 않는 것으로 이상 현상을 제거하기 위해서 데이터베이스를 옳바르게 설계해 나가는 과정이다.


제 1 정규화

제 1 정규화는 한 릴레이션을 구성하는 모든 도메인이 원자 값 만으로 구성되도록 하는 정규형이다.

이름좋아하는 음식
김철수라면
홍길동김치찌개, 된장찌개

홍길동이 여러 개의 좋아하는 음식을 가지고 있기 때문에 제 1 정규형을 만족하지 못하고 있다.

이름좋아하는 음식
김철수라면
홍길동김치찌개
홍길동된장찌개

제 2 정규화

제 1 정규화를 만족하면서 릴레이션을 구성하는 모든 속성이 기본 키에 완전 함수 종속되도록 분해하는 과정을 말한다.

학생번호강좌이름강의실성적
501데이터베이스공학관 1103.5
410데이터베이스공학관 1104.0
402스포츠경영학체육관 1033.5
502자료구조공학관 1114.0
501자료구조공학관 1113.5

테이블의 기본키는 학생번호, 강좌이름에 해당하고 복합키이다.

  • (학생번호, 강좌이름) –> (성적) : 만족
  • (강좌이름) –> (강의실) : 부분키인 강좌이름이 결정자이기 때문에 위의 테이블의 경우 다음과 같이 기존의 테이블에서 강의실을 분리
학생번호강좌이름성적
501데이터베이스3.5
401데이터베이스4.0
402스포츠경영학3.5
502자료구조4.0
501자료구조3.5
강좌이름성적
데이터베이스공학관 110
스포츠경영학체육관 103
자료구조공학관 111

제 3 정규화

제 3 정규화는 제 2 정규화를 진행한 테이블에 대해 이행적 종속 함수를 만족하도록 테이블을 분해하는 것이다.

학생번호강좌이름수강료
501데이터베이스20000
401데이터베이스20000
402스포츠경영학15000
502자료구조25000
  • (학생번호) -> (강좌이름) : 만족
  • (강좌이름) -> (수강료) : 만족
  • (학생번호) -> (수강료) : A -> B , B -> C 이지만 A -> C 가 만족하지 않기 때문에 테이블을 분리해야한다.
학생번호강좌이름
501데이터베이스
401데이터베이스
402스포츠경영학
502자료구조
강좌이름수강료
데이터베이스20000
스포츠경영학15000
자료구조25000

이상 현상

번호이름나이성별학과코드학과학과_전화번호
1김철수20A001컴퓨터공학부010-1345-5245
2홍길동27A002정보통신학부010-5482-7682
3김이슬22A003AI학부010-5135-1145
4이하연21A001컴퓨터공학부010-1345-5245
  1. 삽입 이상 : 자료를 삽입할 때 의도하지 않은 자료까지 삽입해야만 자료를 테이블에 추가가 가능한 현상
1
2
INSERT INTO TABLE
  VALUE (5, '박상철', 27, '남', null, null, '010-6431-1245');
  • 아직 학과를 선택하지 못한 학생을 추가할 때 null 값이 들어가야 하는 문제가 생긴다.
  1. 갱신 이상 : 중복된 데이터 중 일부만 수정되어 데이터 모순이 일어나는 현상
1
2
3
UPDATE TABLE
SET 학과_전화번호 = '010-0000-0000'
WHERE 이름 = '김철수';
  • 이름이 ‘김철수’인 사람의 학과_전화번호를 수정시 같은 데이터임에도 불구하고 전화번호가 다르게 된다.
  1. 삭제 이상 : 어떤 정보를 삭제하면, 의도하지 않은 다른 정보까지 삭제되어버리는 현상
1
2
3
DELETE
FROM TABLE
WHERE 이름 = '김이슬'
  • 이름이 ‘김이슬’인 4번을 삭제하면 AI학부가 의도와 다르게 삭제되어버린다.

함수 종속성

완전 함수 종속

종속자가 기본키에만 종속되며, 기본키가 여러 속성으로 구성되어 있을 경우 기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 종속된 경우를 완전함수 종속이라고 한다.

주민번호이름성별주소
990120-1**홍길동서울
901121-1**임꺽정안양
850811-1**성춘향서울
810503-1**성춘향부산
  • (주민번호) -> 이름, 성별, 주소 : 만족

이름(성춘향이라는 이름이 2개가 존재함), 성별, 주소를 통해 어떤 것도 식별 할 수없다. 하지만 주민번호의 경우 특정가능하다. 이경우 완전 함수 종속에 해당한다.

부분 함수 종속

릴레이션에서 기본키가 복합키일 경우 기본키를 구성하는 속석중 일부에게 종속된 경경우를 부함수 종속이라고 한다.

이름성별주소지역번호
블랙 위도우LA001
토니 스타크뉴욕003
토르아스가르드000
스티브 로저스LA005
토니 스타크뉴욕003
  • (이름,성별) -> 주소 : 만족
  • (이름,성별) -> 지역번호 : 만족

관계가 성립한다.

  • (이름) -> 주소 : 만족

기본키의 부분집합인 이름에 대해 (이름) -> (주소)의 관계가 성립한다.

이 경우가 기본키가 여러 속성으로 구성되어 있을경우 기본키를 구성하는 속성 중 일부에게 종속된 경우이다.

이행 함수 종속

릴레이션에서 A,B,C 세가지 속성간에 A->B B->C 이어서 A->C가 성립되는 경우

This post is licensed under CC BY 4.0 by the author.