++/자격증

[SQLD] 1과목 - 데이터 모델링의 이해

writtenbyrla 2023. 11. 11. 00:49

 
 
혼자서 키워드만 보고 회독하려고 남기는 자료,,
헷갈리는 부분 + 개념 살짝만 정리하는거라 빠진 부분 많음
 
 


 

발생시점에 따른 엔터티 분류

1. 기본엔터티: 독립적(상품, 회원)
2. 중심엔터티: 핵심적(주문, 계약)
3. 행위엔터티: 주문 내역
 


 

데이터모델링 유의점

1. 중복
2. 비유연성

  • 데이터의 정의를 데이터의 사용 프로세스와 분리하여 유연성을 높인다(O)
  • 사용자가 처리하는 프로세스나 장표 등에 따라 매핑이 될 수 있도록 프로그램과 테이블간의 연계성을 높인다(X)

3. 비일관성
 


 

데이터모델링 종류

1. 개념적 데이터 모델링: 추상화, 업무중심적, 포괄적
2. 논리적 데이터 모델링: Key, 속성, 관계, 재사용성 높음
3. 물리적 데이터 모델링: 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격 고려
 


 

데이터베이스 스키마 구조 3단계

1. 외부 스키마: 사용자 관점
2. 개념 스키마: 통합, 관계
3. 내부 스키마: 물리적 관점, 데이터 저장 구조나 컬럼 정의 등
 


 

ERD

1. 1976년 피터첸에 의해 Entity0Relationship Model(E-R Model)이라는 표기법이 만들어졌다.
2. 엔터티 도출 → 엔터티 배치 → 관계 설정 → 관계명 기술
3. 가장 중요한 엔터티는 왼쪽 상단 아래 배치
 


 

엔터티(Entity) 특징

1. 영속적으로 존재하는 인스턴스의 집합(두 개 이상)
2. 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.(통계성, 코드성 엔터티의 경우 생략 가능)

  • 객체지향의 디자인패턴에는 싱글턴패턴이 있어 하나의 인스턴스를 가지는 클래스가 존재한다. 이와 유사하게 엔터티는 한 개의 인스턴스를 가지는 것만으로도 충분한 의미를 부여할 수 있다.(X) => 두 개 이상 인스턴스

 


 

엔터티, 인스턴스, 속성, 속성값 관계

1. 한 개의 엔터티는 두 개 이상인스턴스의 집합
2. 한 개의 엔터티는 두 개 이상속성
3. 한 개의 속성한 개속성값
 


 

속성의 특성에 따른 분류

1. 기본 속성: 업무상 필요한 데이터 정의(원금, 예치기간, 이자)
2. 설계 속성: 업무를 규칙화하기 위해 새로 만들거나 변형(예금분류)
3. 파생 속성: 원래 속성의 값을 계산하여 저장할 수 있도록 만든 속성(이자율) 
 


도메인

1. 엔터티 내에서 속성에 대한 데이터타입과 크기, 제약사항 지정
 


 

데이터모델링 속성 명칭 부여

1. 가급적 해당 업무에서 자주 사용하는 이름 이용
2. 서술식 용어 사용 X
3. 약어사용 가급적 제한
4. 전체 데이터모델에서 유일성 확보
 
 


 

데이터모델링의 관계

1. 존재/행위 관계: 구분하지 않고 단일화된 표기법 사용
2. 연관/의존 관계: 실선과 점선으로 구분하여 표기
 


 

관계 표기법

1. 관계명
2. 관계차수
3. 관계선택사양: 필수관계, 선택관계
 
 


 

엔터티 사이 관계 체크 사항

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


 

식별자의 종류

1. 주식별자와 보조식별자

  • 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.(O)

2. 내부식별자와 외부식별자(FK): 엔터티 내에서 스스로 생성되었는지 여부에 따라
3. 단일식별자와 복합식별자
4. 본질식별자와 인조식별자: 원래 업무적으로 의미가 있던 식별자 속성을 대체하여 일련번호와 같이 새롭게 만든 식별자를 구분
 
+ 이름은 식별자로 부적절(동명이인이 있으므로)


 

주식별자의 특징

1. 유일성
2. 최소성
3. 불변성
4. 존재성
 

  • 명칭, 내역 등과 같이 이름으로 기술되는 것들을 주식별자로 지정한다.(X)

 


 

식별자와 비식별자관계 비교

식별자 비식별자
자식 주식별자 구성에 포함 자식 일반 속성에 포함
실선 점선
반드시 부모엔터티 종속
자식 주식별자구성에 부모 주식별자포함 필요
상속받은 주식별자속성을 타 엔터티에 이전 필요
자식 주식별자구성을 독립적으로 구성
자식 주식별자구성에 부모 주식별자 부분 필요
상속받은 주식별자속성을 타 엔터티에 차단 필요
부모쪽의 관계참여가 선택관계

 

  • 비식별자 관계로 연결하는 것을 고려해야 하는 경우

        - 여러 개의 엔터티를 하나로 통합하면서 각각의 엔터티가 갖고 있던 여러 개의 개별 관계가 통합되는 경우(O)
        - 부모엔터티의 인스턴스가 자식 엔터티와 같이 소멸되는 경우(X)
 

 


