본문 바로가기

Computer Science/Database

SQLD 정리 1

728x90

sqld-1

1과목 Section 01 Data Modeling

데이터 모델링의 특징

  1. 추상화 : 공통적인 특징을 찾고 간략하게 표현
  2. 단순화 : 누구나 이해할 수 있게 표현
  3. 명확 : 모호하지 않고 명확하게 해석되어야 한다.→ 한 가지 의미를 지녀야 한다.

데이터 모델링의 단계

  1. 개념적 모델링
    1. 추상화 수준이 가장 높은 업무 측면에서의 모델링
  2. 논리적 모델링
    1. 식별자 정의, 관계, 속성 등을 표현
    2. 정규화를 통해 재사용성 높임
  3. 물리적 모델링
    1. 테이블, 인덱스 등을 생성
    2. 성능, 보안, 가용성 등을 고려하여 데이터베이스 구축

데이터모델링 관점

  • 데이터 : 구조 분석, 정적 분석
  • 프로세스 : 시나리오 분석, 도메인 분석, 동적 분석
  • 데이터와 프로세스 : CRUD 분석

ERD 작성 절차

  1. 엔터티 도출하고 그린다
  2. 엔터티 배치한다
  3. 엔터티 간의 관계를 설정한다
  4. 관계명을 서술한다.
  5. 관계 참여도를 표현한다.
  6. 관계의 필수 여부를 표현한다.

데이터 모델링 고려사항

  1. 데이터 모델의 독립성
    1. 중복된 데이터 제거 by 정규화
  2. 고객 요구사항 표현
  3. 데이터 품질 확보
    1. 데이터 표준을 정의하고 표준 준수율 관리

3층 스키마(3-Level Schema) = 3 view layers

  • 데이터베이스의 독립성 확보 → 데이터 복잡도 감소, 데이터 중복 제거, 사용자 요구사항 변경 대응력 향상, 관리 및 유지보수 비용 절감 등
  • 독립성
    • 논리적 독립성 : 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것이다.
    • 물리적 독립성 : 내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것이다.
  • 3층 스키마 구조
    • 외부 스키마 : 사용자 관점, 업무상 관련, 응용 프로그램이 접근하는 데이터베이스를 정의한다.
    • 개념 스키마 : 설계자 관점, 통합 데이터베이스 구조이다.
    • 내부 스키마 : 개발자 관점, 물리적 저장구조, 레코드 구조, 필드 정의, 인덱스 등을 의미

엔터디

  • 업무에서 관리해야 하는 데이터 집합

  • 엔터티의 특징

    • 식별자 : 엔터티는 유일한 식별자가 있어야한다
    • 인스턴스 집합 : 2개 시앙의 인스턴스가 있어야 한다.
    • 속성 : 엔터티는 반드시 속성을 가지고 있다.
    • 관계 : 엔터티느느 다른 엔터니와 최소한 한 개 이상의 관계가 있어야 한다.
    • 업무 : 엔터티는 업무에서 관리되어야 하는 집합이다.
  • 릴레이션 : 릴레이션에 기본키 및 제약조건을 설정하면 테이블

  • 인스턴스는 렐레이션이 가질 수 있는 값을 의미 → 행의 수

엔터티 종류

  1. 유형 무형에 따른 엔터티 종류

    1. 유형 엔터티 : 업무에서 도출, 지속적으로 사용
    2. 개념 엔터티 : 물리적 형태가 없는 엔터티
    3. 사건 엔터티 : 비즈니스 프로세스를 실행하며 생성되는 엔터티
  2. 발생 시점에 따른 분류

    1. 기본 엔터티 : 키 엔터티, 독립적으로 생성
    2. 중심 엔터티 : 기본 엔터티와 행위 엔터티 중간
    3. 행위 엔터티 : 2개 이상의 엔터티로부터 발생

