# CHAPTER 4 데이터베이스 - 정규화

금성·2022년 12월 8일
0

CS 전공지식 노트

목록 보기
12/19

SECTION 4.3 - 정규화

ERD와 정규화에 대해 이야기하기전에 관계형 데이터베이스에 관해 살펴보자

쉽게 생각하면 엑셀 표에 데이터를 저장하는 것과 동일

실제로 각 데이터 항목들은 행( row )에 저장되고, 항목의 속성은 열( column )이라고 표현

왜 관계라는 이름이 붙여졌을까?...

  • 관계형 데이터베이스에서의 관계

    각 테이블의 행과 행이 연결되는 관계를 맺을 수 있기 때문

    우리는 하나의 테이블에 필요한 모든 필드를 넣고 모든 데이터 항목을 저장할 수 있지만, 이렇게 될경우 데이터들이 중복되어 저장되어 비효율적으로 될수 있다.

    당장에 문제는 없어보이지만, 예를 들어 위 테이블에서 "노아" 라는 고객이 서울로 이사를 간다면 어떻게 될까?..

    하지만 우리는 테이블 간의 관계는 일 대 일(1:1), 일 대 다(1:N), 다 대 다(N:N)의 관계에 대해 알고 있고, 관계형 데이터베이스 모델에서는 다음과 같이 연결할 수 있다.

    • 앞서 설명한 PK와 FK라는 개념을 이용해 맺어질 수 있음
      • 외래 키( FK )는 기본 키( PK )를 참조하는 필드로 그림에서는 주문 테이블의 고객 번호 필드이고 각 테이블의 행을 연결시켜주는 역할

관계형 데이터베이스를 사용하면 테이블을 분리하고 관계를 형성해 데이터를 효율적으로 관리할 수있게 한다. 그리고 이 테이블을 분리하고 중복 데이터를 제거하는 과정을 정규화라고 한다.

  • 정규화 ( Normalization )

    정규화의 기본 목표는 테이블 간 중복된 데이터를 허용하지 않는 것

    무결성을 유지할 수 있으며, DB의 저장용량도 줄일 수 있음

    중복된 데이터를 왜 허용하면 안되는가?

    중복된 데이터들로 인해 이상 현상 ( Anomaly )이 발생

  • 이상현상

    • 갱신 이상 ( Modification Anomaly )
      중복된 데이터 중 일부를 갱신할 때 의도치 않은 데이터가 갱신됨으로써 생기는 데이터의 불일치
    • 삽입 이상 ( Insertion Anomaly )
      새 데이터를 삽입할 때 의도치 않은 데이터가 삽입됨으로써 생기는 데이터의 불일치
    • 삭제 이상 ( Deletion Anomaly )
      데이터를 삭제할 때 의도치 않은 데이터까지 삭제됨으로써 생기는 데이터의 불일치

    중복제거를 위해 정규화를 통해 데이터를 잘개 쪼개나간다고 생각하자

    그럼 단계별로 나누어지는 정규화의 과정을 각 단계별로 알아보자.

  • 제 1 정규화

    속성 하나는 하나의 속성값만을 가져야 한다는 1차 정규형에 위배

    이를 쪼개주는 것을 원자값을 갖는다고 하며 이것이 제 1정규화

    제1 정규화를 거치면 위와 같다.

  • 제 2 정규화

    제1 정규화를 거친 테이블을 보면 중복 데이터로 인해 학생이름과 나이로 ROW를 구분할수 없게 된다. 앞에서 이야기한 key를 적용시키면 [학생이름, 수강과목] 기본키로만 ROW를 구분할 수 있게 된다.

    다르게 말하면 [학생이름, 수강과목]만 알아도 나이를 알 수 있는 것
    더나아가 문제는 나이는 학생이름에 종속되어져 있기 때문에 학생 이름만 알면 나이를 알 수 있음
    -> 기본키 중에 특정 컬럼에만 종속된 컬럼이 존재할 경우 2차 정규형에 위배

    제 2 정규화를 거치면 위와 같다.

  • 제 3 정규화

    릴레이션이 2정규화를 만족하고 주요키에 이행적 종속관계 제거

    • 이행적 종속관계

      A->B이고 B->C일 때 A->C를 만족하는 관계

    고객 번호를 알면 칼럼들의 속성을 찾아낼 수 있음. 하지만 자세히 보면 등급은 고객 번호에 의해 결정되고 할인율은 등급에따라 결정됨
    (A → B , B → C) 논리적으로 보면 고객 번호가 할인율을 결정 (A → C)
    -> 이행 함수 종속 발생

    제 3정규화를 거치면 위와 같다. (이행 함수 종속 제거)

  • 정리

    • 릴레이션에 속한 모든 속성값은 원자값을 만족 - > 제 1정규화
    • 1NF에서 2NF를 진행할 때 부분 함수 종속성을 제거하여 완전 함수적 종속 관계로 만듦 -> 제 2정규화
    • 릴레이션이 2NF이고 키가 아닌 모든 속성이 주요키에 이행적 종속 관계를 제거 -> 제3 정규화

    ERD

    시스템의 엔티티들이 무엇이 있는지 어떤 관계가 있는지를 나타내는 다이어그램

  • ERD 요소

    기본요소는 entity, attribute, relationship이 있음.

    • Entity : 어떤 시스템인지에 따라 Entity는 사람, 장소, 사건(이벤트), 오브젝트가 될 수도 있음
    • Weak Entity : 다른 엔티티에 의존적인 엔티티
    • Attribute : 특성, 엔티티의 성격, 관계, 또다른 속성
    • Mutlivalued Attribute : 한 값 이상의 값
    • Relationship : 엔티티 간의 상호작용
      ....

profile
내일부터 공부 해야지

0개의 댓글