파티셔닝(Partitioning)이란?

큰 데이터베이스나 테이블을 더 작고 관리하기 쉬운 구성 요소로 분할하는 데이터베이스 관리 기법이다. 이 과정을 통해 데이터를 물리적으로 여러 부분으로 나누어 각 파티션을 독립적으로 관리할 수 있게 된다. 파티셔닝은 데이터베이스의 성능을 향상시키고, 관리를 용이하게 하며, 데이터의 접근성을 개선하는 데 도움이 된다.

파티셔닝의 유형:

  1. 범위 파티셔닝(Range Partitioning)

    • 특정 범위를 기준으로 데이터를 분할
    • 범위는 일반적으로 숫자, 날짜, 시간 등으로 지정
    • 범위 파티셔닝을 사용하여 주문 데이터를 연도별로 분할할 수 있으며, 각 연도별 데이터는 해당 연도 범위에 속하는 주문만을 저장할 수 있게 된다.
    • ex.
      • 날짜 범위: 2020년 데이터, 2021년 데이터, 2022년 데이터 등으로 나누어 각기 다른 파티션에 저장.
      • 가격 범위: 가격이 $0$100, $101$500, $501 이상 등으로 구분하여 각 가격 범위에 해당하는 상품 데이터를 분리하여 저장.
    • Range 파티셔닝은 특정 연도의 데이터에 빈번히 접근하거나 해당 연도의 데이터를 아카이브할 필요가 있을 때 매우 유용하다.
  2. 리스트 파티셔닝(List Partitioning)

    • 사전에 정의된 데이터 값 목록에 따라 데이터를 분할
    • 각 파티션에 특정 값 목록에 해당하는 데이터가 저장
    • 예를 들어, 국가 코드, 지역 이름 등
    • ex.
      • 국가 코드: 'US', 'UK', 'JP' 등의 국가 코드를 기준으로 각 국가에 해당하는 사용자 데이터를 분리하여 저장.
      • 지역명: '동부', '서부', '중부' 등으로 구분된 지역명을 기준으로 판매 데이터를 파티셔닝.
    • List 파티셔닝은 특정 분류에 따라 데이터에 빠르게 접근할 수 있게 해주며, 관리가 쉽고 데이터 보안을 강화하는 데에도 도움을 줄 수 있다.
    • 예를 들어, 특정 국가의 사용자 데이터에 대한 접근을 제한하거나 특정 조건을 만족하는 데이터만 빠르게 검색할 수 있습니다.
  3. 해시 파티셔닝(Hash Partitioning)

    • 해시 함수를 사용하여 데이터를 분할
    • 해시 값에 따라 데이터를 균등하게 분배
    • 이 방법은 각 데이터 항목의 키 값을 해시 함수에 입력하여 반환된 해시 값에 기반하여 해당 데이터가 저장될 파티션을 결정
    • 해시 파티셔닝은 데이터를 균등하게 분배하는데 효과적이며, 대용량 데이터 처리 시 로드 밸런싱에 유용
    • ex.
      • 데이터베이스에서 사용자 ID를 기준으로 데이터를 분배할 때, 해시 함수를 사용하여 각 사용자의 데이터를 다양한 파티션에 균일하게 배분할 수 있다. 이렇게 함으로써, 어떤 특정 파티션에 부하가 집중되는 것을 방지할 수 있다.
  4. 복합 파티셔닝(Composite Partitioning)

    • 위의 파티셔닝 방법을 두 개 이상 조합하여 사용합니다.
    • 범위 파티셔닝과 리스트 파티셔닝을 조합하거나, 범위 파티셔닝 후에 해시 파티셔닝을 적용할 수 있다.
    • ex.
      • 범위 + 리스트: 상품 데이터를 먼저 출시 연도별로 범위 파티셔닝하고, 각 연도별 파티션 내에서 상품 카테고리별로 리스트 파티셔닝을 적용할 수 있다. 이렇게 하면 특정 연도의 특정 카테고리 상품을 빠르게 찾을 수 있다.
      • 범위 + 해시: 고객 데이터를 먼저 지역별로 범위 파티셔닝한 후, 각 지역 파티션 내에서 고객 ID를 기준으로 해시 파티셔닝하여 데이터를 분산시킬 수 있다.
    • Composite 파티셔닝은 데이터의 특성과 접근 패턴을 고려하여 적절한 파티셔닝 방식을 조합함으로써 데이터베이스의 성능을 최적화하고, 데이터 관리를 용이하게 할 수 있다.
    • 데이터가 크고 복잡한 경우, 특히 검색과 업데이트가 빈번하게 이루어지는 환경에서 효과적인 방법이다.

