본문 바로가기
  • 저희는 평생 개발할 운명이걸랑요
Tech.log/데이터베이스

[정규화]

by SpaciousKitchen 2021. 5. 21.

정규화


관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다. 
 1NF 부터 시작해서 2NF, 3NF, BCNF, 4NF, 5NF 단계까지로 나누어진다. 주로 3NF 단계에서 정규화 작업에서 종료된다.
만일 너무 많은 정규화가 이루어 진다면 JOIN을 해야하기 때문에 성능을 떨어트린다.

 

탄생 배경

이상 문제
삽입이상 :데이터를 저장할 때, 잘못된 정보가 함께 삽입되는 경우
삭제이상: 튜플을 삭제함으로써 유지되어야하는 정보까지 연쇄적으로 삭제되는 경우
갱신이상:중복된 튜플 중 일부의 속성만 갱심함으로 정보의 모순성이 발생할 경우

 


삽입이상 :
신입 학생이 입학하여 학번과 학년 등을 입력하려 했으나 아직 과목이 정해지지 않았거나, 시험을 보지 않아 성적이 없는 상태이기 때문에 불필요한 정보(과목 이름, 성적)를 함께 삽입 해야 함

삭제이상:
학생 번호가 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 정규형을 만족할 수 없다.

수정 된 테이블


 

제2 정규형
기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제2 정규형이다.
제2 정규형은 부분 함수 종속을 제거 한다. 아래 표에서 학번은 학부와 등록금을 결정할 수 있고, 학번과 과목 코드는 성적을 결졍할 수 있습니다. 

 

 

함수(학번, 과목코드)에서 부분 함수인 학번 혼자서 학부와 등록금을 결정할 수 습니다.
때문에 성적, 학부, 등록금에 모두 영향을 주는 학번을 기준으로 릴레이션을 아래와 같이 분리 시킨다.

 


삽입이상:새로운 학부가 생기는 경우 등록된 학생(학번)이 없다면 학번속성이 NULL이 되므로 삽입할 수 없다.
갱신이상:컴퓨터공학부 등록금이 400으로 오르는 경우 20800399, 21500399 둘 모두 바꾸어 주지 않으면 데이터 불일치 문제가 발생한다.
삭제이상:21400001 학번을 가진 학생이 자퇴하는 경우, 기계공학부에 대한 정보가 함께 사라진다.

 

 

제3 정규형

기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 이행 제 3정규화 이다.
현재 아래 테이블은 학번(X)이 학부(Y)를 결정하고, 학부(Y)가 등록금(Z)을 결정 하고, 이행 규칙에 따라 학번(X)이 등록금(Z)을 결정할 수 있다.

 

4.BCNF
3차 정규형을 조금 더 강화한 버전이다.테이블의 모든 결정자 (determinant) 가 후보키 (candidate key)이어야 한다.
더보기

용어

튜플(Tuple)
테이블을 구성하는 행을 말합니다.
한 개체의 데이터입니다.
위 회원 테이블에서 (‘ehclub’, ‘장언휴’, ‘남’, 20, 1)은 하나의 튜플입니다.
따라서 위 회원 테이블에는 5개의 튜플이 존재합니다.
튜플의 수를 Cardinality 라고 부릅니다.

 

속성(Attribute)
테이블을 구성하는 열에 해당합니다.
필드, 항목을 의미합니다.
위 회원 테이블에서 5개의 속성(아이디, 이름, 성별, 나이, 부서번호)이 있습니다.
속성의 개수를 차수(Degree)라고 부릅니다.

 

도메인(Domain)
속성이 가질 수 있는 값의 집합을 말합니다.
위 회원 테이블에서 성별 속성의 도메인은 ‘남’과 ‘여’입니다.

 

관계(Relation)의 특징
모든 튜플은 서로 다른 값을 갖는다.
각 속성은 릴레이션 내에서 유일한 이름을 갖고 속성의 순서는 의미가 없다.
하나의 릴레이션에서 튜플의 순서는 없다.
모든 속성 값은 원자 값이다.
관계 스키마와 관계 인스턴스로 구성
관계 스키마는 하나의 관계의 논리적 구조를 기술한 것이다.
관계 인스턴스는 실제 값을 나타낸 것이다.

 

키(Key)
튜플을 구분할 때 사용하는 속성을 말합니다.

 

주요 키(Primary Key)
튜플을 구별할 수 있는 속성입니다.
무결해야 합니다. (NULL일 수 없음)
유일해야 합니다.
기본 키라고 부릅니다.
위 회원 테이블에서 아이디가 주요 키입니다.

 

후보 키(Candidate Key)
튜플을 구별할 수 있는 키들을 말합니다.
주요 키로 사용할 수 있는 키들입니다.
유일성과 최소성을 보장합니다.

 

대체 키(Alternate Key)
후보 키가 여러 개일 때 주요 키를 제외한 나머지 후보 키를 말합니다.
보조 키라고 부릅니다.

 

외래 키(Foreign Key)
관계에서 한 쪽에서 참조하고 있는 주요 키를 상대에서는 외래 키라 부릅니다.
관계형 데이터 모델에서 하나의 관계의 외래키는 참조하는 관계의 기본 키와 대응하여 참조 관계를 표현하는 주요한 도구
주요키를 포함하는 릴레이션이 참조 릴레이션, 외래키를 포함하는 릴레이션이 참조하는 릴레이션

 

무결성
개체 무결성과 참조 무결성이 있습니다.
개체 무결성은 관계(Relation)에서 주요 키를 구성하는 속성이 NULL이거나 중복 값이 없어야 하는 특징을 말합니다.
참조 무결성은 외래 키 값은 NULL이거나 참조 관계(Relation)의 주요 키와 같아야 하는 특징을 말합니다.
따라서 참조 무결성은 관계(Relation)은 참조할 수 없는 외래 키를 갖을 수 없습니다.

 

슈퍼 키(Super Key)
하나의 관계에 있는 속성들의 집합으로 구성한 키
관계를 구성하는 모든 튜플에 유일성을 보장하지만 최소성은 보장하지 않는다.

 

출처: https://ehpub.co.kr/tag/%ED%9B%84%EB%B3%B4-%ED%82%A4candidate-key/

 

 

 

'Tech.log > 데이터베이스' 카테고리의 다른 글

[Statement VS Prepared Statement]  (0) 2021.05.22
[트랜잭션이란?]  (0) 2021.05.22
[Primary index vs Secondary index vs Composite index]  (0) 2021.05.21
[데이터 베이스]  (0) 2021.05.21
[ DB ] 관계 데이터 모델  (3) 2021.04.24

댓글