Programming
[SQLD] 1. 데이터 모델링의 이해
상상쓰
2022. 3. 8. 01:09
1. 데이터 모델링이란?
- 업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현함으로써 업무 내용을 정확하게 분석하는 것
- 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터관리에 사용하기 위한 것
2. 데이터 모델링 유의점
- 중복 : 데이터베이스가 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 한다.
- 비유연성 : 데이터 모델링은 데이터 혹은 프로세스의 작은 변화가 애플리케이션과 데이터베이스에 중대한 변화를 일으킬 수 있는 가능성을 줄인다.
- 비일관성 : 데이터간의 상호 연관관계를 명확하게 정의하여 일관성 있게 데이터가 유지되도록 한다.
3. 데이터 모델링 개념
- 개념적 : 추상화 수준이 높고 업무중심적이고 포괄적인 수준의 모델링 진행, 전사적 데이터 모델링, EA수립시 많이 이용
- 논리적 : 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음
- 물리적 : 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계
4. 데이터베이스 스키마
- 외부스키마
- 개념스키마 : 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현, DB에 저장되는 데이터와 그들간의 관계를 표한하는 스키마
- 내부스키마
5. ERD 작성 순서
- 엔터티를 그린다.
- 엔터티를 적절하게 배치한다. (일반적으로 사람의 눈은 왼쪽에서 오른쪽, 위쪽에서 아래쪽으로 이동하는 경향이 있기 때문에 엔터티를 왼쪽 상단에 배치)
- 엔터티간 관계를 설정한다.
- 관계명을 기술한다.
- 관계의 참여도를 기술한다.
- 관계의 필수여부를 기술한다.
6. 엔터티의 특징
- 유일한 식별자에 의해 식별이 가능
- 영속적으로 존재하는 인스턴스의 집합('한 개'가 아니라 '두 개 이상')
- 속성이 반드시 필요(속성 : 인스턴스에서 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위)
- 다른 엔터티와 최소 한 개 이상의 관계가 필요(단, 통계성 엔터티나, 코드성 엔터티의 경우 관계를 생략)
7. 속성의 특성에 따른 분류
- 기본속성
- 설계속성
- 파생속성
8. 데이터모델링의 관계
- 관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있으나 ERD에서는 존재와 행위를 구분하지 않고 단일화된 표기법을 사용
- UML에는 클래스다이어그램의 관계 중 연관관계와 의존관계가 있고 이것은 실선과 점선의 표기법으로 다르게 표현
9. 관계의 표기법
- 관계법 : 관계의 이름
- 관계차수 : 1:1, 1:M, M:N
- 관계선택사양 : 필수관계, 선택관계
10. 식별자의 분류체계
- 대표성 여부
- 주식별자 : 타 엔터티와 참조관계를 연결할 수 있는 식별자(유일성, 최소성, 불변성, 존재성(Null 안됨))
- 보조식별자 : 대표성을 가지지 못해 타 엔터티와 참조관계를 연결할 수 없는 식별자
- 스스로 생성여부
- 내부식별자 : 엔터티 내부에서 스스로 만들어지는 식별자
- 외부식별자 : 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자
- 속성의 수
- 단일식별자 : 하나의 속성으로 구성된 식별자
- 복합식별자 : 둘 이상의 속성으로 구성된 식별자
- 대체 여부
- 본질식별자 : 업무에 의해 만들어지는 식별자
- 인조식별자 : 인위적으로 만든 식별자
11. 식별자와 비식별자관계 비교
- 식별자 관계
- 강한 연결관계 표현
- 부모의 주식별자가 자식 주식별자의 구성에 포함됨
- 실선 표현
- 상속받은 주식별자속성을 타 엔터티에 이전 필요
- 비식별자 관계
- 약한 연결관계 표현
- 부모의 주식별자가 자식 일반 속성에 포함됨
- 점선 표현
- 상속받은 주식별자속성을 타 엔터티에 차단 필요
12. 성능을 고려한 데이터 모델링의 순서
- 데이터 모델링을 할 때 정규화를 정확하게 수행
- 데이터베이스 용량산정을 수행
- 데이터베이스에 발생되는 트랜잭션의 유형을 파악
- 용량과 트랜잭션의 유형에 따라 반정규화를 수행
- 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등을 수행
- 성능관점에서 데이터 모델을 검증
13. 정규화
- 1차 정규화 : 도메인 값이 하나의 값을 갖도록 테이블을 분리(중복속성에 대한 분리)
- 2차 정규화 : 완전 함수 종속을 만족하도록 테이블을 분리
14. 반정규화
- 테이블병합
- 1:1 관계 테이블병합
- 1:M 관계 테이블병합
- 슈퍼/서브타입 테이블병합
- 테이블분할(파티셔닝)
- 수직분할
- 수평분할
- 테이블추가
- 중복테이블 추가
- 통계테이블 추가
- 이력테이블 추가
- 부분테이블 추가
- 칼럼의 반정규화
- 중복칼럼 추가
- 파생칼럼 추가
- 이력테이블 칼럼추가
- PK에 의한 칼럼 추가
- 응용시스템 오작동을 위한 칼럼 추가
15. 분산 데이터베이스 장단점
- 장점
- 지역 자치성, 점증적 시스템 용량 확장
- 신뢰성과 가용성
- 효용성과 융통성
- 빠른 응답 속도와 통시닙용 절감
- 시스템 규모의 적절한 조절
- 단점
- 소프트웨어 개발 비용
- 오류의 잠재성 증대
- 설계, 관리의 복잡성
- 불규칙한 응답 속도
- 통제의 어려움
- 데이터 무결성에 대한 위협