'DataBase > SQLD' 카테고리의 다른 글

분산 데이터베이스의 투명성  (1) 2024.04.23
정규화(Normalization)  (0) 2024.04.23
반정규화(Denormalization)  (0) 2024.04.23
식별자 (Identifiers)  (0) 2024.04.23
속성 (Attribute)  (0) 2024.04.23

반정규화(Denormalization)란?

반정규화(Denormalization)는 데이터베이스 설계에서 정규화된 구조를 일부러 조정하여, 성능 향상을 목적으로 일부 데이터 중복을 허용하거나 구조를 단순화하는 과정을 말한다. 반정규화는 주로 읽기 성능을 최적화하고, 쿼리의 복잡성을 줄이며, 트랜잭션 처리 속도를 높이기 위해 수행됩니다.

반정규화가 필요한 이유

정규화는 데이터의 중복을 최소화하고, 데이터 무결성을 보장하기 위해 사용되지만, 항상 성능이 향상되는 것만은 아니다. 여러 테이블에 걸쳐 있는 데이터를 조인해야 하므로 쿼리 성능이 저하될 수 있다. 반정규화는 이러한 정규화로 인한 성능 저하를 보완하기 위해 도입되었다.

반정규화의 주요 기법

테이블 반정규화

  1. 테이블 병합
    • 관계가 밀접하고 자주 함께 조회되는 두 테이블을 하나의 테이블로 통합
    • 조인 연산을 줄여 성능을 개선
  2. 테이블 분할
    • 하나의 큰 테이블을 두 개 이상의 테이블로 수평 또는 수직으로 분할하여 조회 성능 향상
    • 수평 분할은 데이터 행을 기준으로 나누며, 수직 분할은 특정 열을 기준으로 테이블을 분리
  3. 테이블 추가
    • ex. 조회용 테이블 추가
    • 집계나 요약 정보를 미리 계산하여 별도의 조회용 테이블에 저장
    • 주로 리포트나 대시보드에서 사용
    • 복잡한 계산을 쿼리 시간에 하지 않아도 되므로 응답 시간이 크게 단축

칼럼 반정규화

중복 컬럼 추가
- 성능을 향상시키기 위해 자주 접근하는 컬럼의 값을 다른 테이블에 중복 저장
- ex. 매출 테이블에 각 판매 기록에 대한 고객 정보를 중복 저장하여, 고객 테이블과의 조인 없이 바로 접근할 수 있도록 한다.

관계 반정규화

중복 관계 추가
- 데이터를 처리하기 위한 여러 경로를 거쳐 조인이 가능하지만 이 때 발생할 수 있는 성능저하를 예방하기 위해 추가적인 관계를 맺는 방법

반정규화가 필요한 상황 예시

  1. 대량의 데이터에 대한 복잡한 질의 수행
    만약 어떤 시스템이 매우 큰 데이터베이스에서 복잡한 질의를 빈번하게 수행해야 한다면, 여러 테이블을 조인해야 하는 경우가 많다. 이러한 조인 연산은 시스템의 성능을 저하시킬 수 있다. 반정규화를 통해 필요한 데이터를 하나의 테이블에 중복 저장함으로써 조인의 필요성을 줄일 수 있다.
  2. 읽기 성능의 최적화 필요
    어떤 애플리케이션이 주로 읽기 작업을 수행하고, 데이터의 업데이트가 비교적 드물 때, 데이터를 중복 저장하거나 특정 쿼리에 최적화된 방식으로 데이터를 저장하여 읽기 성능을 향상시킬 수 있다.
  3. 실시간 처리 요구
    실시간 응답이 필요한 시스템에서는 데이터 조회에 소요되는 시간을 최소화해야 한다. 반정규화를 통해 데이터 조회 경로를 단순화하고, 필요한 데이터를 즉시 액세스할 수 있도록 할 수 있다.
  4. 분석 및 보고용 데이터
    데이터 웨어하우스나 분석 시스템에서는 종종 대량의 데이터를 빠르게 질의해야 할 필요가 있다. 이러한 시스템에서는 반정규화를 통해 데이터를 집계하거나 요약 정보를 사전에 계산해 두는 것이 유용할 수 있다.
  5. 사용자 경험 향상
    사용자 인터페이스가 매우 빠른 반응을 요구하는 경우, 데이터베이스에서 즉시 정보를 제공할 수 있도록 설계하는 것이 중요하다. 반정규화를 통해 데이터베이스에서 데이터를 더 빨리 검색할 수 있어 사용자 경험을 개선할 수 있다.

