-
240221 데이터베이스 구축 : 정규화OS Computer Science 2021. 2. 24. 19:08
정규화
정규화(Normalization)란 하나의 릴레이션에 하나의 의미만 존재할 수 있도록 릴레이션을 분해해 나가는 과정이라 할 수 있습니다. 정규화의 목적은 구성되는 모든 릴레이션이 중복되지 않게 효과적으로 데이터베이스 내에 표현이 가능하도록 하는 것이며 삽입, 삭제, 갱신 시 Anomaly 현상이 발생하지 않도록 하는 것입니다.
정규화를 함으로써 얻게 되는 효과는 자료의 저장 공간을 최소화하고 자료 불일치를 최소화하며 자료 구조를 안정화 시킴은 물론 이상( Anomaly) 현상을 방지하는 효과를 볼 수 있습니다.
출처: https://minimax95.tistory.com/entry/정규화Normalization-개념과-기본-과정 [IT 정보기술 따라잡기!]-
데이터베이스 정규화란?
이상 문제를 해결하기 위해 속성들 끼리의 종속 관계를 분석하여 여러개의 릴레이션으로 분해하는 과정 입니다. 일반적으로 테이블을 여러개로 분해하면 속도는 상대적으로 느려질 수 있지만, 분해하지 않으면 이상 문제들이 발생 합니다.
-
이상 문제
- 삽입 이상 : 데이터를 저장할 때 원하지 않는 정보가 함께 삽입되는 경우
- 삭제 이상 : 튜플을 삭제함으로써 유지되어야 하는 정보 까지도 연쇄적으로 삭제되는 경우
- 갱신 이상 : 중복된 튜플 중 일부의 속성만 갱신 시킴 으로써 정보의 모순성이 발생하는 경우
예를들어 아래와 같은 테이블이 있을 경우 이상 문제(Anomaly)가 발생할 수 있습니다.
- 삽입 이상 : 신입 학생이 입학하여 학번과 학년 등을 입력하려 했으나 아직 과목이 정해지지 않았거나, 시험을 보지 않아 성적이 없는 상태이기 때문에 불필요한 정보(과목 이름, 성적)를 함께 삽입 해야 함
- 삭제 이상 : 학생 번호가 2번인 학생의 과목에 대한 성적을 삭제할 경우 학생 번호와 학년 등 모든 정보가 같이 삭제되어 학생의 정보 자체가 사라짐
- 갱신 이상 : 학생 번호가 3번인 학생이 2학년이 되어 학년 정보를 변경 하려 하는데 3개를 모두 하나씩 바꿔줘야 함, 하나라도 안바꿀 경우 한명의 학생에 대한 정보가 서로 달라지는 정보의 모순성이 발생
-
함수적 종속이란?
함수적 종속은 어떠한 릴레이션에서 속성들의 부분 집합을 X, Y라 할 때 특정 튜플에서 X의 값이 Y의 값을 함수적으로 결정 한다면 Y가 X에 함수적으로 종속 되었다고 합니다.
함수적 종속의 추론 규칙은 아래와 같습니다.
- 재귀 규칙 : Y가 X의 부분 집합이면 X → Y 이다.
- 증가 규칙 : X → Y 이면 WX → WY 이고 WX → Y 이다.
- 이행 규칙 : X → Y 이고 Y → Z 이면 X → Z 이다.
- 유니온 규칙 : X → Y 이고 X → Z 이면 X → YZ 이다.
- 분해 규칙 : X → YZ 이면 X → Y와 X → Z 이다.
- 가이행 규칙 : 만일 W → X 이고 XY → Z 이면 WY → Z 이다.
-
정규화 과정
- 제1 정규형
도메인은 모두 원자값이어야 합니다. 핸드폰 번호에 2가지가 들어가 있기 때문에 제1 정규형을 만족할 수 없게 됩니다. (관계형 데이터 베이스의 경우 기본적으로 도메인은 모두 원자값이기 때문에 제1 정규형은 지켜져 있습니다)
위의 테이블을 제1 정규형에 맞춰 수정하면 아래와 같습니다.
- 제2 정규형
제2 정규형은 부분 함수 종속을 제거 합니다. 아래 표에서 학번은 학부와 등록금을 결정할 수 있고, 학번과 과목 코드는 성적을 결졍할 수 있습니다.
함수(학번, 과목코드)에서 부분 함수인 학번 혼자서 학부와 등록금을 결정할 수 있기 때문에 제2 정규형을 만족할 수 없기 때문에 성적, 학부, 등록금에 모두 영향을 주는 학번을 기준으로 릴레이션을 아래와 같이 분리 시킵니다.
- 제3 정규형
제3 정규형은 이행 함수 종속을 제거 합니다. 현재 아래 테이블은 학번(X)이 학부(Y)를 결정하고, 학부(Y)가 등록금(Z)을 결정 하고, 이행 규칙에 따라 학번(X)이 등록금(Z)을 결정할 수 있습니다. (이행 규칙 : X → Y 이고 Y → Z 이면 X → Z 이다.)
현재는 이행 규칙을 만족하므로 제3 정규형을 만족 시키지 못하며, 이행 함수 종속을 제거해주어야 합니다.
또한 위의 상태에서 갱신 이상이나 여러 문제가 발생할 수 있기 때문에 X → Y, Y → Z 의 형태로 릴레이션을 또 다시 분해 합니다.
- BCNF : 결정자 중 후보키가 아닌 것들은 제거
- 제4 정규형 : 다치 종속 제거
- 제5 정규형 : 조인 종속성 제거
1,2회 #44
정규화 과정 중 1NF에서 2NF가 되기 위한 조건은?
1 1NF를 만족하고 모든 도메인이 원자값이어야 한다.
2 1NF를 만족하고, 키가 아닌 모든 애트리뷰트들이 기본키에 이행적으로 함수 종속되지 않아야 한다.
3 1NF를 만족하고 다치 종속이 제거되어야 한다.
4 1NF를 만족하고 키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속 관계를 만족해야 한다.3회 #41
릴레이션 R의 모든 결정자(determinant)가 후보키이면 그 릴레이션 R은 어떤 정규형에 속하는가?
1 제1 정규형
2 제2 정규형3 보이스/코드 정규형
4 제4 정규형
3회 #50
정규화의 목적으로 옳지 않은 것은?
1 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만든다.
2 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄인다.
3 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 야기한다.4 효과적인 검색 알고리즘을 생성할 수 있다.
3회 #56
다음과 같이 위쪽 릴레이션을 아래쪽 릴레이션으로 정규화를 하였을 때 어떤 정규화 작업을 한 것인가?
1 제1정규형
2 제2정규형
3 제3정규형
4 제4정규형
3회 #59
릴레이션 조작 시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 곤란한 현상을 의미하는 것은?
1 normalization
2 rollback3 cardinality
4 anomaly
4회 #43
정규화된 엔티티, 속성, 관계를 시스템의 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법은?
1 인덱스 정규화2 반정규화
3 집단화
4 머징
4회 #45
정규화의 필요성으로 거리가 먼 것은?
1 데이터 구조의 안정성 최대화
2 중복 데이터의 활성화
3 수정, 삭제 시 이상 현상의 최소화
4 테이블 불일치 위험의 최소화
4회 #56
제 3정규형에서 보이스코드 정규형(BCNF)으로 정규화하기 위한 작업은?
1 원자 값이 아닌 도메인을 분해
2 부분 함수 종속 제거
3 이행 함수 종속 제거
4 결정자가 후보키가 아닌 함수 종속 제거'OS Computer Science' 카테고리의 다른 글
240221 데이터베이스 구축 : 뷰 (0) 2021.02.24 240221 데이터베이스 구축 : 관계대수 (0) 2021.02.24 240221 데이터베이스 구축 : SQL (0) 2021.02.24 230221 소프트웨어 개발 : DB (0) 2021.02.23 230221 소프트웨어 개발 : 소프트웨어 공학 (0) 2021.02.23 -