SQLD : 정규화, 관계와 조인의 이해

커비·2024년 10월 19일
0

SQLD

목록 보기
4/7
post-thumbnail

📌 정규화란?

데이터에 대한 중복을 제거하고 데이터가 관심사별로 처리되도록 엔터티를 쪼개 성능을 향상(조회/입력/수정/삭제 등) 시키는 활동

  • 단, 정규화가 대체적으로 좋은 것이며 경우에 따라서는 반정규화가 이득일 때도 있음
  • 정규화시 입력/삭제/수정은 성능 향상되며 조회는 성능 향상 혹은 저하될 수 있음

📍 정규화 과정

실제로 처리하는 범위는 3NF 정도까지임

비정규형 ▶️(도메인 원자성) ▶️ INF(1차 정규화) ▶️(부분종속성제거) ▶️ 2NF(2차 정규화) ▶️(이행종속성제거) ▶️ 3NF(3차 정규화) ▶️(결정자 제거) ▶️ BCNF ▶️(다치종속) 4NF(4차 정규화) ▶️(조인속성) 5NF


📌 함수적 종속이란?

정규화를 하기 위해 알아야하는 개념으로 어떤 기준 값(컬럼)에 의해 데이터가 종속되는 현상을 의미

함수적 종속 예시

결정자(아이디) ▶️ 종속자(이름, 나이, 연봉, 부서ID, 부서명) : 아이디가 나머지 모든 컬럼을 함수종속한다.
결정자(부서ID) ▶️ 종속자(부서명) : 부서ID가 부서명 컬럼을 함수종속한다.


📌 1차 정규화

엔터티에서 다중속성이 있거나 하나의 속성에 여러 속성값이 있으면 원자값으로 쪼개준다.


📌 2차 정규화

  • 2차 정규화는 [1정규형 ▶️ 2정규형(NF)] 형태로 엔터티를 변경하는 활동이다.
  • 식별자에 부분 종속하는 대상을 쪼개어준다.
  • 결정자 전부에 나머지 컬럼이 완전 종속하지 않고 결정자 부분적으로도 종속한다면 쪼개야 한다.

📌 3차 정규화

엔터티에서 일반속성끼리 함수종속이 발생하면 쪼개주어야 함


📌 반정규화(역정규화)

정규화한 데이터를 다시 합쳐서 중복되게 하거나 통합, 분리 등을 수행하는 모델링 방식

  • 테이블 반정규화(테이블 병합, 테이블분활, 테이블추가 등)
  • 컬럼 반정규화(중복컬럼, 파생컬럼, 이력테이블 컬럼 추가 등)
  • 관계 반정규화(중복관계 추가)

📌 조인이란?

식별자를 상속해 이를 이용하여 데이터를 결합해 여러 엔터티에서 필요한 데이터를 한 번에 가져오는 것


📌 계층형 데이터 모델이란?

계층 구조를 가진 데이터를 저장한 모델, 자기 자신의 엔터티와 관계가 발생하는 경우


📌 상호배타적 관계란?

A와 B가 C집단에 소속되었지만, 서로 공통적인 부분이 없는 관계

profile
전공은 컴퓨터공학, 복수전공은 해킹보안학, 직장은 방학(파워 구직중)

0개의 댓글