ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DB이론] 2. 관계 기수성 ~ 정규화
    DB 2016. 8. 25. 17:05
    반응형

    관계의 형태에는 기수성

     

    다대일 (Many to One) M:1

    다대다 (Many to Many) M:M

    일대일 (One to One) 1:1

     

    대부분의 관계가 다대일 관계

     

    1:1 관계는 실제로는 동일한 엔터티일 경우가 많다(속성을 분리하여 생성한 엔터티)

    1:1 관계가 많이 나타난다면 엔터티가 명확하게 정의되지 않았음을 의미한다.

    M:M 다 풀려지지 않은 관계

     

    정규화란?

     - 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다. 데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다. 일반적으로 정규화란 크고, 제대로 조직되지 않은 테이블들과 관계들을 작고 잘 조직된 테이블과 관계들로 나누는 것을 포함한다. 정규화의 목적은 하나의 테이블에서의 데이터의 삽입, 삭제, 변경이 정의된 관계들로 인하여 데이터베이스의 나머지 부분들로 전파되게 하는 것이다. - wiki

    제 1 정규화

     - 모든 속성은 반드시 하나의 값을 가져야 한다(반복형태가 있어서는 안됨)

    제 1 정규화 과정을 거쳐서 제 1 정규형 만족

    -> 어떤 속성이 두개 이상의 값을 가지면 제 1 정규형이 아니다.

     

     - 테이블에 있는 모든 속성의 도메인이 원자값

    -> 이말인 즉슨 A라는 학생은 컴퓨터공학과인 동시에 경영학과 이므로 학생 테이블에 학번과 성명이 중복되서 나타나기 때문에 이를 해소하기 위해 제 1 정규화를 한다! <- 이거 한번 더 읽으셈

     

    ex) 학생들의 정보가 저장된 학생 테이블이 있다고 가정하자.

    이 학생 테이블에는 학생들의 정보가 이름, 학번, 생년월일, 학과 컬럼으로 이루어져 있을 때

    어느 학생의 학과가 두개일 때(이 학생은 복수전공) 테이블에 저장되는 정보를 살펴보면

    학생 테이블

    학번 성명 학과
    201111520 A 컴퓨터공학과
    201111520 A 경영학과
    201055623 B 토목공학과

     

    학생 테이블

    학번 성명
    201111520 A
    201055623 B

    학생학과정보

    학번 학과
    201111520 컴퓨터공학과
    201111520 경영학과
    201055623 토목공학과

     

    학번과 성명이 한번씩 중복되어 있었기 때문에 중복을 줄이기 위해 학생테이블과 학생학과정보 테이블로 나눠서 각 학번에 해당하는 학생들의 정보를 저장한다. 그러면 성명이 중복되는 현상은 피할수 있다.

    학생학과정보 테이블의 기본키가 학번, 학과 이므로 학생학과정보테이블은 두개의 기본키중 하나의 속성이 중복되지만 일반 속성이 중복되는 것은 막을수 있다.

    제 1 정규화 - 모든 Attribute는 반드시 하나의 값을 가져야 한다.

    (반복 형태의 제거) - 모든 도메인의 속성값이 원자값?

                            - 모든 속성의 도메인이 원자값?

    이런 논리 모델에서 제 1정규화는 필요없고

    2정규화 시행 ->

    제 2 정규화 - 모든 Attribute는 반드시 UID 전부에 종속 되어야 한다.

    (UID 일부에만 종속되어서는 안된다)

     

    수강등록 엔터티의 교수번호, 강좌명, 학점, 학점 속성은 학번이 아니라 강좌번호에 종속되어 있으므로

    강좌번호 엔터티에 옮긴다.

    <제 2 정규형의 형태>

    제 3 정규화 - UID가 아닌 모든 Attribute간에는 서로 종속 될 수 없다.

    강좌번호에 강좌명이 종속되고 교수번호에는 교수명과 과코드 학과명이 종속, 학점에는 학점설명이 종속되므로 따로 엔터티로 떼어내 관계로 연결한다.

    제 3정규화를 적용한 형태

     

    반응형

    댓글

Designed by Tistory. Flag Counter