속성

  • 더 이상 분리되지 않는 단위

  • 인스턴스의 구성요소, 의미적으로 더 이상 분해되지 않음

  • 특징

    • 하나의 값만 가진다
    • 주식별자에 함수적으로 종속 → 족 키가 변경되면 속성의 값도 변경된다
  • 분해 여부에 따른 속성의 종류

    • 단일 속성 : 하나의 의미로 구성
    • 복합 속성 : 여러 개의 의미가 있는 것으로 대표적으로 주소가 있다.
    • 다중값 속성 : 속성에 여러 개의 값을 가질 수 있는 것 ex) 상품리스트 → 엔터티로 분해 가능
  • 특성에 따른 속성의 종류

    • 기본 속성 : 비즈니스 프로세스에서 도출되는 본래의 속성
    • 설계 속성 : 데이터 모델링 과정에서 발생되는 속성, 유일한 값 부여
    • 파생 속성 : 다른 속성에 의해서 만들어지는 속성
  • 도메인은 속성이 가질 수 있는 값의 범위

관계의 종류

  • 존재 관계
    • 엔터티간의 상태
  • 행위 관계
    • 엔터티 간에 어떤 행위가 있는 것

관계 차수

  • 최대 기수성
    • 일대일
      • 완전 일대일, 선택적 일대일
    • 일대다
    • 다대다
      • 조인 시 카테시안 곱이 발생하므로 일대다 관계로 분해하여 해소해야함
  • 최소 기수성
    • 필수적 관계 : 반드시 하나가 있어야 함
    • 선택적 관계 : 없을 수도 있는 관계

식별 비식별

  • 식별관계란 고객 엔터티의 기본키인 회원Id를 계좌 엔터티의 기본키의 하나로 공유하는 것 강한 개체의 기본키값이 변경되면 식별 관계에 있는 엔터티의 값도 변경된다

  • 비식별 관계는 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 컬럼으로 관계를 가지는 것

  • 강한 개체 : 독립적인 개체

  • 약한 개체 : 다른 개체에 그 존재가 달려 있는 개체

주식별자

  • 최소성
  • 대표성
  • 유일성 : 엔터티의 인스턴스를 유일하게 식별
  • 불변성 : 자주 변경되지 않아야 한다
  • 존재성 : pk가 지정되면 잔드시 데이터값이 존재해야한다

키의 종류

  • 기본키 : 엔터티를 대표

  • 후보키 : 유일성과 최소성 만족

  • 슈퍼키 : 유일성 만족, 최소성 불만족

  • 대체키 : 후보키 중 기본키를 제외한 것

  • 외래키 : 다른 테이블의 기본키, 참조 무결성 확인을 위해 사용

  • 대표성 여부

    • 주식별자 : 엔터티 대표, 참조 관계 연결 가능
    • 보조 식별자 : 대표성 만족 못함
  • 생성 여부

    • 내부 식별자 : 엔터티 내부에서 스스로 생성
    • 외부 식별자 : 다른 엔터티와의 관계로 생성
  • 속성의 수에 따른 종류

    • 단일 식별자 : 하나의 속성
    • 복합 식별자 : 두 개 이상의 속성
  • 대체 여부

    • 본질 식별자 : 비즈니스 프로세스에서 생성
    • 인조 식별자 : 인위적으로 생성 ex)일련번호 → 순서번호(Sequence Number)를 사용해서 식별자를 만드는 것

데이터 모델과 성능