'DataBase > SQLD' 카테고리의 다른 글

정규화(Normalization)  (0) 2024.04.23
파티셔닝(Partitioning)  (0) 2024.04.23
식별자 (Identifiers)  (0) 2024.04.23
속성 (Attribute)  (0) 2024.04.23
엔터티 (Entity)  (3) 2024.04.22

식별자(Identifiers)란?

데이터베이스의 엔터티에서 각 인스턴스를 고유하게 구별하는 데 사용되는 하나 또는 여러 개의 속성의 집합

식별자의 주요 특성

  1. 유일성(Unique)
    식별자에 의해 지정된 값은 데이터베이스 내에서 유일
  2. 불변성(Immutable)
    식별자의 값은 생성된 후 변경되어서는 안된다. 이는 데이터의 일관성과 무결성을 유지하기 위해 중요하다.

주 식별자의 경우 두가지 특성이 더 추가된다.

  1. 최소성 (Minimality)
    필요한 최소한의 속성들로만 구성
  2. 존재성 (Existence)
    Null 값을 허용하지 않는다.

식별자의 분류

대표성 여부

  1. 주 식별자(Primary Identifier)
    • 엔터티를 대표하는 주된 식별자로, 데이터베이스 내의 해당 엔터티 인스턴스를 유일하게 식별
    • ex. 사원 데이터베이스에서 '사원번호'
  2. 보조/대체 식별자(Alternate Identifier)
    • 주 식별자 외에 엔터티를 식별할 수 있는 추가적인 식별자
    • ex. 사원 데이터베이스에서 '이메일 주소', '주민등록번호'

스스로 생성 여부

  1. 내부 식별자(Internal Identifier)
    • 엔터티 내부에서 스스로 만들어지는 식별자
    • 엔터티가 독립적으로 가지고 있는 속성으로부터 파생
    • ex. 회원 데이터베이스에서 각 회원에게 부여되는 고유 회원번호
  2. 외부 식별자(External Identifier)
    • 다른 엔터티와의 관계를 통해 얻어지는 식별자
    • 보통 외래 키(Foreign Key)의 형태를 취하며, 다른 엔터티의 식별자를 참조하여 형성
    • ex. 주문 테이블에서 각 주문이 어떤 고객에게 속하는지를 식별하는 데 사용되는 '고객 ID'

속성의 수

  1. 단일 식별자(Single Attribute Identifier)
    • 단일 속성으로 구성된 식별자
    • ‘학생번호’나 ‘직원 ID’ 등
  2. 복합 식별자(Composite Identifier)
    • 두 개 이상의 속성을 조합하여 만들어진 식별자
    • ex. 금융계좌의 경우,‘은행 코드’와 ‘계좌 번호’의 조합

대체 여부

  1. 본질 식별자(Natural Identifier)
    • 엔터티의 본질적인 특성을 반영하는 식별자로, 데이터 자체의 내용에 기반한 식별자
    • ex.‘주민등록번호’나 ‘차량 등록번호’
  2. 인조 식별자(Artificial Identifier)
    • 엔터티의 본질적인 특성과는 독립적으로 생성된 식별자
    • 주로 데이터베이스 관리의 편의를 위해 부여되는 번호
    • ex. 데이터베이스에서 자동으로 생성되는 일련번호나 기타 코드

