-
[SQLD] 데이터 모델링 파트 간단 정리SQLD 2023. 3. 5. 15:34
모델링 : 데이터베이스의 모델링은 '현실 세계를 단순화하여 표기하는 기법'
모델링의 특징
1. 추상화 : 현실 세계를 일정한 형식으로 표현하는 것. 아이디어나 개념을 간략하게 표현하는 과정
2. 단순화 : 복잡한 현실세계를 정해진 표기법으로 단순하고 쉽게 표현한다는 의미
3. 명확화 : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다는 의미
모델링의 세 가지 관점
1. 데이터관점
2. 프로세스 관점
3. 데이터와 프로세스의 상관 관점
모델링의 세 가지 단계
1. 개념적 데이터 모델링
2. 논리적 데이터 모델링
3. 물리적 데이터 모델링
3단계 스키마 구조
1. 외부 스키마 : 사용자의 관점
2. 개념 스키마 : 통합된 관점
3. 내부 스키마 : 물리적인 관점
3단계 스키마 구조가 보장하는 독립성
1. 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향받지 않는다.
2. 물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마는 영향받지 않는다.
ERD(Entity Relationship Diagram) : 시스템에 어떤 엔터티들이 존재하며 그들 간에 어떤 관계가 있는지를 나타내는 다이어그램.
까마귀발 표기법(IE/Crow's Foot) 을 가장 많이 사용함
ERD 작성 순서
1. 엔터티를 도출하고 그림
2. 엔터티를 적절하게 배치
3. 엔터티 간의 관계를 설정
4. 관계명을 기입
5. 관계의 참여도를 기입
6. 관계의 필수/선택 여부 기입
엔터티(Entity) : 업무에서 쓰이는 데이터를 용도별로 분류한 그룹. table 이라고 볼 수 있다.
엔터티의 특징
1. 업무에서 쓰이는 정보여야 함
2. 유니크함을 보장할 수 있는 식별자가 있어야 함
3. 2개 이상의 인스턴스를 가지고 있어야 함
4. 반드시 속성을 가지고 있어야 함
5. 다른 엔터티와 1개 이상의 관계를 가지고 있어야 함
엔터티 분류
1. 유형, 무형 : 유형 엔터티, 개념 엔터티, 사건 엔터티
2. 발생 시점 : 기본 엔터티, 중심 엔터티, 행위 엔터티
속성(Attribute) : 사물이나 개념의 특징을 설명해줄 수 있는 항목들
속성은 더 이상 쪼개지지 않는 레벨이어야 하고 프로세스에 필요한 항목이어야 함
속성 분류
특성에 따른 분류 : 기본 속성, 설계 속성, 파생 속성
구성방식에 따른 분류 : pk(primary key)속성, fk(foreign key) 속성, 일반속성
도메인(domain) : 속성이 가질 수 있는 속성값의 범위
ex) 우편번호는 다섯 자리의 숫자 범위를 갖는다.
관계 : 엔터티와 엔터티와의 관계를 의미
존재 관계, 행위 관계가 있음
관계 표기법
관계명 : 관계의 이름
관계 차수 : 관계에 참여하는 수
관계선택사양 : 필수인지 선택인지의 여부
식별자 : 속성 중에 각각의 인스턴스를 구분 가능학게 만들어주는 대표 격인 속성
주식별자
유일성 : 각 인스턴스에 유니크함을 부여해서 식별 가능
최소성 : 최소 개수로 존재
불변성 : 속성값 변하면 안됨
존재성 : NULL 불가
식별자 분류
1. 대표성 여부 : 주식별자, 보조식별자
2. 스스로 생성되었는지 여부 : 내부식별자, 외부식별자
3. 단일 속성의 여부 : 단일식별자, 복합식별자
4. 대체 여부 : 원조식별자, 대리식별자
식별자 관계 : 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계
비식별자 관계 : 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계
정규화 : 데이터 정합성을 위해 엔터티를 작은 단위로 분리하는 과정
모든 엔터티를 무작정 분리하면 안되기 때문에 정규화를 하기 위한 일정한 룰이 존재
제1정규형 : 모든 속성은 하나의 값만 가져야한다.
제2정규형 : 엔터티의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 한다. 주식별자가 단일식별자가 아닌 복합식별자인 경우 일반속성이 주식별자의 일부에만 종속될 수 있는데 이럴경우 별도의 엔터티로 분리한다.
제3정규형 : 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다.
반정규화(역정규화) : 데이터의 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정
조회 성능은 향상될 수 있으나 입력, 수정, 삭제 성능은 저하될 수 있으며 데이터 정합성 이슈가 발생할 수 있다.
반정규화 과정은 정규화가 끝난 후 거치게 됨
테이블 반정규화
1. 테이블 병합
- 1:1 관계 테이블 병합
- 1:M 관계 테이블 병합
- 슈퍼 서브 타입 테이블 병합
2. 테이블 분할
- 테이블 수직 분할(속성 분할)
- 테이블 수평 분할(인스턴스 분할, 파티셔닝)
3. 테이블 추가
- 중복 테이블 추가
- 통계 테이블 추가
- 이력 테이블 추가
- 부분 테이블 추가
컬럼 반정규화
1. 중복 컬럼 추가
2. 파생 컬럼 추가
3. 이력 테이블 컬럼 추가
관계 반정규화(중복관계 추가)
트랜잭션(transaction) : 데이터를 조작하기 위한 하나의 논리적인 작업 단위
NULL : NULL 은 존재하지 않음(값이 없음)을 의미
데이터 모델링 순서
1. 데이터 모델에 맞게 정규화 수행
2. 데이터베이스의 용량 및 트랜잭션 유형을 파악(성능 저하를 일으키는 부분이 없는지 검토)
3. 데이터베이스 성능을 고려하여 반정규화를 수행
4. PK/FK 등을 조정하여 인덱스를 반영함으로써 성능을 향상시킴
5. 데이터 모델의 성능을 검증
출처 : 유선배 SQL 개발자 SQLD 과외 노트
'SQLD' 카테고리의 다른 글
[SQLD] SQL 기본 및 활용 (0) 2023.03.19