SQLD 1과목 정리

알비레오·2024년 8월 14일

DB

목록 보기
7/16

데이터베이스 모델링

현실 세계를 단순화하여 표현하는 기법

모델링 특징

  1. 추상화(Abstraction)
    현실 세계를 일정한 형식으로 표현하는 것
  2. 단순화(Simplification)
    복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현한다는 의미
  3. 명확화(Clarity)
    불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다는 의미

모델링 3가지 관점

  1. 데이터 관점(What, Data)
    어떤 데이터들이 업무와 얽혀있는지, 그리고 그 데이터 간에는 어떤 관계가 있는지에 대해서 모델링하는 방법
  2. 프로세스 관점(How, Process)
    이 업무가 실제로 처리하고 있는 일은 무엇인지, 또는 앞으로 처리해야 하는 일은 무엇인지 모델링하는 방법
  3. 데이터와 프로세스의 상관 관점(Data vs. Process, Interaction)
    프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지를 모델링하는 방법

모델링 유의사항 3가지

  1. 중복(Duplication)
    같은 데이터가 여러 엔터티에 중복으로 저장되는 현상을 지양해야 함
  2. 비유연성(Inflexibility)
    데이터 모델과 프로세스를 분리하여 유연성을 높이는 것이 바람직
  3. 비일관성(Inconsistency)
    데이터 간의 연관관계에 대해 명확하게 정의해야 함

모델링 3가지 단계

(개 -> 논 -> 물)
1. 개념적 데이터 모델링(Conceptual Data Modeling)
추상화 레벨이 가장 높은 모델링
업무 중심적이고 포괄적인 수준의 모델링이 진행됨
2. 논리적 데이터 모델링(Logical Data Modeling)
재사용성이 가장 높은 모델링
데이터베이스 모델에 대한 Key, 속성, 관계 등을 모두 표현하는 단계
3. 물리적 데이터 모델링(Physical Data Modeling)
실제 데이터베이스로 구현할 수 있도록 성능이나 가용성 등의 물리적인 성격을 고려하여 모델을 표현하는 단계

3단계 스키마

  1. 외부 스키마(External Schema)
  2. 개념 스키마(Conceptual Schema)
  3. 내부 스키마(Internal Schema)

ERD 작성순서

  1. 엔터티를 도출하고 그린다
  2. 엔터티를 적절하게 배치한다
  3. 엔터티 간의 관계를 설정한다
  4. 관계명을 기입한다
  5. 관계의 참여도를 기입한다
  6. 관계의 필수/선택 여부를 기입한다

엔터티(Entity)

식별이 가능한 객체

특징

  1. 업무에서 쓰이는 정보여야 함
  2. 유니크함을 보장할 수 있는 식별자가 있어야 함
  3. 2개 이상의 인스턴스를 가지고 있어야 함
  4. 반드시 속성을 가지고 있어야 함
  5. 다른 엔터티와 1개 이상의 관계를 가지고 있어야 함

분류

  • 유형 vs 무형
  1. 유형 엔터티
    물리적인 형태 존재, 안정적, 지속적
    ex) 상품, 회원 등
  2. 개념 엔터티
    물리적인 형태 없음, 개념적
    ex) 부서, 학과 등
  3. 사건 엔터티
    행위를 함으로써 발생, 빈번함, 통계 자료로 이용 가능
    ex) 주문, 이벤트 응모 등
  • 발생시점
  1. 기본 엔터티
    업무에 원래 존재하는 정보
    독립적으로 생성되며, 자식 엔터티를 가질 수 있음
  2. 중심 엔터티
    기본 엔터티로부터 파생되고, 행위 엔터티 생성
    업무에 있어서 중심적인 역할을 하며 데이터의 양이 많이 발생
  3. 행위 엔터티
    2개 이상의 엔터티로부터 파생
    데이터가 자주 변경되거나 증가할 수 있음

속성(Attribute)

사물이나 개념의 특징을 설명해줄 수 있는 항목들
의미상 더 이상 쪼개지지 않는 레벨이어야 함
프로세스에 필요한 항목이어야 함

분류

  • 특성에 따른 분류
  1. 기본속성(Basic Attribute)
    업무 프로세스 분석을 통해 바로 정의가 가능한 속성
  2. 설계속성(Designed Attribute)
    업무에 존재하지는 않지만 설계하다 보니 필요하다고 판단되어 도출해낸 속성
  3. 파생속성(Derived Attribute)
    다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성
  • 구성에 따른 분류
  1. PK(Primary key) 속성
    엔터티의 인스턴스들을 식별할 수 있는 속성
  2. FK(Foreign Key) 속성
    다른 엔터티의 속성에서 가져온 속성
  3. 일반속성
    PK, FK를 제외한 나머지 속성