식별자 관계 vs 비식별자 관계

식별자 관계

- 보통 부모 엔터티와 자식 엔터티 간에 강한 종속성이 있을 때 사용된다. 
- 자식 엔터티의 주 식별자로 부모의 주 식별자가 상속이 되는 경우

비식별자 관계

- 자식 엔터티는 부모 엔터티의 식별자를 참조(외래키로)는 하지만, 자신의 독립적인 식별자를 가진다. 
- 부모 엔터티로부터 속성을 받았지만 자식 엔터티의 식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우

'DataBase > SQLD' 카테고리의 다른 글

파티셔닝(Partitioning)  (0) 2024.04.23
반정규화(Denormalization)  (0) 2024.04.23
속성 (Attribute)  (0) 2024.04.23
엔터티 (Entity)  (3) 2024.04.22
데이터 독립성 (Data Independence)  (0) 2024.04.22

속성(Attribute)이란?

데이터 모델링에서 엔터티의 특정 특성이나 특징을 설명하는 데 사용되는 데이터 필드

속성의 특성에 따른 분류

  1. 기본 속성 (Basic Attribute)
    • 엔터티에 직접 관련된 속성으로, 다른 속성으로부터 유도되거나 계산되지 않은 가장 기본적인 정보
    • ex. 사원의 이름, 직원의 생년월일, 고객의 주소
  2. 설계 속성 (Designed Attribute)
    • 데이터베이스 설계 과정에서 효율성, 데이터 무결성, 쿼리 최적화 등을 목적으로 추가되는 속성
    • 시스템이 효과적으로 데이터를 처리하고 관리할 수 있도록 설계자에 의해 의도적으로 만들어지기도 함.
    • ex. 사용자 ID(사용자를 고유하게 식별하기 위해 시스템에 의해 생성된 번호), 상품 코드(상품 관리를 위해 생성된 고유 코드)
  3. 파생 속성 (Derived Attribute)
    • 다른 속성으로부터 계산되거나 유도된 값.
    • 데이터 분석, 보고서 생성, 성능 최적화를 위해 사용되기도 함.
    • ex. 직원의 나이(생년월일로부터 계산), 주문 총액(주문된 각 상품의 가격 합계), 평균 평점(리뷰 점수의 평균 값 계산)

도메인이란?

- 각 속성에 대한 유효한 값의 범위, 유형, 제약조건.
- ex. 성별 도메인(남성, 여성), 나이 도메인(0~120 사이의 정수 값), 이메일 주소 도메인(표준 이메일 형식을 준수하는 문자열만을 허용)

'DataBase > SQLD' 카테고리의 다른 글

반정규화(Denormalization)  (0) 2024.04.23
식별자 (Identifiers)  (0) 2024.04.23
엔터티 (Entity)  (3) 2024.04.22
데이터 독립성 (Data Independence)  (0) 2024.04.22
데이터 모델링 (Data Modeling)  (0) 2024.04.22

엔터티(Entity)란?

현실 세계의 객체나 사물을 의미하며, 데이터 모델에서 구체적으로 정의하고 관리할 수 있는 데이터의 단위

엔터티의 특징

  1. 유일성(Unique)
    각 엔티티는 고유해야 하며, 이를 위해 식별자(Primary Key)를 사용하여 엔티티를 구분한다.
  2. 실체성(Tangible or Intangible)
    엔티티는 현실 세계의 실체가 될 수도 있고, 개념적인 것일 수도 있다. 예를 들어, '사람', '자동차'는 실체성 엔티티이며, '회원 등급', '거래' 같은 개념도 엔티티가 될 수 있다.
  3. 속성(Attribute)
    각 엔티티는 여러 속성을 가질 수 있으며, 이 속성들은 엔티티의 특성을 설명한다. 예를 들어, '사람' 엔티티는 이름, 주소, 전화번호 등의 속성을 가질 수 있.

엔터티의 분류