정규화

  • 데이터 일관성, 최소 중복, 유연성을 위해 데이터를 분해

  • 데이터가 일관성이 없고 그러면 이상현상(Anomaly)

  • 정규화 절차

    1. 제1정규화 : 속성의 원자송 확보, 기본키를 설정
    2. 제2정규화 : 기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거(분해)한다
    3. 제3정규화 : 기본키를 제외한 칼럼 간에 종속성을 제거한다. = 이행 함수 종속성을 제거한다.
    4. BCNF : 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해한다.
    5. 제4정규화 : 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중값 속성을 제거한다.
    6. 제5정규화 : 조인에 의해서 종속성이 발생하는 경우 분해한다
  • 정규화의 문제

    • 조인을 유발 → CPU와 메모리를 많이 사용
    • 중첩된 루프(Nested Loop)
      • 조인은 이중 for문을 유발한다. (보통 인덱스나 옵티마이저로 이런 비효율을 막긴함)
    • 반정규화로 위와 같은 문제를 해결한다.
  • 반정규화를 수행하는 이유

    • 지나친 정규화 충실성으로 수행 속도가 느려진 경우
    • 다량의 범위를 자주 처리하는 경우
    • 특정 범위의 데이터만 자주 처리하는 경우
    • 요약/집계 정보가 자주 요구되는 경우
  • 반정규화 절차

    1. 대상 조사 및 검토 : 반정규화 대상 조사
    2. 다른 방법 검토 : 클러스터링, 뷰, 인덱스 튜닝, 응용 프로그램, 파티션 등 검토
      1. 클러스터링 : 클러스터링 인덱스란 인덱스 정보를 저장할 때 물리적으로 정렬해서 저장하는 방법 → 조회 시에 인접 블록을 연속적으로 읽기 때문에 성능이 향상된다.
    3. 반정규화 수행
  • 반정규화 기법

    • 계산된 칼럼 추가
    • 테이블 수직 분할 → 칼럼을 분할하여 새로운 테이블 생성
    • 테이블 수평 분할 → 값을 기준으로 테이블 분할(동일 속성이 됨)
  • 파티션 기법 : 논리적으로 하나의 테이블이지만 여러개의 데이터 파일에 분산되어 저장

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

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

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

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

      장점

    • 엑세스 범위가 줄어듬 → 성능향상

    • 데이터 분할되어 있어 IO 성능 향상

    • 각 파티션별로 독립적으로 백업/복구 가능

  • 테이블 병합

    • 1대1 관계의 테이블을 하나의 테이블로 병합해서 성능 향사
    • 1대N 관계의 테이블을 병합하여 성능 향상 but 데이터 중복 발생
    • 슈퍼 타입과 서브 타입 관계가 발생하면 테이블 통합하여 성능 향상
      • 슈퍼 타입과 서브 타입
        • 고객은 슈퍼 타입 개인고객과 법인고객은 서브 타입
        • 배타적 관계 : 고객이 개인고객이거나 법인고객인 경우
        • 포괄적 관계 : 고객이 개인고객일수도 있고 법인고객일 수도 있는 것
      • 슈퍼 - 서브 타입 변환 방법
        • OneToOne Type : 슈퍼 타입과 서브 타입 개별로 테이블 도출
        • Plus Type : 슈퍼 + 서브 타입의 엔티티 여러개 생성
        • Single Type : 슈퍼 타입과 서브 타입을 하나의 테이블로 도출

분산 데이터베이스

  • 중앙 집중형 데이터베이스 : 한 대의 물리적 시스템에 데이터베이스 관리 시스템을 설치하고 여러 사용자가 그 시스템에 접속하여 데이터베이스를 사용하는 구조

  • 분산 데이터베이스 : 물리적으로 떨어진 데이터베이스들을 네트워크로 연결 → 단일 데이터베이스 이미지를 보여주고 분산 작업 처리 수행

  • 분산 데이터베이스의 투명성

    • 분할 투명성 : 고객(사용자)는 논리적 릴레이션이 여러 개로 분할되어 각 사본이 여러 시스템에 저장되어있음을 알 필요가 없다
    • 위치 투명성 : 고객이 사용하려는 데이터의 정소를 명시할 필요가 없다 → 데이터에 접근하는 방식에는 차이가 없어야 한다
    • 지역 사상 투명성 : 지역 DBMS와 물리적 데이터베이스 사이의 매핑이 보장되어야 한다.
    • 중복 투명성 : 데이터베이스 객체가 여러 시스템에 중복되어 존재해도 데이터의 일관성은 유지되어야 한다.
    • 장애 투명성 : 데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도 데이터의 무결성은 보장된다.
    • 병행 투명성 : 여러 응용 프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 없어야 한다.
  • 분산 데이터베이스 설계 방식

    • 상향식 설계 방식 : 지역 스키마 → 전역 스키마(통합)
    • 하향식 설계 방식 : 전역 스키마 작성 → 지역 사상 스키마 작성
  • 분산 데이터베이스 장점과 단점

    • 장점
      • 신뢰성과 가용성 높음
      • 빠른 응답 가능
      • 시스템 용량 확장 용이
    • 단점
      • 관리, 통제 어려움
      • 무결성 관리 어려움
      • 설계 복잡
      • 보안 어려움
728x90