관계(Relationship)

엔터티와 엔터티와의 관계를 의미

종류

  1. 존재 관계
    존재 자체로 연관성이 있는 관계
  2. 행위 관계
    특정한 행위를 함으로써 연관성이 생기는 관계

표기법

  1. 관계명(Membership)
    관계의 이름
  2. 관계차수(Cardinality)
    관계에 참여하는 수
  3. 관계선택사양(Optionality)
    필수인지 선택인지의 여부

식별자(Identifiers)

속성 중에 각각의 인스턴스를 구분 가능하게 만들어주는 대표격인 속성

주식별자

기본키에 해당하는 속성
하나의 속성이 주식별자가 될 수도, 여러 속성이 주식별자가 될 수도 있음

  • 유일성
    각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 한다
  • 최소성
    유일성을 보장하는 최소 개수의 속성이어야 한다
  • 불변성
    속성값이 되도록 변하지 않아야 한다
  • 존재성
    속성값이 NULL일 수 없다

분류

  • 대표성 여부
  1. 주식별자(Primary Identifier)
    유일성, 최소성, 불변성, 존재성을 가진 대표 식별자
    다른 엔터티와 참조 관계로 연결
  2. 보조식별자(Alternate Identifier)
    인스턴스를 식별할 수는 있지만 대표 식별자가 아님
    다른 엔터티와 참조 관계로 연결되지 않음
  • 스스로 생성되었는지 여부
  1. 내부식별자(Internal Identifier)
    엔터티 내부에서 스스로 생성된 식별자
  2. 외부식별자(Foreign Identifier)
    다른 엔터티에서 온 식별자, 다른 엔터티와의 연결고리 역할
  • 단일 속성의 여부
  1. 단일식별자(Single Identifier)
    하나의 속성으로 구성된 식별자
  2. 복합식별자(Composite Identifier)
    두 개 이상의 속성으로 구성된 식별자
  • 대체 여부
  1. 원조 식별자(Original Identifier)
    업무 프로세스에 존재하는 식별자, 가공되지 않은 원래의 식별자(본질 식별자)
  2. 대리 식별자(Surrogate Identifier)
    주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자(인조식별자)

식별자, 비식별자 관계

  1. 식별자 관계(Identification Relationship)
    부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계

  2. 비식별자 관계(Non-Identification Relationship)
    부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계

정규화(Normalization)

데이터 정합성(데이터의 정확성과 일관성을 유지하고 보장)을 위해 엔터티를 작은 단위로 분리하는 과정
이상 현상을 제거하기 위해 수행
조회 성능은 처리조건에 따라 향상되는 경우도 있고 저하되는 경우도 있지만, 입력, 수정, 삭제 성능은 일반적으로 향상됨

제 1정규형

모든 속성은 반드시 하나의 값만 가져야 함

제 2정규형

엔터티의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 함

제 3정규형

주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없음

반정규화(De-Normalization) = 비정규화

데이터의 조회 성능을 향상시키기 위해 중복을 허용하거나 데이터를 그룹핑하는 과정
조회성능은 향상될 수 있으나 입력, 수정, 삭제 성능은 저하될 수 있음

테이블 반정규화

  • 테이블 병합
  1. 1:1 관계 테이블 병합
  2. 1:M 관계 테이블 병합
  3. 슈퍼 서브 타입 테이블 병합
  • 테이블 분할
  1. 테이블 수직 분할(속성 분할)
  2. 테이블 수평 분할(인스턴스 분할, 파티셔닝)
  • 테이블 추가
  1. 중복 테이블 추가
  2. 통계 테이블 추가
  3. 이력 테이블 추가
  4. 부분 테이블 추가

칼럼 반정규화

  1. 중복 컬럼 추가
  2. 파생 컬럼 추가
  3. 이력 테이블 컬럼 추가

관계 반정규화(중복 관계 추가)

Join이 필요한 경우가 많아 중복 관계를 추가하는 것이 성능 측면에서 유리할 경우 고려

트랜잭션(Transaction)

데이터를 조작하기 위한 하나의 논리적인 작업 단위

0개의 댓글