Licence
저작자표시-비영리-변경금지 2.0 대한민국 (CC BY-NC-ND 2.0 KR)
이용자는 다음의 권리를 갖습니다:
공유 — 복제, 배포, 전시, 공연 및 공중송신 (포맷 변경도 포함)
정규화(normalization)
함수 종속성을 이용해 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해해서 이상 현상이 발생하지 않는 바람직한 릴레이션으로 만들어 가는 과정.
정규화를 통한 릴레이션은 무손실 분해(nonloss decomposision)되어야 한다.
무손실분해
1. 릴레이션은 의미적으로 동등한 릴레이션들로 분해되어야 하고 분해로 인한 정보의 손실이 발생하지 않아야 한다.
2. 분해된 릴레이션들을 자연 조인하면 분해 전의 릴레이션으로 복원 가능해야 한다.
정규형(NF; Normal From)
릴레이션이 정화된 정도
각 정규형마다 제약조건이 존재하며,
정규형의 차수가 높아질수록 데이터 중복이 줄어들어 이상현상이 발생하지 않게된다.
기본 정규형: 제1정규형, 제2정규형, 제3정규형, 보이스/코드정규형
고급 정규형: 제4정규형, 제5정규형
제1정규형(1NF; First Normal Form)
릴레이션의 모든 속성이 더는 분해되지 않는 원자 값(atomic value)만 가지면 제 1정규형을 만족한다.
제1정규형을 만족해야 데이터베이스의 릴레이션이 될 자격이 있다.
이벤트번호와 당첨여부가 다중값을 가지기 때문에 제1정규형을 만족하지 못하고 있다.
다중값들을 하나의 투플로 분해하여 나타냈다 (1정규형 만족).
이 경우에도 데이터의 중복으로 인한 이상현상이 발생한다.
삽입이상 - 이벤트에 참여한 적이 없는, melon이라는 고객아이디를 가진 요소를 넣기 위해서는 임시 이벤트 번호가 필요
갱신이상 - apple이라는 고객의 등급이 변경되었을때 3개 전부를 변경하지 않으면 동일한 아이디에 VIP값이 다르다.
삭제이상 - orange라는 고객을 삭제하면 등급과 할인율이라는 꼭 필요한 데이터도 같이 삭제된다.
부분 함수 종속: 등급, 할인율이 기본키[고객아이디, 이벤트번호] 중 고객아이디에 의해서만 결정될 수도 있다.
이행적 함수 종속: 고객아이디에 의해 등급이 결정되고 등급에 의해 할인율이 결정된다.
기본키에 완전히 함수 종속되지 못한 등급과 할인율 때문에 오류가 발생한다.
부분 함수 종속이 제거되도록 이벤트참여 릴레이션을 분해하면 분해된 릴레이션이 제2정규형에 속하게 된다.
제2정규형(2NF; Second Normal Form)
릴레이션이 제1정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제2정규형을 만족한다.
등급과 할인율이 고객아이디에 단일값에 의해서만 결정될 수도 있기 때문에
부분 함수 종속을 제거하기 위해 분해한다.
고객아이디에 등급과 할인율이 완전종속된다.
고객아이디와 이벤트번호에 의해 당첨여부가 결정된다.
제2정규형을 만족해도 여전히 이상 현상이 발생할 수 있다.
gold의 할인율이 변경되었을때 일부 투플이 갱신이 안되는 경우가 있을 수 있다.
banana라는 고객이 탈퇴하였는데 vip라는 등급을 가진 고객이 banana뿐이라면,
vip등급의 할인율이 20%라는 정보도 소실된다.
bronze라는 등급을 새로 만들고싶을때 이 등급을 가진 고객이 없기 때문에 정보를 삽입할 수 없다.
이행적 함수 종속이 존재하기 때문에 이상현상이 발생한다.
이행적 함수 종속이 제거되도록 고객 릴레이션을 분해하면 분해된 릴레이션이 제3정규형에 속하게 된다.
제3정규형(3NF; Third Normal Form)
릴레이션이 제2정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속되지 않면 제3정규형을 만족한다.
고객아이디 -> [등급, 할인율]을
고객아이디 -> 등급 // 고객아이디 -> 할인율 의 형태로 분해한다.
'Computer science > Database' 카테고리의 다른 글
이상현상과 트랜잭션의 격리 수준 (0) | 2023.09.12 |
---|---|
ACID 원칙이란? (0) | 2023.09.12 |
데이터베이스의 원리와 응용 7 (0) | 2022.04.09 |
데이터베이스의 원리와 응용 6 (0) | 2022.04.09 |
데이터베이스의 원리와 응용 5 (0) | 2022.04.09 |