유무에 따른 분류

  1. 유형 엔터티
    • ex. 사원, 자동차, 책, 건물 등
    • 물리적 형태를 가진 엔터티로 실제로 존재하며, 감각적으로 인지할 수 있는 대상
  2. 개념 엔터티
    • ex. 회사, 조직, 계약, 법률 등
    • 물리적 형태는 없지만, 특정 개념이나 법적인 정의로 존재
  3. 사건 엔터티
    • ex. 거래 발생, 예약, 사고 발생 등
    • 특정 시점에 발생하는 이벤트를 표현하는 엔터티로, 시간적 변화를 수반하는 데이터를 포함

발생시점에 따른 분류

  1. 기본 엔터티(독립적)
    • ex. 사원, 제품, 고객 등
    • 다른 엔터티와의 관계에 의존하지 않고 독립적으로 존재
  2. 중심 엔터티(관계)
    • ex. 주문(고객-제품의 관계), 소속(사원-부서의 관계) 등
    • 두 개 이상의 기본 엔터티 사이의 관계를 표현하며, 이 관계 자체
    • 관계를 통해 새로운 속성이나 의미를 부여
  3. 행위 엔터티(발생)
    • ex. 판매 이력, 로그 기록, 작업 주문 등
    • 특정 사건이나 활동이 발생함으로써 생성되는 엔터티로, 주로 시간적인 요소를 포함
    • 사건의 발생을 기록하고 관리

'DataBase > SQLD' 카테고리의 다른 글

식별자 (Identifiers)  (0) 2024.04.23
속성 (Attribute)  (0) 2024.04.23
데이터 독립성 (Data Independence)  (0) 2024.04.22
데이터 모델링 (Data Modeling)  (0) 2024.04.22
[SQLD] 5일만에 합격하는 방법  (0) 2022.06.22

데이터 독립성이란?

데이터베이스 시스템에서 데이터를 응용 프로그램과 독립적으로 관리할 수 있는 능력을 의미한다. 즉, 데이터베이스 구조를 변경할 때 응용 프로그램의 코드를 변경하지 않고도 이를 수행할 수 있는 데이터베이스 시스템의 능력을 의미한다. 데이터 독립성의 반댓말은 데이터 종속성인데, 데이터끼리 종속되지 않기 때문에 따라오는 장점이 많다. 데이터베이스 시스템의 유연성과 확장성을 보장하며, 기업이 기술 변화에 빠르게 적응하고 장기적인 시스템 유지보수 비용을 줄이는 데 도움을 준다.

데이터 독립성의 2가지 유형

  1. 논리적 데이터 독립성
    데이터베이스의 논리적 구조(예: 테이블 구조, 스키마)를 변경해도 응용 프로그램이 영향을 받지 않도록 보호하는 능력을 말한다. 예를 들어, 테이블에 열을 추가하거나 데이터 유형을 변경해도 기존 응용 프로그램에는 영향이 없어야 한다.
  2. 물리적 데이터 독립성
    데이터베이스의 물리적 구조(예: 저장 장치의 사용 방식, 파일 시스템 구성)를 변경해도 응용 프로그램이 영향을 받지 않도록 보호하는 능력을 말한다. 이는 하드웨어나 스토리지 최적화 등이 응용 프로그램에 영향을 주지 않도록 하는 것이다.

