ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터베이스 정규화란? (1NF, 2NF, 3NF, BCNF, 4NF)
    개발 관련 자격증 정보 2019. 11. 17. 17:37
    반응형

    데이터베이스 정규화란

    데이터 중복을 최소화 혹은 없애기 위한 작업을 의미한다.

    정규화의 단계는 1NF 부터 시작해서 2NF, 3NF, BCNF, 4NF, 5NF 단계로 이루어 진다.

    주로 3NF 단계에서 정규화 작업은 끝이나며, 너무 많은 정규화 작업은 JOIN 으로 인하여 성능을 떨어트릴 수 있으므로 주의하여야 한다.

    아래의 테이블로 예를 들어보자.

    1NF

    각 열의 데이터가 하나의 값만 가지고 있는 경우를 의미한다. 특정 테이블에 아래와 같은 데이터가 있다고 가정하자.

     사용자 고유 식별번호 이름 보유 코인
    0001 홍길동 비트코인
    0002 임꺽정 비트코인,리플
    0003 이순신 리플

    혹은 다음과 같을 수도 있다.

    사용자 고유 식별 번호 이름 보유 코인1 보유 코인2
    0001 홍길동 비트코인  
    0002 임꺽정 비트코인 리플
    0003 이순신 리플  

    1NF 의 법칙에 따라 기존의 테이블은 "사용자 고유 식별번호" PK 키 기준으로 변경되어야 한다.

    1NF 결과

    사용자 고유 식별번호 이름 보유 코인
    0001 홍길동 비트코인
    0002 임꺽정 비트코인
    0002 임꺽정 리플
    0003 이순신 리플

     

    2NF

    중복되는 데이터에 대해서 다른 테이블로 분리되어 있을 때(완전 함수 종속 관계)를 의미한다.

    1NF 정규화 식에 의해 각 열의 컬럼에는 하나의 데이터만 들어가게 되었있다.

    그러나 위의 1NF 에서는 임꺽정 사용자의 레코드가 2개나 차지하고 있다. 이 부분을 테이블을 분리하여 데이터 중복을 최소화 한다.

    2NF 결과

    사용자 고유 식별번호 이름
    0001 홍길동
    0002 임꺽정
    0003 이순신

     

    사용자 고유 식별번호 보유 코인
    0001 비트코인
    0002 비트코인
    0002 리플
    0003 리플

     

    3NF

    2NF 를 만족하며, PK 컬럼이 아닌 컬럼들이 서로 종속되지 않을 때를 의미한다. 2NF 까지 만족되어진 또다른 테이블이 아래와 같이 있다.

    사용자 고유 식별번호 코인 거래 가능 여부 코인 명
    0001 비트코인
    0002 비트코인
    0002 아니오 리플
    0003 아니오 리플

    이 테이블의 "코인 거래 가능 여부" 필드는 "사용자 고유 식별번호" 가 아닌 "코인 명" 에 종속되므로 3NF 를 만족하지 못한다.

    따라서 아래와 같이 분리한다.

    3NF 결과

    사용자 고유 식별번호 코인 명
    0001 비트코인
    0002 비트코인
    0002 리플
    0003 리플

     

    코인 명 코인 거래 가능 여부
    비트코인
    리플 아니오

     

    BCNF

    어떤 테이블의 determinant(결정자) 가 후보키 인 경우를 의미한다.

    또다른 테이블이 아래와 같이 있다.

    이름 소유 코인 명 코인 회사
    홍길동 비트코인 B
    홍길동 리플 R
    임꺽정 비트코인 B
    임꺽정 이오스 E
    임꺽정 이더리움 I
    이순신 리플 R
    이순신 이더리움 I

    위 테이블의 후보키는 "이름", "소유 코인 명" 이다. 따라서 두 컬럼을 통해 레코드를 구별할 수 있다.

    그러나 코인회사에 의해 소유 코인 명이 결정되는 관계가 존재하여 BCNF 를 만족하지 않으므로, 아래와 같이 분리해야 한다.

    BCNF 결과

    이름 소유 코인 명
    홍길동 비트코인
    홍길동 리플
    임꺽정 비트코인
    임꺽정 이오스
    임꺽정 이더리움
    이순신 리플
    이순신 이더리움

     

    소유 코인 명 코인 회사
    비트코인 B
    리플 R
    이오스 E
    이더리움 I

     

    4NF

    다중값 종속을 제거하는 과정을 의미한다. 다치종속(MVD) 개념을 통해 정의된다.

    다음과 같이 코인 회사와, 배급되는 코인 명, 설명이 있다.

    코인 회사 배급 코인명 설명
    B 비트코인  메이저 코인입니다.

    이더리움

    거래가 많이 일어납니다.
    R 리플 마이너 코인입니다.
    거래가 적당히 일어납니다.
    전망이 있습니다.

    위 테이블을 레코드로 표현하면, 아래와 같다.

    이 때 B 배급사의 배급 코인 명이 변경되면 3개의 레코드가 변경되어야 한다.

    코인 회사 배급 코인 명 설명
    B 비트코인  메이저 코인입니다.
    B 비트코인 거래가 많이 일어납니다.
    B 이더리움 메이저 코인입니다.
    B 이더리움 거래가 많이 일어납니다.
    R 리플 마이너 코인입니다.
    R 리플 거래가 적당히 일어납니다.
    R 리플 전망이 있습니다.

    위 문제를 해결하기 위해, 테이블을 4NF 정책에 맞게 변경한다.

    4NF 결과

    코인 회사 배급 코인 명
    B 비트코인
    B 이더리움
    U 리플

     

    코인 회사 설명
    B 메이저 코인입니다.
    B 거래가 많이 일어납니다.
    R 마이너 코인입니다.
    R 거래가 적당히 일어납니다.
    R 전망이 있습니다.

     

     

     

    본문의 출처 : https://mozi.tistory.com/110

    반응형

    댓글

Designed by Tistory.