-> 블로그 이전

[SQLD] 1-1. 데이터 모델링의 이해

2021. 10. 20. 21:09Certificate`/SQLD

1. 데이터 모델의 이해

모델링

정의

- 복합한 현실세계 (사물, 사물, 개념 등)를 일정한 표기법에 따라 표현하는 일

- 복잡한 현실세계를 단순화해 표현하는 것

 

특징

1. 추상화 : 다양한 현상을 일정한 양식인 표기법에 따라 표현

2. 단순화 : 복잡한 현실세계를 약속된 표기법에 의해 쉽게 이해할 수 있도록 하는 개념

3. 명확화 : 누구나 이해하기 쉽게 하기 위해 애매모호함을 제거하고 정확하게 현상을 기술

 

관점

1. 데이터 관점 (What, Data) : 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지

2. 프로세스 관점 (How, Process) : 실제하고 있는 업무는 무엇인지 또는 무엇을 해야 하는지

3. 상관 관점 (D vs P) : 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지

 

데이터 모델링

정의

- 현실세계의 데이터(What)에 대해 약속된 표기법에 의해 표현하는 과정

- DB를 구축하기 위한 분석, 설계의 과정

 

요소

- Things : 업무가 관여하는 어떤 것 - 엔터티

- Attributes : 어떤 것이 가지는 성격 - 속성

- Relationships : 업무가 관여하는 어떤 것 간의 관계 - 관계

 

중요성

- 파급효과

- 복잡한 정보 요구사항의 간결한 표현

- 데이터 품질

 

유의성

- 중복 : DB가 여러 장소에 같은 정보를 저장하지 않게 함

- 비유연성 : 데이터 정의를 데이터 사용 프로세스와 분리

- 비일관성 : 데이터와 데이터 간 상호 연관 관계에 대한 명확한 정의가 필요

 

좋은 데이터 모델의 요소 (완 중 업 재 의 통)

- 완전성 / 중복 배제 / 업무 규칙 / 데이터 재사용 / 의사소통 / 통합성

 

데이터 모델링의 3단계 (ANSI/SPARC)

1. 개념적 데이터 모델링 : 추상화 수준이 높고 업무 중심적이고 포괄적인 수준의 모델링 (추상적)

2. 논리적 데이터 모델링 : 업무의 구체적인 모습과 흐름에 따른 구체화한 업무 중심의 데이터 모델 생성

3. 물리적 데이터 모델링 : 실제 DB에 이식할 수 있도록 물리적 성격을 고려 (구체적)

 

프로젝트 생명주기에 따른 데이터 모델링

데이터 모델링 개념단계 분석단계 설계단계
프로젝트 생명주기 개념적 모델링 논리적 모델링 물리적 모델링
현실 프로젝트   개념적 모델링 + 논리적 모델링 물리적 모델링

 

데이터 독립성

정의

- 하위 스키마를 변경해도 상위 스키마가 영향을 받지 않는 특성

- 개별 형식이 가지는 고유의 기능을 유지시키고 그 기능을 극대화하기 위함

 

목적

- 데이터 복잡도 낮추기

- 데이터 중복성 낮추기

- 유지보수 비용 절감하기

- 요구사항 대응 저하

 

효과

- 각 뷰의 독립성을 유지하고 계층별 뷰에 영향을 주지 않고 변경 가능

- 단계별 스키마에 따라 DDL과 DML이 다름을 제공

 

항목 내용 비고
외부 스키마 -  여러 개의 사용자 관점으로 구성 - 사용자 관점
- 접근하는 특성에 따른 스키마 구성
개념 스키마 - 조직 전체의 관점에서 DB를 기술
- DB에 저장되는 데이터와 그들 간의 관계를 표현
- 통합(조직) 관점
내부 스키마 - DB가 물리적으로 저장된 형식
- 물리적 장치에서 데이터가 실제적으로 저장되는 방법을 표현
- 물리적 저장구조 관점
독립성 내용 특징
논리적 독립성 - 개념 스키마가 변경되어도 의부 스키마에는 영향 X
- 논리적 구조가 변경되어도 응용 프로그램에 영향 X
- 사용자 특성에 맞는 변경 가능
- 통합 구조 변경 가능
물리적 독립성 - 내부 스키마가 변경되어도 외부/개념 스키마에는 영향 X
- 물리적 구조(저장장치)가 변경되어도
응용 프로그램/개념 스키마에 영향 X
- 물리적 구조 영향 없이 개념구조 변경 가능
- 개념구조 영향 없이 물리적 구조 변경 가능

사상

- 상호 독립적인 개념들을 연결시켜주는 다리

사상 내용
외부/개념적 사상(논리적 사상) - 외부적 뷰와 개념적 뷰의 상호 관련성을 정의
개념/내부적 사상(물리적 사상) - 개념적 뷰와 저장된 DB의 상호 관련성을 정의

 

2. 엔터티 (Entity)

개념

- 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것(Things)

- 개체들의 특성을 설명할 수 있는 속성(Attribute)을 갖는다

- 앤터티 = 인스턴스의 집합 / 인스턴스 = 엔터티의 하나의 값

 

특징

- 반드시 필요하고 관리하고자 하는 정보

- 유일한 식별자에 의해 식별 가능

- 2개 이상의 인스턴스의 집합

- 반드시 속성이 있어야 한다

- 다른 엔터티와 최소 1개 이상의 관계가 있어야 한다

- 업무 프로세스에 의해 이용돼야 한다

 

분류

- By 유무형

  • 유형 엔터티 - 물리적 형태가 존재 ex) 사원, 물품
  • 개념 엔터티 - 물리적 존재 X / 관리해야 할 정보 ex) 조직, 장소, 보험상품
  • 사건 엔터티 - 업무(행위)의 수행에 의한 ex) 주문, 창구

- By 발생 시점

  • 기본 엔터티 - 독립적으로 생성 ex) 사원, 부서
  • 중심 엔터티 - 기본 엔터티로부터 발생 ex) 접수, 계약
  • 행위 엔터티 - 2개 이상의 부모 엔터티로부터 발생 ex) 주문내역, 계약 진행

 

3. 속성 (Attribute)

정의

- 업무에서 필요로 하는 인스턴스에서 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위

- 엔터티를 설명하고 인스턴스의 구성요소가 된다

 

엔터티 / 인스턴스 / 속성 / 속성 값의 관계

- 1개의 엔터티는 2개 이상의 인스턴스의 집합 

- 1개의 엔터티는 2개 이상의 속성을 갖는다

- 1개의 속성은 1개의 속성 값을 갖는다

- 인스턴스 = 행(가로 집합) / 속성 = 열(세로 집합)

 

분류

- By 속성의 특성

  • 기본 속성 - 업무로부터 추출한 모든 속성 ex) 제품 이름, 제조년월, 제조원가
  • 설계 속성 - 업무를 규칙화하기 위해 새로 만들거나 변형한 속성 ex) 약품 용기 코드
  • 파생 속성 - 다른 속성에 영향을 받아 발생 ex) 계산 값

- By 엔터티 구성 방식

  • PK속성 - 엔터티를 식별
  • FK속성 - 다른 엔터티와의 관계에서 포함
  • 일반 속성 - 엔터티에 포함되어 있고 PK/FK에 포함되지 않은 속성

도메인

- 각 속성이 가질 수 있는 값의 범위

- 속성에 대한 데이터 타입과 크기/제약사항을 지정

 

4. 관계 (Relationship)

정의

- 인스턴스 사이의 논리적인 연관성으로서 존재 or 행위로써 서로에게 연관성이 부여된 상태

 

패어링

- 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것

- 패어링의 집합 = 관계

 

구분

- ERD

  • 존재적 관계, 행위적 관계 간에 구분하지 않고 표현

- 클래스 다이어그램

  • 존재적 관계, 행위적 관계를 구분하여 연관관계, 의존관계로 표현

 

표기법

- 관계명 : 관계의 이름

- 관계 차수 (Cardinality) : 1:1 / 1:N / M:N

- 관계 선택사양 : 필수 관계 / 선택 관계

 

체크사항

- 2개의 엔터티 사이에 관심 있는 연관 규칙이 존재하는가?

- 2개의 엔터티 사이에 정보의 조합이 발생하는가?

- 관계 연결에 대한 규칙이 있는가?

- 관계 연결을 가능하게 하는 동사(Verb)가 있는가?

 

5. 식별자 (Identifier)

정의

- 엔터티 내에서 인스턴스들을 구분할 수 있는 구분자

 

특징 (U - M - I -E)

특징 내용
유일성 (Uniqueness) 주식별자에 의해 엔터티 내에 모든 인스턴스들을 유일하게 구분
최소성 (Minimal) 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
불변성 (Immutability) 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 불변
존재성 (Existence) 주식별자가 지정되면 반드시 데이터 값이 존재 (Null X)

 

분류

- By 대표성 여부

  • 식별자
  • 보조 식별자

- By 스스로 생성

  • 내부 식별자
  • 외부 식별자

- By 속성 수

  • 단일 식별자
  • 복합 식별자

- By 대체 여부

  • 본질 식별자
  • 인조 식별자 : 순서 번호(Sequence Number)를 사용해서 식별자를 만드는 것 ex) 주문번호

주식별자 도출 기준

- 업무에서 자주 이용되는 속성

- '이름'으로 기술되는 것은 피함

- 속성의 수가 많아지지 않도록 함

 

식별자 / 비식별자 관계

- FK를 보유 -> 자식 엔터티 / FK를 제공 -> 부모 엔터티

- 식별자 관계 : FK를 기본키로 적용

- 비식별자 관계 : FK를 일반 속성으로 적용

 

문제점 (Only 식별자 / Only 비식별자)

- Only 식별자 관계

  • 주식별자 속성(PK)의 지속적 증가 -> 개발 복잡성 + 오류 유발

- Only 비식별자 관계

  • SQL 구문에 많은 조인 (쓸데없이 부모 엔터티 조회) -> 복잡성 증가 + 성능 저하