성능 데이터 모델링 순서 

정규화 → 용량산정 → 트랜잭션 → 반정규화 → 조정 → 성능관점에서 데이터 모델 검증

 

 

정규화

  1. 1차 정규화: 중복 속성 제거 - 중복되는 컬럼을 따로 뺌
  2. 2차 정규화: 종석 제거**(함수종속성 FD)** - 엔터티 독립(테이블 따로 뺌)
  3. 3차 정규화: 기본키가 아닌 다른 속성들끼리 종속되어서는 안된다(이행 종속 불가)

 

반정규화

1. 테이블 반정규화

기법분류 기법 내용
테이블 병합 1:1 관계 테이블병합 1:1 관계를 통합하여 성능 향상
1:M 관계 테이블병합 1:M 관계를 통합하여 성능 향상
슈퍼/서브타입 테이블 병합 슈퍼/서브 관계를 통합하여 성능 향상
테이블 분할 수직분할 칼럼 단위의 테이블을 디스크 I/O를 분산처리 하기 위해
테이블을 1:1로 분리하여 성능 향상
(트랜잭션이 처리되는 유형 파악이 선행)
수평분할 로우 단위로 집중 발생되는 트랜잭션을 분석하여
디스크 I/O 및 데이터 접근의 효율성을 높여 성능을 향상하기 위해
로우 단위로 테이블을 쪼갬
(관계가 없음)
테이블 추가 중복 테이블 추가 다른 업무이거나 서버가 다른 경우 동일한 테이블 구조를 중복하여 원격 조인을 제거하여 성능 향상
통계 테이블 추가 SUM, AVG 등을 미리 수행하여 계싼해 둠으로써 조회 시 성능 향상
이력 테이블 추가 이력 테이블 중에서 마스터 테이블에 존재하는 레코드를 중복하여 이력 테이블에 존재하는 방법은 반정규화의 유형
부분 테이블 추가 하나의 테이블의 전체 컬럼 중 자주 이용하는 집중화된 칼럼들이 있을 때 디스크 I/O를 줄이기 위해 해당 칼럼들을 모아놓은 별도의 반정규화 된 테이블을 생성

 

2. 컬럼 반정규화

반정규화 기법 내용
중복컬럼 추가 조인에 의해 처리할 때 성능저하를 예빵하기 위해(조인을 감소시키기 위해) 중복된 컬럼을 위치시킴
파생컬럼 추가 트랜잭션이 처리되는 시점에 계싼에 의해 발생되는 성능 저하를 예방하기 위해 미리 값을 계산하여 컬럼에 보관
이력테이블 컬럼 추가 대량의 이력데이터를 처리할 때 불특정 날짜 조회나, 최근 값을 조회할 때 나타날 수 있는 성능 저하를 예방하기 위해 이력테이블에 기능성 컬럼(최근값 여부, 시작과 종료일자 등)을 추가
PK에 의한 컬럼 추가 복합의미를 갖는 PK를 단일 속성으로 구성하였을 경우 발생
단일 PK 안에서 특정 값을 별도로 조회하는 경우 성능저하가 발생될 수 있음
이 때 이미 PK 안에 데이터가 존재하지만 성능 향상을 위해 일반속성으로 포함하는 방법이 PK에 의한 컬럼 추가 반정규화
응용시스템 오작동을 위한 컬럼 추가 업무적으로는 의미가 없지만 사용자가 데이터 처리를 하다가 잘못 처리하여 원래 값으로 복구하기 원하는 경우, 이전 데이터를 임시적으로 중복하여 보관하는 기법
컬럼으로 이것을 보관하는 방법은 오작동 처리를 위한 임시적인 기법이지만, 이것을 이력 데이터 모델로 풀어내면 정상적인 데이터 모델의 기법이 될 수 있음

 

3. 관계 반정규화

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

 


 

데이터 성능 향상 기법

  1. 뷰 사용: 조인이 지나치게 많은 경우
  2. 클러스터링, 인덱스 조정: 대량의 데이터처리나 부분처리에 의해 성능이 저하되는 경우
  3. 파티셔닝 기법
    • 대량의 데이터는 PK의 성격에 따라 부분적인 테이블로 분리할 수 있음
    • 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의 테이블로 분리
  4. 응용 애플리케이션에서 로직을 구사하는 방법 변경

 

분산 데이터베이스의 6가지 투명성

  1. 분할: 릴레이션
  2. 위치: 데이터 저장장소 명시가 불필요
  3. 지역사상: Mapping
  4. 중복
  5. 장애
  6. 병행

'++ > 자격증' 카테고리의 다른 글

[SQLD] 2과목 - SQL 기본 및 활용(2)  (6) 2023.11.20
[SQLD] 2과목 - SQL 기본 및 활용(1)  (0) 2023.11.17