자격증/SQLD

SQLD (2)

사탕맛사과 2023. 4. 4. 00:08

▶정규화 절차
-제 1 정규화
        -속성 (Attribute)의 원자성을 확보
        -기본 키 (primary)를 설정

-제 2 정규화
        -기본키가 2개 ↑ 으로 이루어진 경우, 부분 함수 종속성을 제게

-제 3 정규화
        -기본키를 제외한 칼럼 간에 종속성 제거
        -이행 함수 종속성 제거

-BCNF
        -기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면서 분해

-제 4 정규화
        -여러 칼럼들이 하나의 칼럼을 종속시키는 경우,
          분해하여 다중값 종속성ㅇ르 제거

-제 5 정규화
        -조인에 의해 종속성이 발생되는 경우 분해

▶정규화의 문제점
-데이터 조회시 Join 유발
    ∴CPU와 메모리를 ↑ 사용
-중첩 루프로 인해 Join의 부하 유발

▶반정규화 (De-Normalization)
-정규화의 문제점 해결
-데이터베이스 성능 ↑ 위해, 데이터 중복 o, 조인을 ↓
-데이터 조회 속도 ↑
-문제점
       └ 데이터 모델의 유연성 ↓
       └ 블록 크기를 넘어설 수도 o
       └  여러 개의 블록을 읽어야 할 경우 디스크 입출력이 ↑ 성능 ↓

▶반정규화를 수행하는 경우
-정규화에 충실하면 종속성, 활용성을 ↑ but 수행 속도가 느린 경우
-다량의 범위를 자주 처리해야 하는 경우
-특정 범위의 데이터만 자주 처리하는 경우
-요약/집계 정보가 자주 요구되는 경우

▶반정규화 절차
-대상 조사 및 검토
        -데이터 처리 범위, 통계성 ... 을 확인해서 반정규화 대상을 조사

-다른 방법 검토
        -반정규화를 수행하기 전에 다른 방법이 있는지 검토
        ex) 클러스터링, 뷰, 인덱스 튜닝, 응용프로그램, 파티션 ...

-반정규화 수행
        -테이블, 속성, 관계 ... 을 반정규화 함

*클러스터링 (Clustering)
-물리적으로 정렬해서 저장하는 방법
-조회 시 인접 블록을 연속적으로 읽기 때문에 성능 ↑

▶반정규화 기법
-계산된 컬럼 추가
-테이블 수직 분할
        -칼럼을 분할하여 새로운 테이블 만듬


-테이블 수평 분할
        -값을 기준으로 테이블 분할


-테이블 병합
        └ 1:1 관계 테이블을 하나로 병합, 성능 ↑
        └ 1:N 관계 테이블을 하나로 병합, 성능 ↑ (데이터 중복 발생)
        └ 슈퍼 타입과 서브 타입 관계 테이블을 통합, 성능 ↑

▶슈퍼 타입 및 서브 타입 변환 방법
-One To One Type
        -슈퍼 타입과 서브 타입을 개별로 테이블 도출
        -테이블 수 ↑, 조인 발생, 관리 어렵

-Plus Type
        -슈퍼 타입, 서브 타입 테이블로 도출
        -조인이 발생하고 관리 어렵

-Single Type
        -슈퍼 타입과 서브 타입을 하나의 테이블 도출
        -조인 성능이 좋고, 관리 편함 but 입출력 성능 ↓

  One To One Plus Single
특징 개별 테이블 유지 슈퍼 + 서브타입
테이블
하나의 테이블
확장성 우수 보통 나쁨
조인성능 나쁨 나쁨 우수
I/O량 성능 좋음 좋음 나쁨
관리용이성 좋지 x 좋지 x 좋음
트랜잭션 유형에
따른 선택 방법
개별 테이블로
접근이 ↑ 경우 선택
슈퍼 + 서브 형식으로
데이터를
처리하는 경우 선택
전체를 일괄적으로
처리하는 경우 선택

▶파티션 (Partition) 기법
-DB에서 파티션을 사용하여 테이블 분할 o
-파티션을 사용하면 논리적으로 하나의 테이블 but 여러 개의 데이터 파일에 분산되어 저장

-Range Partition
        -데이터 값의 범위를 기준으로 파티션 수행

-List Partition
        -특정한 값을 지정하여 파티션 수행

-Hash Partition
        -해시 함수를 적용하여 파티션 수행

-Composite Partition
        -범위와 해시를 복합적으로 사용하여 파티션 수행

▶파티션 테이블의 장점
-데이터 조회 시 액세스 (Access) 범위가 ↓ 때문에 성능이 ↑
-데이터가 분할되어 있기 때문에 I/O (Input / Output)의 성능이 ↑
-각 파티션을 독립적으로 백업 및 복구가 o

▶분산 데이터베이스
-중앙 집중형 데이터베이스
        -시스템 구축 시 ... 한 대의 물리적 시스템에 접속하여 데이터베이스를 사용

-분산 데이터베스
        -물리적으로 떨어진 데이터베이스를 네트워크로 연결하여 작업 처리

▶분산 데이터베이스의 투명성 종류
-분할 투명성
        -하나의 논리적 릴레이션이 분할되어 여러 시스템에 저장되어 있음을 인식할 필요 x

-위치 투명성
        -데이터의 저장 장소를 명시할 필요 x
        -데이터가 어느 위치에 있던 동일한 명령을 사용하여 데이터 접근 가능해야 o

-지역 사상 투명성
        -지역 DBMS와 물적 DB 사이의 사상이 보장됨에 따라 각 지여 시스템 이름과 무관한 이름 사용 o

-중복 투명성
        -DB 객체가 여러 시스템에 중복되어 존재에 무관하게 데이터의 일관성이 유지

-장애 투명성
        -DB가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도 데이터 무결성 보장

-병행 투명성
        -여러 응용 프로그램이 동시에 분산 DB에 대한 트랜잭션을 수행한 경우도 결과에 이상 x

▶분산 데이터베이스 설계 방식

-상향식 설계 방식
        -지역 스키마 작성 후 전역 스키마 작성하여 분산 DB 구축

-하향식 설계 방식
        -전역 스키마 작성 후 지역 사상 스키마 작성하여 분산 DB 구축

▶분산 데이터베이스 장단점
-장점
        -DB 신뢰성과 가용상이 ↑
        -병렬 처리 수행하기 때문에 빠른 응답 o
        -분산 DB를 추가하여 시스템 용량 확장 쉬움

-단점
        -관리와 통제 어렵
        -보안관리 어렵
        -데이터 무결성 관리 어렵
        -DB 설계가 복잡

▶DB와 DBMS

DBMS : 계층형, 네트워크, 관계형 DB를 관리하기 위한 소프트웨어

▶관계형 데이터베이스 집합 연산

▶관계형 데이터베이스 관계 연산
-선택연산 (Selection)
        -릴레이션 조건에 맞는 행 조회

-투영연산 (Projection)
        -릴레이션에서 조건에 맞는 속성 조회

-결합연산 (Join)
        -여러 릴레이션의 공통 속성을 사용해 새로운 릴레이션 만듬

-나누기 연산 (Division)
        -나누는 릴레이션이 가진 속성과 동일한 값을 가지는 행 추출
         나누는 릴레이션 속성 삭제 후, 중복 제거

▶테이블 구조

-기본키 : 유일성, 최소성, not null 만족
-외래키 : 다른 테이블의 기본키를 참조 (Join) 관계 연산 中 결합 연산에 사용
-행 : 테이블에 저장되는 값 (=Tupe)
-칼럼 : 테이블에 저장하기 위한 Field (=Attribute, 속성)