ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이상현상 & 정규화?
    학교 수업/데이터베이스 2020. 4. 26. 17:52

    이상현상(Anomaly)


    - 개념: 릴레이션 조작 시 불필요한 데이터의 중복으로 발생하는 예기치 않은 현상


    - 종류

    ① 삽입 이상 : 데이터 삽입 시 원하지 않는 값이 함께 삽입되는 현상

    ② 삭제 이상 : 한 튜플 삭제 시 원하지 않는 값이 연쇄 삭제되는 현상

    ③ 갱신 이상 : 중복 튜플의 속성값을 갱신 시 일부 튜플의 속성값만 변경되는 현상 



    정규화(normalization)


    - 개념: 잘못 설계한 관계형 데이터베이스를 더 작은 속성 집합으로 분해하여 바람직하게 만드는 과정

        즉, 이상 현상이 제거된 릴레이션으로 만들어 과는 과정


    - 목적

    ① 어떤 릴레이션이라도 데이터베이스 내에서 표현 가능하도록 만듬

    ② 릴레이션에서 바람직하지 않은 삽입, 삭제, 갱신이상이 발생하지 않도록 함

    ③ 보다 간단한 관계연산에 기초하여 검색 알고리즘을 효과적으로 만듬


    - 정규화의 단계


    1, 제1정규형(1NF, First Normal Form) 

    : 어떤 릴레이션 R의 모든 도메인들의 값이 오직 원자값(atomic value)만  가짐


    → atomic 하지 않은 도메인이 사용될 경우 질의어 & 저장장치가 복잡해짐

      데이터의 중복된 저장공간 사용을 유도


    2. 제2정규형(2NF)

    : 어떤 릴레이션 R이 1NF를 만족하면서, 릴레이션에 존재하는 부분 함수적 종속을 제거하여 모든 속성이

      기본키에 완전 함수 종속


    부분 함수적 종속?

    기본키가 복합속성으로 구성될 때 구성 속성들 중 하나에만 종속되는 속성



    예를 들어, 다음과 같은 relation이 주어질 때 

    주문수량에 경우 이 relationprimary key (주문번호, 품목코드)에 종속되어 

    둘 중 하나 또는 두개가 모두 변경될 경우 수량 또한 바뀌게 된다

    하지만 품목단가 속성에 경우, primary key에 존재하는 속성 중 품목코드에만 종속한다

    , 주문번호가 변경되더라도 품목단가는 변경되지 않는다

    이를 부분적 함수 종속 관계라고 한다.


    3. 제3정규형(3NF)

    : 어떤 릴레이션 R이 2NF를 만족하면서, 릴레이션을 구성하는 속성 간 이행 함수적 종속이 없음


    이행 함수적 종속?

    속성 A,B,C 사이에서 A→B, B→C이면 A→C인 관계


    함수 종속 관계 표현?

    (A→B : B가 A에 종속한다. A를 결정자 B를 종속자라고 한다.)


    예를 들어 학번 → 지도교수, 지도교수 → 학과 이면 결과적으로 학번 → 학과 성립


    4. 보이스/코드 정규형(BCNF) , 강한 제3정규형

    : 어떤 릴레이션 R이 3NF를 만족하면서, 모든 결정자가 super key인 경우


    5. 제4정규형(4NF)

    : 어떤 릴레이션 R이 BCNF를 만족하면서, 릴레이션에서 다치 종속을 제거함


    다치 종속?

    두 속성이 1대다 대응이 되는 경우


    예를 들어, '학번'과 '수강과목' 속성이 있을 때

    한 학생이 여러 과목을 수강할 수 있는 경우 하나의 '학번'은 여러개의 '수강과목'에 대응


    다치 종속 관계 표현?

    (A→→B : B가 A에 다치 종속한다.)


    6. 제5정규형(5NF)

    : 어떤 릴레이션 R이 4NF를 만족하면서, 후보키를 통하지 않은 조인 종속을 제거함


    조인 종속?

    릴레이션 R의 속성이 A,B, ..., Z가 있다고 할때, 릴레이션 R이 자신의 프로젝션 A,B,,...,Z 를 

    조인한 결과와 똑같은 경우



    그림으로 보면





    '학교 수업 > 데이터베이스' 카테고리의 다른 글

    sql문 연습사이트  (0) 2020.06.26
    뷰?  (0) 2020.04.24
    트랜잭션?  (0) 2020.04.24
    관계 데이터베이스?  (0) 2020.04.21
    데이터베이스란?  (0) 2020.04.21

    댓글

Designed by Tistory.