[SQLD] 1과목_데이터 모델링의 이해_개념 정리
- SQLD 1과목 대비 개념 정리.
- 인터넷에 떠도는 개념정리들을 모아서 최대한 합치되, 기준이 되는 정리본이 있긴 함.
데이터 모델링의 이해
1. 데이터 모델링의 이해
1) 데이터 모델의 이해
모델링
- 정의: 현실세계를 단순화하여 표현하는 것
- 특징
- 추상화: 일정한 형식에 맞춰 표현 (=모형화, 가설적)
- 단순화: 제한된 표기법이나 언어로 표현 -> 이해하기 쉽게 표현
- 명확성: 이해하기 쉽게 표현하기 위해 애매모호함 제거, 정확하게 현상을 기술
- 관점
- 데이터 관점: 업무와 데이터 또는 데이터 사이의 관계(what, data)
- 프로세스 관점: 진행되고 있거나 진행되어야 하는 업무(how, process)
- 상관 관점: 데이터에 대한 업무 처리 방식의 영향(interaction)
데이터 모델링
- 정의: 정보 시스템 구축을 위한 데이터 관점의 업무 분석 기법
- 목적
- ① 정보에 대한 표기법을 통일하여 업무 내용 분석의 정확도 증대
- ② 데이터 모델을 기초로 DB 생성
- 기능
- 시스템 가시화, 시스템 구조화 행동 명세화, 시스템 구축의 구조화된 틀 제공
- 문서화, 세부 사항은 숨기는 다양한 관점 제공, 상세 수준의 표현방법 제공(구체화)
데이터 모델링의 중요성과 유의점
- 중요성
- 파급효과(Leverage)가 크다
- 복잡한 정보 요구사항의 간결한 표현(Conciseness)
- 데이터 품질 유지(Data Quality)
- 유의점
- 중복
- 비유연성 -> 데이터 정의와 데이터 사용 프로세스 분리하자
- 비일관성 -> 데이터들간 상호연관 관계에 대한 명확한 정의 필요
데이터 모델링 3단계 (&프로젝트 생명 주기)
- 개념적 모델링(in계획, 분석 단계): 추상적, 업무 중심적이고 포괄적인 수준의 모델링. EA 수립시 사용
- 논리적 모델링(in분석 단계): 시스템으로 구축하고자 하는 업무에 대해 key, 속성, 관계 등을 정확하게 표현. 높은 재사용성. 정규화
- 물리적 모델링(in설계 단계): 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격 고려
데이터 모델링에서 데이터 독립성의 이해
- 데이터 독립성의 필요성
: 유지보수비용 증가, 데이터 복잡도 증가, 데이터 중복성 증가, 요구사항대응 저하
(이미지 첨부)
- DB의 3단계 구조: 데이터 독립성 확보를 목표로 함
- 3층 스키마(3-level Schema)
- 외부 스키마: 각 사용자 단계의 개인적 DB 스키마. 사용자 관점. 응용 프로그램이 접근하는 DB를 정의
- 개념 스키마: 조직 전체의 통합된 DB 스키마. 설계자 관점. 데이터 모델링의 자향점
- 내부 스키마: 물리적으로 데이터가 저장되는 방법을 표현하는 스키마. 개발자 관점. 물리적 저장 구조.
- 데이터 독립성
- 논리적 독립성: 외부와 개념 스키마가 서로 변화에 무관
- 물리적 독립성: 개념과 내부 스키마가 서로 변화에 무관
- 사상(Mapping): 상호 독립적인 개념을 연결시켜주는 다리
- 외부적/개념적 사상(논리적 사상)
- 개념적/내부적 사상(물리적 사상)
데이터 모델링의 3요소
- Thing: 엔터티
- Relationships: 관계
- Attributes: 속성
데이터 모델 표기법: ERD
- IE, Baker 기법이 많이 쓰임
- ERD 작업순서: 엔터티 그림 -> 엔터티 배치 -> 엔터티 관계설정 -> 관계멸 기술 -> 관계의 참여도 기술 -> 관계필수여부
좋은 데이터 모델의 요소
- 완전성: 업무에 필요한 모든 데이터가 모델에 정의
- 중복배제: 하나의 DB내에 동일한 사실은 한번만
- 업무규칙: 많은 규칙을 사용자가 공유하도록 제공
- 데이터 재사용: 데이터가 독립적으로 설계되어야 함
- 의사소통: 업무규칙은 엔터티, 서브타입, 속성, 관계 등의 형태로 최대한 자세히 표현
- 통합성: 동일한 데이터는 한번만 정의, 참조 활용
2) 엔터티(Entity)
- 개념: 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합, 명사형
- 특징: 업무에서 필요로 하는 정보, 식별자에 의해 식별이 가능해야함, 인스턴스의 집합, 업무 프로세스에 의해 이용, 속성을 포함, 관계의 존재
- 엔터티 명명: 현업에서 사용하는 용어, 약어 사용X, 단수명사, 유일성 보장, 명확성
엔터티 분류
- 유무형에 따른 분류
- 유형 엔터티: 물리적 형태가 있고 지속적으로 활용되는 엔터티. ex. 사원, 물품, 강사
- 개념 엔터티: 물리적 형태가 없고 개념적 정보. ex. 조직, 보험
- 사건 엔터티: 업무 수행에 따라 발생하는 엔터티. ex. 주문, 청구, 미납
- 발생시점에 따른 분류
- 기본 엔터티: 독립적으로 생성되는 엔터티. 다른 엔터티의 부모 역할. ex. 사원, 부서, 고객, 상품, 자재
- 중심 엔터티: 기본 엔터티와 행위 엔터티의 중간에 존재하는 엔터티. ex. 계약, 사고, 청구, 주문, 매출
- 행위 엔터티: 2개 이상의 부모 엔터티로부터 발생. ex. 주문목록, 사원변경이력
3) 속성(Attribute)
- 정의: 업무에서 필요로 하는 인스턴스로, 최소의 데이터 단위
- 엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티는 두 개 이상의 인스턴스 집합
- 한 개의 엔터티는 두 개 이상의 속성을 갖는다
- 한 개의 속성은 한 개의 속성값을 갖는다
- 속성의 표기법: IE, Baker 표기법
속성의 종류
- 특성에 따른 분류
- 기본 속성: 본래의 속성
- 설계 속성: 업무 규칙화를 위해 발생하는 속성
- 파생 속성: 다른 속성에 의해 만들어지는 속성. ex. 계산된 값
- 분해 가능 여부에 따른 분류
: 단일 속성, 복합 속성, 단일값 속성, 다중값 속성
- 엔터티 구성방식에 따른 분류
- 기본키 속성: 엔터티를 식별할 수 있는 속성
- 외래키 속성: 다른 엔터티와의 관계에서 포함된 속성
- 일반 속성: 엔터티에 포함되고 PK나 FK 속성이 아닌 속성
도메인
: 각 속성이 가질 수 있는 값의 범위
- 엔터티 내에서 속성에 대한 데이터 타입과 크기 그리고 제약사항을 지정하는 것
4) 관계(Relationship)
- 정의: 엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태
- 페어링: 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것
- 종류
- ERD 기준: 존재 관계(엔터티간의 상태), 행위 관계(엔터티간에 발생하는 행위)
- UML 기준: 연관 관계(실선 표기), 의존 관계(점선 표기)
- 식별자에 따른 분류: 식별 관계, 비식별 관계
5) 식별자(Identifier)
- 정의: 엔터티를 대표할 수 있는 속성.
- 하나의 엔터티에는 반드시 하나의 유일한 식별자가 존재
- 특징: 유일성, 최소성, 불변성, 존재성
- 종류
- 대표성 여부에 따른 분류: 주 식별자(대표성 만족), 보조 식별자(유일성과 최소성만 만족)
- 생성 여부에 따른 분류: 내부 식별자(자연스럽게 존재), 외부 식별자(다른 엔터티와의 관계를 통해 생성됨)
- 속성 수에 따른 분류: 단일 식별자, 복합 식별자
- 대체 여부, 업무적 의미에 따른 분류: 본질 식별자(대체X), 인조 식별자(대체O)
2. 데이터 모델과 성능
1) 성능 데이터 모델링의 개요
- 정의: 데이터 모델링시, 어떤 작업유형에 따라 성능향상을 도모해야하는지 목표를 분명히 해야 정확한 성능향상 모델링 가능
- 수행 시점: 분석/설계단계
- 고려사항: 정규화(반드시 해야함), 반정규화
2) 정규화(Normalization)와 성능
- 정규화를 통한 성능 향상
- 데이터의 중복성 제거.
- 입력/수정/삭제의 성능 향상
- 함수적 종속성: 데이터들이 어떤 기준값에 의해 종속되는 현상(= 종속자가 결정자에 의해 종속됨). ex. 이름, 주소 등이 주민등록번호에 의해 종속됨
- 반정규화를 통한 성능 향상
- 반정규화 기법
- 테이블 반정규화, 칼럼 반정규화, 관계 반정규화
3) 대량 데이터에 따른 성능
- 로우 체이닝(row chaining): 행 길이가 너무 길어 여러 블록에 걸쳐 저장되는 현상
- 로우 마이그레이션(row migration): 수정된 데이터가 해당 블록이 아닌 다른 블록의 빈 공간에 저장되는 현상
- 테이블 분할: 반정규화 기법
- 수직분할: column 단위로
- 수평분할: row 단위로
- 파티셔닝(patitioning): 하나의 테이블을 여러 데이터 파일에 분산 저장
4) 데이터베이스 구조와 성능
- 슈퍼타입: 공통 부분
- 서브타입: 공통으로부터 상속받아 다른 엔터티와 차이가 있는 속성
- 슈퍼타입/서브타입 데이터 모델 변환을 통한 성능 향상
: 속성을 할당하여 배치하는 수평분할된 형태의 모델 변환을 통해 1 정확하게 업무 표현 가능 2 물리적 모델링 시 선택의 폭 넓혀짐
- 변환 기술
- OneToOne type(1:1 타입)
- Plus type(슈퍼/서브 타입)
- Single type(All in One 타입)
5) 분산 데이터베이스와 성능
- 설계 방식
- 상향식: 지역 스키마 작성 후 전역 스키마 작성
- 하향식: 전역 스키마 작성 후 지역사상 스키마 작성
- 장점: 1 신뢰성과 가용성 증가 2 빠른 응답 속도와 통신비용 절감 3 용량 확장 용이
- 단점: 1 관리 및 통제 어려움 2 데이터 무결성 관리 어려움 3 S/W 개발 비용 및 처리 비용 증가 4 불규칙한 응답 속도
- 분산 DB의 투명성
- 분할 투명성: 하나의 논리적 관계가 분할되어 각 단편의 사본이 여러 사이트에 저장됨
- 위치 투명성: 사용하려는 데이터 저장 장소가 명시되지 안하도 됨
- 지역사상 투명성: 지역 DBMS와 물리적 DB 사이의 사상이 보장됨
- 중복 투명성: DB 객체 중복 여부를 몰라도 됨
- 장애 투명성: 구성요소(DBMS, 컴퓨터)의 장애에 무관하게 트랜잭션의 원자성이 유지됨
- 병행 투명성: 다수의 트랜잭션을 동시 수행했을 때 겨과의 일관성이 유지됨