본문 바로가기
  • hello world
Computer Science/Studying

논리 데이터베이스 설계 : 정규화

by JJoajjoa 2023. 10. 30.

 

정규화 Nomalization

 

개요

함수적 종속성 등의 종속성 이론을 이용하여

잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어

바람직한 스키마로 만들어가는 과정

>> 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해해가는 과정

차수가 높아질수록 만족시켜야 할 제약조선이 늘어남

>> 정규화된 데이터 모델은 일관성, 정확성, 단순성, 비중복성, 안정성 등을 보장함

 

 

목적

- 데이터 구조의 안정성 및 무결성 유지

- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만듦

- 효과적인 검색 알고리즘 생성

- 데이터 중복을 배제하여 이상의 발생방지 및 자료 저장 공간의 최소화 가능

- 데이터 삽입 시 릴레이션을 재구성 할 필요성 적음

- 데이터 모형의 단순화 가능

- 속성의 배열 상태 검증 가능

- 개체와 속성의 누락 여부 확인 가능

- 자료 검색과 추출의 효율성 추구

 

 

이상 Anomaly

정규화를 거치지 않으면 데이터베이스 내에 데이터들이 불필요하게 중복되어

릴레이션 조작시 예기치 못한 곤란한 현상이 발생 → 이상

삽입 이상
Insertion Anomaly
릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원치않은 값들도 함께 삽입되는 현상
삭제 이상
Deletion Anomaly
릴레이션에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 연쇄가 일어나는 현상
갱신 이상
Update Anomaly
릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플 정보만 갱신되어 정보에 모순이 생기는 현상

 

 

정규화의 원칙

정보의 무손실 표현, 즉 하나의 스키마를 다른 스키마로 변환할 때 정보의 손실이 있어서는 안됨

분리의 원칙, 즉 하나의 독립된 관계성은 하나의 독립된 릴레이션으로 분리시켜 표현해야함

데이터의 중복성이 감소되어야 함

 

 

정규화 과정

   
비정규 릴레이션
릴레이션에 속한 모든 도메인이 원자값
→ 모든 속성값이 원자값으로만 되어있는 정규식
1NF
부분적 함수 종속 제거
→ 릴레이션 R이 1NF이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족
2NF
이행적 함수 종속 제거
→ 릴레이션 R이 2NF이고, 기본키가 아닌 모든 속성이 기본키에 대하여 이행적 종속을 만족하지 않음
3NF
결정자이면서 후보키가 아닌 것 제거
→ 릴레이션 R에서 결정자가 모두 후보키인 정규형
→ 3NF에서 후보키가 여러개 존재하고 서로 중첩되는 경우 적용하는, 강한 제3정규형이라고 함
→ 모든 BCNF가 종속성을 보존하는 것은 아님
→ BCNF 제약조건 :
>> 키가 아닌 모든 속성은 각 키에 대하여 완전 종속해야 함
>> 키가 아닌 모든 속성은 그 자신이 부분적으로 들어가있지 않은 모든 키에 대하여 완전 종속 해야함
>> 어떤 속성도 키가 아닌 속성에 대하여 완전종속 할 수 없음
BCNF
다치 종속 제거
→ 릴레이션 R에 다치 종속이 성립하는 경우 R의 모든 속성이 A에 함수적 종속관계를 만족함
4NF
조인 종속성 이용
→ 릴레이션 R의 모든 조인 종속이 R의 후보키를 통해서만 성립됨
5NF

 

 

 

종속

함수적 종속

- 데이터들이 어떤 기준값에 의해 종속되는 것

 

수강 릴레이션 (학번, 이름, 과목) 

→ 학번이 결정되면 과목에 상관없이 학번에는 항상 같은 이름이 대응됨

→ 학번에 따라 이름이 결정된다고 할 때,

→ 이름 을 학번 에 함수적 종속 이라고 함

>> 학번(결정자)  → 이름(종속자)

 

 

완전 함수적 종속

어떤 테이블 R에서 속성 A가 다른 속성 집합 B 전체에 대해 함수적 종속이지만

B의 어떠한 진부분 집합 C에는 함수적 종속이 아닐 때

속성 A는 속성집합 B에 완전 함수적 종속이라고 함

 

 

부분 함수적 종속

어떤 테이블 R에서 속성 A가 다른 속성 집합 B 전체에 대해 함수적 종속이면서

B의 어떠한 진부분 집합에도 함수적 종속일 때

속성 A는 속성집합 B에 부분 함수적 종속이라고 함

 

 

예시

수강 릴레이션 (학번, 과목명, 성적, 학년) PK

 

'성적'은  '학번'과 '과목명'이 같은 경우에는 항상 같은 '성적'이 나옴

→ '성적'은 '학번'과 '과목명'에 의해서만 결정됨

→ '성적'은 기본키에 완전 함수적 종속

 

'학년'은 '과목명'에 상관없이 '학번'이 같으면 항상 같은 '학년'이 나옴

→ 기본키의 일부인 '학번'에 의해서 '학년'이 결정됨

→ '학년'은 부분 함수적 종속

 

 

이행적 종속

A → B 이고 B → C 일 때, A → C 를 만족하는 관계

 

 

다치 종속

A, B, C 3개의 속성을 가진 릴레이션 R에서

어떤 복합 속성(A, C)에 대응하는 B 값의 집합이

A 값에만 종속되고 C 값에는 무관하면,

B는 A에 다치 종속이라고 함

 

 

조인 종속

어떤 릴레이션 R의 속성에 대한 부분집합 A, B, · · · , C가 있다고 가정할 때,

릴레이션 R이 자신의 프로젝션 A, B, · · · , C를 모두 조인한 결과가 자신과 동일한 경우,

릴레이션 R은 조인종속 ( A, B, · · · , C )을 만족함

 

'Computer Science > Studying' 카테고리의 다른 글

[정보처리] 어플리케이션 테스트  (3) 2024.07.23
인터페이스 Interface  (0) 2023.11.13
데이터 모델 설계  (0) 2023.10.26
데이터베이스 설계  (0) 2023.10.26
API · REST API  (0) 2023.10.04