티스토리 뷰
제 1장. 데이터 모델링의 이해
ㅇ 엔티티
- 유무형
1. 유형 : 물리적 형태 (사원, 물품)
2. 사건 : 업무 수행에 따라 발생 (주문, 창구)
3. 개념 : 관리해야할 개념적 정보 (조직, 장소)
- 발생 시점
1. 기본/키 : 원래 존재하는 정보 (사원, 부서)
2. 중심 : 업무에 있어 중요한 역할 (접수, 계약)
3. 행위 : 두 개 이상의 부모 엔티티로부터 발생 (주문내역, 계약진행)
ㅇ 엔티티 특징
- 필요로 해야하는 정보
- 유일한 식별자에 의해 식별 가능
- 인스턴스의 집합 (두 개 이상)
- 업무 프로세스에 의해 이용되어야 함
- 속성이 있어야 함 (두 개 이상) -> 한 개의 속성은 한 개의 속성값
- 다른 엔티티와 최소 한 개 이상의 관계
ㅇ 엔티티 이름 부여
- 협업 용어
- 약어 사용 X
- 단수명사
- 고유어
- 생성의미
- 서술식 X
ㅇ 속성
- 기본 속성 : 업무로부터 추출한 모든 속성 (제품이름, 제조년월, 제조원가, 원금, 예치기간, 이자율 등)
- 설계 속성 : 데이터 모델링, 업무 규칙화를 위해 속성을 새로 만들거나 변형하여 정의 (일련번호, 코드 등)
- 파생 속성 : 다른 속성에 영향을 받아 발생하는 속성, 계산된 값들 (계산값, 이자)
ㅇ 속성의 도메인
: 각 속성이 가질 수 있는 값의 범위
- 엔티티 내에서 속성에 대한 데이터 타입, 크기, 제약 사항을 지정
ㅇ 데이터 모델링
: 정보시스템 구축을 위한 데이터 관심의 업무 분석 기법
1. 현실 데이터에 대해 약속된 표기법에 의해 표현
2. DB구축을 위한 분석/설계의 과정
ㅇ 유의점
- 중복 : 중복성 최소화
- 비유연성 : Data 정의 / Data 사용 프로세스 간 분리
- 비일관성 : Data 간의 상호 연관관계 정의
ㅇ 개념
- 개념적 데이터 모델링 : 업무 중심적, 포괄정
- 논리적 데이터 모델링 : Key, 속성, 관계 등을 정확히 표현
- 물리적 데이터 모델링 : 성능, 저장 등 물리적인 성격
ㅇ DB 스키마 구조
- 외부 스키마 : 개인적 (사용자에게 어떻게 보여줄지)
- 개념 스키마 : 통합 관점 (전체적인 뷰)
- 내부 스키마 : 물리적 장치 입장
ㅇERD 표기법(출처)
ㅇ ERD 작성 순서
1. 엔티티 그리기
2. 배치
3. 관계 설정
4. 관계명 기술
5. 관계 참여도
6. 관계 필수 여부
ㅇ 관계
(단일화된 표기법 사용)
- 존재에 대한 관계 : 사원이 부서에 항상 속해있다.
- 행위에 대한 관계 : 주문은 고객이 주문을 할 때 발생
ㅇ 관계의 표기법
- 관계명 : 관계의 이름
- 관계 치수 : 1:N, 1:M, N:M
- 관계 선택사양 : 필수관계, 선택관계
ㅇ UML 클래스 다이어그램 관계(출처)
- 연결관계 : 하나의 클래스에 변화가 있으면 다른 클래스에도 변화 (점선 화살표)
- 의존관계 : 특정 클래스의 인스턴스가 작업 수행을 위해 다른 클래스를 알아야 함 (실선)
* : 0, 1, 또는 그 이상
1 : 정확히 1개
2..4 : 2~4개
3..* : 3개 이상
ㅇ 두 개의 엔티티 사이 관계 도출
- 연관규칙이 존재하는가?
- 정보의 조합이 발생하는가?
- 업무 기술서, 장표의 관계연결에 대한 규칙이 서술되어있는가?
- 업무 기술서, 장표의 관계연결을 가능하게 하는 동사가 있는가?
ㅇ 주식별자
- 유일성 : 주식별자에 의해 엔티티 내의 모든 인스턴스들이 유일하게 구분
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수
- 불변성 : 자주 변하지 않는 것
- 존재성 : 반드시 값을 가짐
ㅇ 식별자와 비별자관계(출처)
ㅇ 식별자의 분류체계(출처)
제 2장. 데이터 모델과 성능
ㅇ 성능 데이터 모델링
: 데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터
성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것
ㅇ 성능 데이터 모델링 순서
1. 데이터 모델링을 할 때 정규화를 정확하게 수행
2. DB 용량산정 수행
3. DB에 발생되는 트랜잭션 유형 파악
4. 용량과 트랜잭션의 유형에 따라 반정규화 수행
5. 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등 수행
6. 성능관점에서 데이터 모델 검증
ㅇ 정규화
: 중복 정보 정의를 최소화하여 논리 데이터 모델링의 목적인 정확성, 일관성, 단순성, 비 중복성, 안정성을 만족시키는 최적의
개념적 데이터
- 1차 정규화 : 같은 성격과 내용의 컬럼이 연속적으로 나타나는 컬럼이 존재할 때,
해당 컬럼을 제거하고 기본테이블의 PK를 추가해 새로운 테이블을 생성하고, 기존의 테이블과 1:N 관계를 형성하는 것
- 2차 정규화 : PK가 여러 키로 구성된 복합키로 구성된 경우가 2차 정규화의 대상이 되며,
복합키 전체에 의존하지 않고 복합키의 일부분에만 종속되는 속성들이 존재할 경우(즉, 부분적 함수 종속 관계)
이를 분리하는 것
- 3차 정규화 : PK에 의존하지 않고 일반컬럼에 의존하는 컬럼들을 분리
ㅇ 정규형
- 1차 정규형 : 각 로우마다 컬럼의 값이 1개씩만(원자값) 있어야 함
- 2차 정규형 : 테이블의 모든 컬럼이 완전 함수적 종속을 만족,
기본키중에 특정 컬럼에만 종속된 컬럼(부분적 종속)이 없어야 함
- 3차 정규형 : 기본키를 제외한 속성들 간의 이행적 함수 종속이 없는 것
기본키 이외의 다른 컬럼이 그외 다른 컬럼을 결정할 수 없는 것
ㅇ 반정규화
- 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능향상과
개발, 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법
- 데이터를 중복하여 성능을 향상시키기 위한 기법
- 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정
- 데이터 조회 시 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나
컬럼을 계산하여 읽을 때 성능이 저화도리 것이 예상되는 경우 반정규화 수행
ㅇ 반정규화 절차
1. 반정규화 대상 조사
- 범위처리빈도수 조사
- 대량의 범위 처리 조사
- 통계성 프로세스 조사
- 테이블 조인 개수
2. 다른 방법유도 검토
- 뷰 테이블
- 클러스터링 적용
- 인덱스 조정
- 응용애플리케이션
3. 반정규화 적용
- 테이블 반정규화
- 속성의 반정규화
- 관계의 반정규화
ㅇ 반정규화의 대상에 대해 다른 방법으로 처리
- 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 어려울 경우 뷰를 사용
- 대량의 데이터 처리나 부분처리에 의해 성능 저하가 될 경우 클러스터링을 적용하거나 인덱스를 조정
- 대량의 데이터는 Primary Key의 성격에 따라 부분적인 테이블로 분리할 수 있음 (파티셔닝 기법 적용)
- 응용애플리케이션에서 로직을 구하사는 방법을 변경
- 테이블의 반정규화
- 컬럼의 반정규화
- 관계의 반정규화
ㅇ 슈퍼/서브 타입 데이터 모델의 변환 기술
- 개별로 발생되는 트랜잭션에 대해서 개별 테이블로 구성
- 슈퍼타입+서브타입에 대해 발생되는 트랜잭션에 대해서 슈퍼타입+서브타입 테이블로 구성
- 전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성
ㅇ PK순서 경정 기준 (인덱스를 효율적으로 이용)
- 여러개의 속성이 하나의 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율
- 앞쪽에 위치한 속상 값이 가급적 '=' 아니면 최소한 범위 'BETWEEN', '<>' 가 들어와야 인덱스를 이용할 수 있음
ㅇ 분산 데이터베이스 장단점
- 장점
- 지역 자치성, 점증적 시스템 용량 확장
- 신뢰성과 가용성
- 효용성과 융통성
- 빠른 응답 속도와 통신비용 절감
- 데이터의 가용성과 신뢰성 증가
- 시스템 규모의 적절한 조절
- 각 지역 사용자의 요구 수용 증대
- 단점
- 소프트웨어 개발 비용
- 오류의 잠재성 증대
- 처리 비용의 증대
- 설계, 관리의 복잡성과 비용
- 불규칙한 응답 속도
- 통제의 어려움
- 데이터 무결성에 대한 위협
'SQL > Organize' 카테고리의 다른 글
[SQLD] 과목 2. SQL 기본 및 활용 정리 (2) | 2020.08.16 |
---|---|
[SQL] 데이터 조작을 위한 주요 함수 정리 (0) | 2019.01.15 |