Post

SQLD 1과목

데이터 모델링의 이해

변동 - 정규화 / 관계와 조인의 이해/ 트랜잭션 / Null / 본질 vs 인조

제외 - 반정규화/ 대용량 데이터/ DB 구조와 성능 / 분산DB

테이블 =엔터티

컬럼 = 속성

행 = 인스턴스

카디널리티 = 선택도 * 전체레코드 수

1. 모델링

#글로 풀어냈을 때 알아낼 수 있어야 함

특징

  1. 단순화 2. 추상화 3. 명확화

유의점

  1. 중복 2. 비유연성 : 데이터 정의를 프로세스와 분리 3. 비일관성

3가지 요소

  1. 대상(Entity) 2. 속성(Attribute) 3. 관계(Relationship)

3단계

  1. 개념적 모델링 : 추상화, 엔터티 추출, ERD

  2. 논리적 모델링 : 세부속성, 식별자, 관계, 정규화, 재사용 가능

  3. 물리적 모델링 : 성능, 구체적

3가지 관점

  1. 데이터 : 업무가 어떤 데이터와 관련이 있는 지, 데이터 간의 관계는 무엇인지
  2. 프로세스 : 실제로 하는 일이 무엇인지, 무엇을 해야 하는지
  3. 데이터와 프로세스 간의 상관 관계 : 업무가 처리하는 일의 방법에 따라 데이터가 어떻게 영향을 받고 있는 지 모델링

3가지 중요 개념

  1. 어떤 것(Things) 2. 관계(Relationship) 3. 성격(Attribute)

3층 스키마

  1. 외부 스키마 : 사용자, 업무상 데이터 접근, 일부만 표시(view)
  2. 개념 스키마 : 사용자 전체, 모든 데이터 규칙&의미 등
  3. 내부 스키마 : 물리적 저장구조, 운영체제 & 하드웨어에 종속적

ERD

  1. 도출, 그림 → 2.배치 → 3.관계 설정 → 4.관계명 서술 → 5.참여도 기술 → 6.필수 여부

2. 엔터티

현실 세계에서 독립적으로 식별 가능한 객체나 사물의 집합

  • 대상(인스턴스)들로 이루어진 집합

특징

  1. 유일한 식별자에 의해 식별

  2. 업무 정보

  3. 인스턴스들의 집합(2개 이상)

  4. 속성

  5. 업무 프로세스에 이용 ↔ 고립 엔티티 제거 필요

  6. 최소 1개 이상 관계

분류

  1. 유형 & 무형
    • 유형엔터티 : 안정, 지속, 구분용이
    • 개념엔터티 : 물리X
    • 사건엔터티 : 발생
  2. 발생 시점
    • 기본엔터티 : 원래정보, 독립적, 부모, 주식별자
    • 중심엔터티 : 기본엔터티로 발생, 그 업무의 중심
    • 행위엔터티 : 2개 이상의 부모 엔터티, 설계-모델링 단계 도출

명명 : 현업용어, 약자X, 단수명사, 유일성, 의미대로

속성

업무에서 필요로 하는 고유한 성질, 특징 → 컬럼으로 표현 가능한 단위

  • 최소의 데이터 단위
  • 인스턴스의 구성 요소
  • 구체적인 값을 가짐

관계

  • 1개의 엔터티 : 2개 이상의 인스턴스(행) 집합, 2개 이상의 속성(컬럼)
  • 1개의 속성 : 1개의 속성값

특징

  • 업무 정보
  • 주식별자에 함수적 종속성
  • 다중값일 경우에는 별도의 엔터티로 분리
  • 하나의 인스턴스는 속성마다 하나의 속성값(원자성)

함수적 종속성 : A값에 의해 B도 유일하게 결정되면, A→B

  1. 완전 함수적 종속성 : 기본키 완전 종속
  2. 부분 함수적 종속 : 기본키 일부 종속 예) 2개 중 1개

분류

  1. 속성의 특성에 따른 분류
    • 기본 속성 : 업무로 추출된 모든 속성
    • 설계 속성 : 기본 속성 외 새로 만듦, 변형으로 만들어짐 ex) 상품코드
    • 파생 속성 : 다른 속성에 의해 만들어짊. ex) 합계, 평균
  2. 엔터티 구성방식에 따른 분류

    PK, FK, 일반속성

  3. 분해 여부에 따른 속성

    단일 속성, 복합 속성, 다중값 속성

명명 : 업무사용, 서술식X, 약어X, 유일성

도메인 : 각 속성이 가질 수 있는 값의 범위 ex)데이터타입, 크기, 제약

3. 관계

엔티티간의 연관성

  • 어떻게 정의하느냐에 따라 변경됨

종류 1.존재적 관계 : 연관된 상태 2. 행위적 관계

구성 1. 관계명 2. 차수(카디널리티) 3. 선택성

관계 차수(카디널리티)

한 엔터티의 레코드(인스턴스)가 다른 엔터티의 레코드와 어떻게 연결되는지 표현

  • 1:1
    • 완전 1:1
    • 선택적 1:1 : 하나의 엔터티에 관계되는 엔터티가 하나이거나 없을 수 있는 경우
  • 1:N
  • M:N : 카테시안 곱 발생 → 연결엔터티의 추가로 1:N관계 해소 필요

페어링 : 인스턴스가 개별적으로 관계를 가지는 것

img

