ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 정규형 : 조인 종속성 제거

     

    출처 : nirsa.tistory.com/107

     

    [DB 이론] 데이터베이스 정규화란? (이상 문제, 함수적 종속, 정규화 과정)

    데이터베이스 정규화란? 이상 문제를 해결하기 위해 속성들 끼리의 종속 관계를 분석하여 여러개의 릴레이션으로 분해하는 과정 입니다. 일반적으로 테이블을 여러개로 분해하면 속도는 상대

    nirsa.tistory.com

     


    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 rollback

    3 cardinality

    4 anomaly

     

    4회 #43

    정규화된 엔티티, 속성, 관계를 시스템의 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법은?
    1 인덱스 정규화

    2 반정규화

    3 집단화

    4 머징

     

    4회 #45

    정규화의 필요성으로 거리가 먼 것은?

    1 데이터 구조의 안정성 최대화

    2 중복 데이터의 활성화

    3 수정, 삭제 시 이상 현상의 최소화

    4 테이블 불일치 위험의 최소화

     

    4회 #56

    제 3정규형에서 보이스코드 정규형(BCNF)으로 정규화하기 위한 작업은?

    1 원자 값이 아닌 도메인을 분해
    2 부분 함수 종속 제거
    3 이행 함수 종속 제거
    4 결정자가 후보키가 아닌 함수 종속 제거

    댓글

Designed by Tistory.