데이터 독립성의 3가지 요소

  1. 외부 스키마(External Schema)
    사용자나 응용 프로그램이 데이터베이스에 접근할 때 보게 되는 데이터의 뷰이다. 개별 사용자 그룹의 요구에 맞춘 데이터의 구조를 제공한다. 외부 스키마는 사용자 인터페이스와 가장 밀접하게 관련되어 있으며, 데이터 모델링의 개념적 모델과 유사하다.
    • 예시: 사원 테이블 스키마
    • 설명: 외부 스키마는 사용자나 특정 응용 프로그램이 데이터를 보는 방식을 정의한다. 사원 테이블 스키마는 특정 사용자 그룹이나 응용 프로그램이 접근하는 데이터의 뷰를 나타낸다. 이 경우, 사원 정보에 한정되어 사용자에게 제공된다.
    • 예를 들어, 은행 시스템에서, 고객 관리자는 모든 고객의 정보(이름, 계좌 번호, 잔액)를 보는 반면, 대출 담당자는 고객의 신용 정보와 대출 이력을 볼 수 있는 외부 스키마를 가진다. 이렇게 각 사용자의 역할에 맞는 데이터만을 제공하는 뷰가 외부 스키마에 해당한다.
  2. 개념 스키마(Conceptual Schema)
    데이터베이스의 전체적인 구조와 정책을 정의하는 스키마로, 모든 응용 프로그램과 사용자에게 공통적인 데이터 뷰를 제공한다. 이는 데이터베이스의 논리적 구조를 나타내며, 데이터 모델링의 논리적 모델과 일치한다.
    • 예시: 직장 정보 데이터베이스 전체
    • 설명: 개념 스키마는 데이터베이스의 전체적인 논리적 구조를 정의하며, 모든 데이터, 그 데이터들 사이의 관계, 무결성 규칙, 보안 등을 포함한다. 이 스키마는 데이터베이스의 모든 엔티티와 그 관계들을 종합적으로 관리하고, 전체적인 데이터베이스 구조를 나타낸다.
    • 예를 들어, 은행 데이터베이스의 경우, 개념 스키마에는 고객, 계좌, 거래, 대출 등의 엔티티가 포함되며, 이 엔티티들 사이의 관계(예: 고객이 여러 계좌를 소유할 수 있음, 계좌가 여러 거래를 가질 수 있음)가 정의된다. 이 스키마는 모든 고객에게 공통적으로 적용되는 정보를 나타낸다.
  3. 내부 스키마(Internal Schema)
    데이터가 실제로 저장되는 방식을 설명하는 스키마로, 물리적 데이터베이스 구조를 나타낸다. 이 스키마는 데이터 모델링의 물리적 모델에 해당한다.
    • 예시: 데이터베이스가 실제로 저장되는 물리적 위치
    • 설명: 내부 스키마는 데이터가 실제로 저장 장치에 어떻게 저장되는지에 대한 물리적 세부사항을 정의한다. 이는 데이터의 물리적 저장 방식, 인덱싱, 데이터 액세스 경로 등을 포함하여 데이터베이스의 저장 구조를 최적화하는 방법을 설명한다.
    • 예를 들어, 데이터가 하드 드라이브에 어떻게 저장되는지, 어떤 인덱싱 방법을 사용하는지(예: B-트리, 해시 테이블), 파일 구조가 어떻게 되는지 등이 내부 스키마에 포함된다. 즉, 은행 계좌 정보가 디스크의 특정 위치에 저장되고, 계좌 번호를 기반으로 한 인덱스가 이 데이터에 빠르게 접근할 수 있도록 도와준다.

사상 (Mapping)

  1. 외부/개념 사상 (External/Conceptual Mapping)
    외부/개념 사상은 외부 스키마와 개념 스키마 간의 대응 관계를 말한다. 이 사상은 사용자 뷰(외부 스키마)가 데이터베이스의 전체적인 논리적 구조(개념 스키마)와 어떻게 연결되는지 정의한다.
    • 예를 들어, 사용자가 특정 정보(예: 특정 계좌의 잔액)를 요청할 때, 외부/개념 사상은 이 요청을 개념 스키마에 정의된 적절한 데이터 엔티티 및 관계로 변환하는 방법을 명시한다.
  2. 개념/내부 사상 (Conceptual/Internal Mapping)
    개념/내부 사상은 개념 스키마와 내부 스키마 간의 대응 관계를 정의한다. 이는 데이터베이스의 논리적 구조가 실제로 어떻게 데이터 저장 장치에 구현되는지를 설명한다. 이 사상은 데이터가 물리적으로 어떻게 저장되고, 검색되며, 최적화되는지에 대한 세부적인 정보를 포함한다.
    • 예를 들어, 특정 테이블의 레코드가 하드 드라이브 상의 어떤 파일에 어떤 형태로 저장되는지, 데이터 액세스를 위해 어떤 인덱싱 전략이 사용되는지 등이 이 사상에 의해 정의된다.

'DataBase > SQLD' 카테고리의 다른 글