두 개의 엔터티 사이에 관계 도출 할 때 체크 할 사항

  1. 연관규칙 2. 정보의 조합 3. 관계연결에 대한 규칙 서술 4. 관계연결을 가능하게 하는 동사(verb)

4. 식별자 = 키

엔터티 대표 속성 , 유일성

주식별자 1. 유일성 2. 최소성 3. 불변성 4. 존재성(null X)

분류

| 대표성 여부 | 생성여부 | 속성수 | 대체여부 | | — | — | — | — | | 주식별자 | 내부식별자 | 단일식별자 | 본질식별자 | | 보조식별자 | 외부식별자 | 복합식별자 | 인조식별자 |

  1. 대표성 여부에 따른 식별자 종류
    1. 주식별자 : 유일성, 최소성, 대표성, 타 엔터티와 참조관계 연결
    2. 보조식별자 : 유일성, 최소성, 대표성X, 참조관계X
  2. 생성 여부에 따른 식별자 종류
    1. 내부 식별자 : 스스로
    2. 외부 식별자 : 외래키
  3. 속성 수에 따른 식별자 종류
    1. 단일 식별자 : 하나의 속성
    2. 복합 식별자 : 2개 이상의 속성
  4. 대체 여부에 따른 식별자 종류
    1. 본질 식별자 : 비즈니스 프로세스
    2. 인조 식별자 : 인위적, 자동 증가하는 일련번호

img

도출기준 : 업무에 자주 이용, 명칭이나 내역 같은 이름X, 속성 수 최대한 적게(조인 성능 저하)

관계간 엔터티 구분

  1. 강한 개체 : 독립적
  2. 약한 개체

식별 vs 비식별 관계

 식별자비식별자
목적강한 연결관계약한 연결관계
영향주식별자의 구성에 포함일반 속성에 포함
표기법실선점선
고려사항반드시 부모엔터티 종속약한 종속관계
 부모 주식별자 포함 필요독립적, 부모 주식별자 부분 필요
 상속받은 주식별자속성을 타 엔터티에 이전 필요상속받은 주식별자속성을 타 엔터티에 차단 필요
  부모쪽은 관계 참여가 선택 관계

5. 정규화

최소한의 데이터만을 하나의 엔터티에 넣는 식으로 데이터 분해하는 과정

  • 일관성, 중복X → 독립성 확보, 데이터 유연성을 위한 과정
  • 이상 현상 줄이기 위한 설계 기법
  • 논리 데이터 모델링 수행 시점
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
**이상현상** 1. 삽입이상 2. 갱신이상 3. 삭제이상 

**정규화 단계** 

1. 제 1정규화 (1NF) : 원자성(하나의 값)  
2. 제 2정규화 (2NF) : 완전 함수 종속 (부분 함수 종속성을 깨는 것이 목표)
    
                                  (PK 2개 이상일 때 PK일부와 종속되는 관계 분리)
    
3. 제 3정규화 (3NF) : 이행적 종속 없앰, a-b, b-c, a-c 가 성립 → a-b, b-c로
4. BCNF : 모든 결정자 후보키 
5. 제 4정규화 (4NF) : 다중값 종속성 제거
6. 제 5정규화 (5NF) : 조인 종속성 분해 

반정규화=역정규화 : 성능향상을 위해 중복 허용, 조인 줄임, 조회향상, 유연성X 

- 수행 속도 느림, 다량의 범위 자주, 특정 범위 데이터 자주, 요약/집계 정보

6. 관계 / 조인의 이해

관계 : 엔터티의 인스턴스 사이의 논리적인 연관성

  • 부모의 식별자를 자식에 상속, 상속된 속성을 매핑키(조인키)로 활용

분류 : 1. 존재 관계 : 엔터티간의 상태 2. 행위 관계 : 엔터티 간의 어떤 행위

계층형 데이터 모델 : 자기 자신끼리 관계가 발생, 셀프조인

상호배타적 관계 : 두 테이블 중 하나만 가능한 관계

Hash Join

  • 인덱스 없이도 가능
  • 해시함수 이용 → ‘=’
  • 해시테이블은 메모리에 생성 → 적재 크기 높아지면 임시영역에 저장
  • 선행테이블 build input / 후행테이블 prove input

슈퍼타입 vs 싱글타입

  1. OneToOne : 개별, 조인 많음, 관리 어려움, 테이블 많음
  2. PlusType : 조인 많음, 관리 어려움
  3. SingleType : 하나의 테이블, 조인 성능 높음. 관리 어려움, 성능 낮음

7. 트랜잭션

하나의 연속적인 업무 단위, 필수적인 관계 형태, All or Nothing

8. null 속성의 이해

아직 정해지지 않은 값

  • NULL 연산 = NULL
  • NULL 집계함수 = NULL무시
  • ERD : IE는 허용여부x , 바커는 옆에 동그라미 하용여부 표시

9. 본질식별자

  1. 본질 식별자 : 업무에 의해 만들어지는 식별자
  2. 인조 식별자 : 인위적으로 만들어지는 식별자 (편이성의 이유) , 주로 기본키로 사용(일련번호)
    • 중복 데이터 발생 가능성 → 데이터 품질 저하
    • 불필요한 인덱스 생성 → 저장공간 낭비 및 DML 성능저하
    • 인덱스는 DML시 INDEX SPLIT현상으로 인해 성능 저하됨.
This post is licensed under CC BY 4.0 by the author.