SQLD 정규화&반정규화

freakyfrog98·2022년 9월 8일
0

SQLD 자격증

목록 보기
3/5
  • 이상현상 Anomaly
  • 함수적 종속성
    • A 를 통해 B 가 정해진다면 이를 A→B 로 표현하고 이때 A 를 결정자라 한다.
  • 제1정규화
    • pk 를 잡는 과정
    • 한개의 속성으로 유일성 최소성 만족하는 기본키 생성 가능?
    • 없으면 복합키로 변경
    • pk의 유일성을 만족시키자
  • 제2정규화
    • pk, fk 모두에 의해 다른 칼럼들이 장악되고 있느냐
    • 부분 함수 종속성
      • 기본키가 2개 이상의 칼럼으로 이루어진 경우에만 발생
    • 기본키가 아닌 칼럼은 기본키의 한 칼럼만 사용해서 알아낼 수 있으면 안된다.
  • 제3정규화
    • 일반 속성들 중에 다른 일반 속성을 포함하는 속성이 있는지
    • 이행 함수 종속성
      • 기본키를 제외하고 칼럼간에 종속성이 발생하는 경우
  • BCNF
    • 복합키의 일부가 다른 속성에 종속되는 경우
    • BCNF 위배하는 X→Y 에 대해 테이블을 생성하고 Y를 제외한(X는 포함) 테이블을 남긴다.
  • 정규화의 문제점
    • 중복 데이터를 많이 제거하지만 조인 시에 리소스가 많이 소모된다.
    • 인덱스와 옵티마이저를 통해 비효율을 해결
  • 반정규화
    • 수행속도가 너무 느릴때
    • 반복 수행되는 데이터
    • 요약/집계가 많이 사용될때
    • 다량의 범위를 자주 처리해야할 때
  • 반정규화 절차
    • 대상 조사 및 검토 - 다른 방법 검토(뷰,클러스터링,인덱스 등) - 반정규화 수행
    • 클러스터링 인덱스
      • 인덱스 정보를 저장할때 물리적으로 정렬해서 저장 → 조회시 인접 블록들을 연속적으로 읽기 때문에 성능이 향상된다.
  • 반정규화 기법
    • 계산된 칼럼 추가
      • sum avg 등을 미리 계산하고 그 결과를 특정 칼럼에 추가
    • 테이블 수직분할
      • 하나의 테이블을 두 개 이상의 테이블로 분할(칼럼123/칼럼456 나눠서 테이블 생성)
    • 테이블 수평분할
      • 로우를 기준으로 테이블을 분할
        • 학생테이블1 학생테이블2
    • 테이블 병합
      • 슈퍼타입과 서브타입
        • onetoone(슈퍼타입,서브타입1,서브타입2..)/plus(슈퍼타입,서브타입)/single(하나의 테이블)
  • 파티션 기법
    • 하나의 테이블을 데이터값 범위, 특정 값, 해시함수 등을 이용해 여러 개의 데이터파일로 분산 저장하여 데이터 조회시 액세스 범위가 줄어들기때문에 성능이 향상된다.
  • 중앙 집중형 데이터베이스
    • 하나의 물리적 시스템에 dbms를 만들고 여러 사용자가 이에 접속하여 db를 사용
  • 분산 데이터베이스
    • 개인이 서버를 통해 단일 데이터베이스에 접근, 사용자는 이것이 네트워크로 분산되어있는지를 확인 불가 → 투명성
      • 투명성의 종류들 구분하자
  • 분산 데이터베이스 구축 방식
    • 상향식 설계 방식
      • 지역 스키마 작성 후 전역 스키마 작성
    • 하향식 설계 방식
      • 전역 스키마 작성 후 해당 지역 스키마 작성
profile
반 걸음씩 이라도 가보자.

0개의 댓글