데이터 모델링
모델링
현실 세계 단순화해 표현하는 기법
- 현실 세계 반영
- 단순화해 설계
- 관리할 데이터 모델로 설계
특징
- 추상화
- 일정한 형식으로 표현, 아이디어나 개념 간략히 표현하는 과정
- 단순화
- 정해진 표기법으로 단순히 표현
- 명확화
- 불분명함 제거, 명확히 해석 가능하도록 기술
관점
- 데이터 관점
- 데이터 위주 모델링
- 업무 연관성, 데이터 간 관계
- 프로세스 관점
- 프로세스 위주 모델링
- 처리중, 처리 예정인 일 모델링
- 데이터와 프로세스의 상관 관점
- 데이터-프로세스 관계 위주
- 프로세스 흐름에 따른 데이터 영향 모델링
품질 유지
- 중복
- 동일 데이터 엔터티 중복 저장 지양
- 비유연성
- 데이터 모델과 프로세스 분리 → 유연성 높임
- 비일관성
- 데이터 중복 없는 경우에도 발생 가능
- 연관성 고려 않고 일부 데이터 변경시 발생
- 데이터 간 연관 관계 명확히 정의
모델링 단계
- 개념적 데이터 모델링
- 추상화 레벨 가장 높음
- 업무 중심적, 포괄적
- 논리적 데이터 모델링
- 재사용성 가장 높음
- DB 모델에 대한 key, 속성, 관계 등 모두 표현
- 물리적 데이터 모델링
- 성능, 가용성 등 물리적 성격 고려
- 실제 DB로 구현 위한 단계
데이터 독립성
3단계 스키마 구조 통한 독립성 보장
3단계 스키마 구조
- 외부 스키마
- 사용자 관점, 각 사용자가 보는 DB 스키마 정의
- 개념 스키마
- 통합 관점, 모든 사용자가 보는 DB 스키마 통합
- 전체 DB 표현
- 내부 스키마
- 물리적 관점, 물리적 저장 구조 나타냄
- 실질적 데이터 저장 구조, 칼럼 정의, 인덱스 등 포함
스키마 구조에 의한 독립성
사용자 관점과 물리적 표현 방식 분리
- 논리적 독립성
- 개념 스키마가 변경되어도 외부 스키마는 영향받지 않음
- 물리적 독립성
- 내부 스키마가 변경되어도 외부/개념 스키마는 영향받지 않음
ERD
Entity Relationship Diagram
표기방식
- Peter Chen
- IDEF1X
- IE/Crow’s Foot
- Min-Max/ISO
- UML
- Case*Method/Barker
ERD 작성 순서
- 엔터티 도출
- 엔터티 배치
- 엔터티 관계 설정
- 관계명 기입
- 관계 참여도 기입
- 관계 필수/선택 여부 기입
엔터티
식별 가능한 객체
특징
- 업무에서 쓰이는 정보
- 유니크함 보장하는 식별자 존재
- 2개 이상의 인스턴스 가짐
- 속성 가짐
- 다른 엔터티와 1개 이상의 관계 가짐
분류
- 유형/무형
- 유형 엔터티
- 물리적 형태 존재
- 개념 엔터티
- 물리적 형태 없이 개념적으로 존재
- 사건 엔터티
- 행위에 의한 발생, 통계 자료로 이용 가능
- 유형 엔터티
- 발생 시점
- 기본 엔터티
- 원래 존재하는 정보
- 독립적 생성, 자식 엔터티 가질 수 있음
- 중심 엔터티
- 기본 엔터티로부터 파생
- 행위 엔터티 생성
- 업무에 중심적 역할, 데이터의 양 많음
- 행위 엔터티
- 2개 이상의 엔터티로부터 파생
- 데이터의 잦은 변경 및 증가
- 기본 엔터티
명명 규칙
- 업무에 쓰이는 용어
- 한글은 약어 사용하지 않으며 영문은 대문자로 표기
- 단수 명사로 표현, 띄어쓰기 하지 않음
- 다른 엔터티와 의미상 중복될 수 없음
- 해당 엔터티의 데이터 명확히 표현 가능
속성
- 사물이나 개념의 특징 설명
- 의미상 더 쪼개지지 않는 레벨
- 프로세스에 필요한 항목
속성값
- 엔터티에 속하는 인스턴스 구체적으로 표현하는 데이터
- 하나의 속성은 하나의 속성값 가짐
관계
엔터티 $\supset$ 인스턴스 $\supset$ 속성
- 한 엔터티는 둘 이상의 인스턴스 가짐
- 한 인스턴스는 둘 이상의 속성 가짐
- 한 속성은 하나의 속성값 가짐
분류
특성에 따른 분류
- 기본속성
- 분석에 의해 바로 정의 가능
- 설계속성
- 도출해낸 속성
- 파생속성
- 다른 속성의 속성값 계산, 변형
- 데이터의 빠른 성능 보장
구성방식에 따른 분류
- Primary Key(PK) 속성
- 엔터티의 인스턴스 식별 가능한 속성
- 인스턴스에 유니크함 부여
- Foreign Key(FK) 속성
- 다른 엔터티의 속성에서 가져온 속성
- 다른 엔터티와의 관계 맺는 매개체 역할
- 일반속성
- PK, FK 속성 제외한 속성
도메인
속성이 가질 수 있는 속성값의 범위
관계
엔터티 간의 관계
- 존재 관계
- 존재 자체로 연관성 있는 관계
- 행위 관계
- 행위에 의해 연관성 생기는 관계
표기법
- 관계명
- 엔터티 간의 관계 알려주는 문장
- 각 엔터티의 관점에서 하나씩 관계명 가짐
- 현재형으로 명확한 표현 사용
- 관계차수(cadinality)
- 각 엔터티에서 관계에 참여하는 수
- 1:1, 1:m, n:m
- 관계선택사양
- 관계의 필수/선택 여부
- 필수적 관계
- 선택적 관계
- 관계의 필수/선택 여부
식별자
각 인스턴스 구분 가능하게 하는 대표적 속성
주식별자
- 기본키에 해당하는 속성
조건
- 유일성
- 유니크함 부여
- 최소성
- 유일성 보장하는 최소 개수의 속성 집합
- 불변성
- 속성값은 되도록 불변
- 존재성
- 속성값이 NULL일 수 없음
분류
대표성 여부
- 주식별자
- 보조식별자
- 인스턴스 식별 가능하나 주식별자 아님
- 다른 엔터티와 참조 관계로 연결되지 않음
- → FK로 쓰일 수 없음
스스로 생성 여부
- 내부식별자
- 외부식별자
단일 속성 여부
- 단일식별자
- 복합식별자
대체 여부
- 원조식별자(본질식별자)
- 업무 프로세스에 존재
- 가공되지 않은 식별자
- 대리식별자(인조식별자)
- 주식별자의 속성 두 개 이상인 경우 속성들을 하나로 묶어 사용
관계
- 식별자 관계
- 부모 엔터티의 식별자가 자식 엔터티의 주식별자
- 부모 엔터티 반드시 존재
- 1:1, 1:m 관계
- 비식별자 관계
- 부모 엔터티의 식별자가 자식 엔터티의 일반 속성
- → 일반 속성은 NULL 값 가능
- 부모 엔터티 없는 자식 엔터티 생성 가능
- 자식 엔터티 존재하는 상황에서 부모 엔터티 삭제 가능
'DB > SQLD' 카테고리의 다른 글
[SQLD] 데이터 모델과 SQL (0) | 2024.01.10 |
---|