식별자 (Identifiers)  (0) 2024.04.23
속성 (Attribute)  (0) 2024.04.23
엔터티 (Entity)  (3) 2024.04.22
데이터 모델링 (Data Modeling)  (0) 2024.04.22
[SQLD] 5일만에 합격하는 방법  (0) 2022.06.22

데이터 모델링이란?

데이터 모델링이란 실제 세계의 정보를 데이터베이스나 시스템에 효과적으로 표현하기 위해 데이터 요소들을 구조화하는 과정을 말한다. 복잡한 데이터 구조를 설계하고, 이를 시각적인 다이어그램으로 표현하며, 데이터와 데이터 간의 관계를 정의한다. 데이터 모델링의 주요 목적은 데이터를 정확하고 효율적으로 저장, 검색 및 처리할 수 있는 구조를 만드는 것이다.

데이터 모델링의 3가지 관점

  1. 데이터 관점(What)
    업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지에 대해서 모델링하는 방법
  2. 프로세스(How)
    업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야 하는지를 모델링하는 방법
  3. 상관관계(Interaction)
    업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링하는 방법

데이터 모델링의 3단계

  1. 개념적 모델링
    가장 높은 수준의 추상화에서 시작하여 필요한 정보를 식별하고 큰 틀에서 데이터 요소들 간의 관계를 정의한다. 이 단계에서는 비즈니스의 요구사항과 주요 엔티티들 간의 관계에 초점을 맞춥니다. 개념적 모델링에서는 구현 세부사항을 배제하고, 주로 엔티티, 그들의 속성, 그리고 엔티티 간의 관계에 초점을 맞춘다.

    예를 들어, 엔티티를 식별하고, 속성을 정의하고, 엔티티 간의 관계를 정의하고, 키(식별자)를 설정하는 일 등을 한다.


  2. 논리적 모델링
    개념적 모델을 바탕으로 보다 상세하게 데이터 모델을 구체화한다. 이 단계에서는 데이터 타입, 기본 키, 외래 키 등의 구체적인 스키마를 정의하고, 데이터 베이스 관리 시스템(DBMS)에 독립적인 형태로 모델을 정제한다.

    예를 들어, 엔티티를 정제 및 구체화하고, 속성을 정의 및 할당하고, 기본/외래 키를 설정하거나, ERD를 설계하고, 정규화를 수행하며, 카디널리티(1:1, 1:N, N:M)을 정의해서 관계의 특성을 명확히 는 일 등을 한다.


  3. 물리적 모델링
    실제 데이터베이스 시스템에서 사용될 수 있도록 논리적 모델을 구현하는 단계이다. 특정 DBMS의 성능과 저장 구조를 고려하여 테이블, 인덱스, 액세스 경로 등을 최적화하며, 실제 데이터베이스 스키마를 생성한다.

    예를 들어, 테이블, 컬럼 및 인덱스를 생성하고, 키 관리 및 인덱싱 전략을 설정하고, 저장 프로시저 및 트리거를 작성하고, 접근 권한을 설정하고, 성능 최적화, 파티셔닝과 클러스터링, 데이터베이스 파일을 구성하는 등의 일을 한다.

 

데이터 모델링의 3가지 요소

  1. 업무가 관여하는 어떤 것(Things) : 개체
  2. 어떤 것이 가지는 성격(Attributes) : 속성
  3. 업무가 관여하는 어떤 것 간의 관계(Relationships) : 관

'DataBase > SQLD' 카테고리의 다른 글

식별자 (Identifiers)  (0) 2024.04.23
속성 (Attribute)  (0) 2024.04.23
엔터티 (Entity)  (3) 2024.04.22
데이터 독립성 (Data Independence)  (0) 2024.04.22
[SQLD] 5일만에 합격하는 방법  (0) 2022.06.22

내가 SQLD 자격증을 준비하게 된 이유

컴공 4학년이 되었고 어느정도 내가 SQL 을 사용할 줄은 안다는 사실을 증명할 방법으로 SQLD 자격증을 선택하게 되었다. 왜냐하면 물론 컴퓨터 전공생이라면 어느정도 SQL을 사용할 줄 알겠지라고 생각하지만, 그렇지 않은 경우도 있기 때문이었다.

 

