Skip to content

Latest commit

 

History

History
106 lines (80 loc) · 4.94 KB

Data-Nomalization.md

File metadata and controls

106 lines (80 loc) · 4.94 KB

데이터베이스

  • 구조화된 정보나 데이터의 조직화된 모음을 의미한다 ⇒ 컴퓨터 시스템에 전자적으로 저장됨
  • 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합
  • 정보가 들어있는 테이블들을 모아둔 곳을 데이터베이스, DB라고 부름

행과 열로 정보를 기록하는 구조를 테이블(Table)이라 칭한다

데이터 정규화란?

수많은 정보들을 담은 데이터베이스는 정보의 양이 많을수록 메모리에 부담이 됨. 따라서 효율적이고 효과적인 관리 방법이 필요 ⇒ 데이터 정규화를 통해 중복된 데이터 감소, 데이터의 일관성 유지

주로 고전적인 관계형 데이터 모델에서 데이터 정규화를 많이 사용 (Mysql, Oracle, Mssql 등) 데이터 정규화 종류 : 제 1 정규화, 제 2 정규화, 제 3 정규화 등

제 1 정규형 (1NF)

  • 제 1 정규형에서는 모든 열이 오직 하나의 값만 갖는다.
회원번호 이름 강의명 강의료 납부 여부
601 박서윤 Spring 50,000원 1
602 이승준 C++ 45,000원 0
603 임채윤 C, Spring 30,000원, 50,000원 1

↗ 잘못된 예시 / 올바른 예 ↙

회원번호 이름 강의명 강의료 납부 여부
601 박서윤 Spring 50,000원 1
602 이승준 C++ 45,000원 0
603 임채윤 C 30,000원 1
603 임채윤 Spring 50,000원 0

제 2 정규형 (2NF)

  • 제 2 정규형은 현재 테이블 주제와 관련없는 항목을 다른 테이블로 뺀 상태
  • 대표값이 아닌 열이 대표값 열에 ‘완전히’ 종속되어 있다면, 변경이 어렵기에 이를 분리하여 관리
회원번호 이름 강의명 강의료 납부 여부
601 박서윤 Spring 50,000원 1
602 이승준 C++ 45,000원 0
603 임채윤 C 30,000원 1
603 임채윤 Spring 50,000원 0

↗ 잘못된 예시 / 올바른 예 ↙

회원번호 이름 강의명 납부 여부
601 박서윤 Spring 1
602 이승준 C++ 0
603 임채윤 C 1
603 임채윤 Spring 0
강의명 강의료
Spring 50,000원
C++ 45,000원
C 30,000원
  • 장점 : 값을 수정 및 변경할 때 반복 작업을 피할 수 있음
  • 단점 : ‘602번 회원은 강의료를 얼마 냈는가?’ 와 같은 질문에 빠르게 즉답하지 못하고 다른 테이블의 데이터를 참조해야 한다. ⇒ 이러한 단점으로 인해 정규화를 하지 않는 비정규화 DB가 생겨났고, 정규화를 하지 않으면서 그로 인해 생기 단점은 감수하고 넘어감

제 3 정규형 (3NF)

  • 제 3 정규형은 일반 항목에 종속되어 있는 항목을 다른 테이블로 뺀 상태
  • 대표값이 아닌 열이 대표값에 ‘이행적’으로 종속되어 있어서 혹시나 값을 변경해야 할 상황이 올 수 있기에 이를 분리하여 관리한다.
강의명 강의료 강사 출신 직장
Spring 50,000원 스OO 우아한형제
C++ 45,000원 터OO 카카오
C 30,000원 디OO 네이버

↗ 잘못된 예시 / 올바른 예 ↙

강의명 강의료 강사
Spring 50,000원 스OO
C++ 45,000원 터OO
C 30,000원 디OO
강사 출신 직장
스OO 우아한형제
터OO 카카오
디OO 네이버
  • 장점 : 강사가 이직을 한 경우, 변경해야 하는 상황이 생겨버리는데 이런 상황에 수정이 쉽다
  • 단점 : ‘Spring 강사의 출신 직장은?’ 과 같은 질문에 바로 답하지 못하고 ‘Spring 강사는? → 스OO → 스OO 직장은? → 우아한형제’ 이렇게 나누어서 값을 도출해 내야한다.

그 외

  • 제 4 정규형 (4NF) - 다중 값 종속성을 제거하는 것이 목적.

  • 제 5 정규형 (5NF) - 조인 종속성을 제거하는 것이 목적

  • 데이터 정규화는 데이터의 정렬, 탐색, 분류에는 효과적일 수 있으나 ‘빅데이터’에는 비효율적인 단점을 갖고 있음 ⇒ 새로운 형태의 NoSQL (비관계형 DB; Not Only SQL) 등장

    • 거대한 Map 형태이다.
    • 대용량 데이터 처리에 용이하고 관계형 DB보다 읽기, 쓰기가 빠르다.
    • 유연한 데이터 모델링
    • 뛰어난 확장성으로 검색에 유리함
    • 응답속도, 처리효율 등 성능이 우수함
    • 복잡한 데이터 구조 표현 가능함