사전 지식

select, insert, delete 문 등 정도를 사용해 본적 있고 학교에서 중간/기말 고사로 시험도 치뤄본 적 있었다. 그렇다고 start with ~ connect by 와 같은 구문을 알정도는 아니었다.

 

먼저, 시험 결과

SQLD 시험은 두 과목으로 이루어져 있다. 총 50문제이며 모든 문제의 배점은 2점이다. 각 과목의 과락 기준은 40%이며, 총 점은 60점이 되어야 합격이다. 그러니까 1과목(데이터 모델링의 이해)의 경우 8점, 2과목(SQL 기본 및 활용)의 경우 32점은 무조건 넘겨야하며, 두 과목의 합이 60은 되어야 한다. 나는 무난하게 합격했다.

 

공부 과정 - 이론+문제 공부

이론서 1

사실 이건 학교 도서관에서 빌려봤다. 내 돈주고 사기에는 아까운.. 그런데 이 책만으로 SQLD 이론 교육을 한다면 너무나도 부실한 내용이다. 정리는 잘 되어있어서 가독성과 개념에 대한 정리는 잘 되지만, 내용이 부실하다. -> 따라서 이 책은 개념에 대한 전체적인 숲을 보는 용도로 공부를 하였다.

 

이론서 2

두 번 째 이론서는 밑 링크의 카페에서 다운받았다.

https://cafe.naver.com/sqlpd

 

데이터 전문가 포럼 (빅데이터분석기사... : 네이버 카페

빅데이터분석기사, ADP, ADsP, SQLP, SQLD, DAP, DAsP, 자격증 취득 등 데이터 전문가 커뮤니티입니다.

cafe.naver.com

내가 공부한 이론서를 여기에 첨부파일로 올리고 싶은데 파일 용량이 20MB 이 넘어서 올려지지 않는다. 혹시 자료가 필요하신 분은 댓글로 달아주세요! -> 이 이론서의 경우 세세하고 친절하게 설명이 되어있고 모든 내용이 나와있다. 그러나 문제는 이 이론서만 봤을 시에는 살짝 가독성이 떨어지거나 정리가 잘 안될 수 있다. 따라서 이론서 1로 먼저 전체적인 숲을 보고, 이 이론서를 통해 나무들을 익혔다.

 

공부 과정 - 문풀+기출 공부

SQLD 출제진들이 집필한 기출서

오타가 가끔 발견되거나, 개정이 되지 않아 고전적이긴 하다. 그러나 이 책은 반드시 보아야 한다는 말이 있을 만큼, 출제진들이 출간한 책이기 때문에 틀린문제더라도 개념정리하기에 좋다.

 

데이터 전문가 포럼 카페에서 오랫동안 SQLD 시험을 봐온 전문가들이 집필한 문제집

이 교재의 문제들도 틀린 문제라고 하더라도 개념을 공부하기에 좋다. 또한 최신 개정판도 매번 있기 때문에 최근 트렌드나 동향 등의 파악에 좋다. 시간이 없어서 뒤에 문제 세트 2세트 정도는 못풀었다 ..

 

내가 공부한 방법의 핵심

핵심은, 문풀이었다. 나는 문제를 틀리면서 개념을 익혔다. 해설지가 곧 개념서였다. 내가 SQLD에 합격할 수 있었던 이유에는 이론서도 중요했지만, 이론보다는 문제풀이에 있었다. 이론서만 봐서는 이해가 안되는 내용이 많았다. "이 이론이 도대체 문제로 어떻게 소화되는거지?" 이럴 때 그 이론과 관련된 문제를 풀고 나면 모든게 이해된다. 이 이론이 왜 중요하고, 왜 이렇게 설명이 되어있고, 어떤 부분이 중요한지.

'DataBase > SQLD' 카테고리의 다른 글

식별자 (Identifiers)  (0) 2024.04.23
속성 (Attribute)  (0) 2024.04.23
엔터티 (Entity)  (3) 2024.04.22
데이터 독립성 (Data Independence)  (0) 2024.04.22
데이터 모델링 (Data Modeling)  (0) 2024.04.22

+ Recent posts