hoon's bLog

SQLD 데이터 모델링의 이해 본문

IT/SQLD

SQLD 데이터 모델링의 이해

개발한기발자 2023. 2. 28. 10:14
반응형

모델링

사람, 사물, 개념 등에 의해 발생한 다양한 현상을 표기법에 의해 규칙을 가지고 표기하는 것

모델링 특징 
- 추상화 : 현실세계, 다양한 현상 일정한 양식인 표기법에 의해 표현 ( = 모형화, 가설적)
- 단순화 : 복잡한 현실세계를 약속된 규약 의해 제한된 표기법이나 언어로 표현
- 명확화 : 누구나 이해하기 쉽게 대상에 대한 불명확함 제거

모델링의 세 가지 관점 
- 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지, 데이터 간 관계 무엇인지 (What, Data)
- 프로세스 관점: 업무가 실제하고 있는 일 무엇인지, 무엇을 해야하는지 (How, Process)
- 상관 관점 : 업무 처리하는 방법에 따라 데이터 어떻게 영향 받고 있는지 (Interaction)

데이터 모델링 정의 
- 정보시스템 구축 위한 데이터 관점의 업무 분석기법
- 현실세계 데이터에 대해 약속된 표기법에 의해 표현하는 과정
- 데이터베이스 구축하기 위한 분석, 설계과정

- 데이터모델링 기능 : 가시화, 명세화, 구조화, 문서화 등 다양한 관점

데이터 모델링의 중요성 / 유의점
- 중요성 : 파급효과(Leverage), 복잡한 정보 요구사항의 간결한 표현(Conciseness), 데이터 품질 유지(Data Quality)
- 유의점 : 중복, 비유연성(유지보수 측면), 비일관성(상호관계 명확)
 
데이터 모델링의 3단계 진행
- 개념적 → 논리적 → 물리적
- 개념적 데이터 모델링 : 계획 분석 단계, 추상화 수준 높고 업무중심적, 포괄적이며 전사적, EA수립 시 사용
- 논리적 데이터 모델링 : 분석단계, KEY, 속성, 관계 등 정확하게 표현, 재사용성 높음 (정규화)
- 물리적 데이터 모델링 : 설계단계, 실제 DB이식할 수 있도록 성능, 저장장치, 접근방법 등 물리적 성격 고려 

데이터 독립성 필요 이유 
- 유지보수 비용 증가

- 데이터 중복성

- 복잡성 증가

- 요구사항 대응 저하 

데이터 독립성 확보 시 효과
- 각 View의 독립성을 유지하고 계층별 View에 영향을 주지 않고 변경이 가능 
- 단계별 Schema 에 따라 데이터 정의어(DDL)와 데이터 조작어(DML)가 다름을 제공 

ANSI / SPARC 3단계 구조 

데이터 독립성 구성 요소

개념 스키마
- 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현
- 데이터 모델링은 통합 관점을 가지고 있는 개념 스키마(Conceptual Schema)를 만들어 가는 과정.
외부 스키마
- 사용자 뷰(View)
- 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의
- 전체 데이터베이스의 한 논리적인 부분 (서브 스키마)
- 같은 데이터베이스에 대해서도 서로 다른 관점을 정의할 수 있도록 허용
- 일반 사용자는 SQL을 사용하여 DB를 사용한다.
내부 스키마
- 물리적 저장장치 입장에서 본 데이터베이스 구조, 물리적인 저장 장치와 밀접한 계층
- 실제 데이터베이스에 저장될 레코드의 물리적인 구조를 정의
- 데이터 항목의 표현방법, 내부 레코드의 물리적 순서 등을 나타냄
- 시스템 프로그래머, 설계자가 보는 관점의 스키마

 

논리적 데이터 독립성(외부단계-개념적단계)

- 개념적 스키마가 변경해도 외부스키마 영향 없음

- 사용자 특성에 맞게 변경, 통합구조 변경가능


물리적 데이터 독립성(개념적 단계-내부적 단계)

- 내부스키마 변경, 외부/개념스키마 영향받지 않도록 지원하는 것

- 저장장치의 구조 변경은 응용프로그램과 개념스키마에 영향 없음 

사상(Mapping) : 상호 독립적인 개념 연결
외부적/개념적 사상(논리적) : 외부적 뷰와 개념적 뷰의 상호관련성 정의
개념적/내부적 사상(물리적) : 개념적 뷰와 데이터베이스의 상호관련성 정의

좋은 데이터 모델의 요소

- 완전성

- 중복배제

- 업무규칙

- 데이터 재사용

- 원활한 소통

 

통합성 데이터 모델링 세 가지 요소

어떤 것(Thing), 성격(Attributes), 관계(Relationships) 


엔터티(Entity) : 저장이 되기 위한 어떤 것(Thing), 어떤 것에 대한 집합(DB에서는 테이블을 가리킴)

 

엔터티의 특징

- 업무에서 필요한 정보

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

- 영속성으로 존재하는 두 개 이상의 인스턴스 집합

- 업무 프 로세스에 의해 이용

- 반드시 속성 포함

- 최소 1개 이상의 관계 존재 

 

ERD 작성 순서
- Entity를 그린다.
- Entity를 적절하게 배치
- Entity 간 관계를 설정
- 관계명을 기술
- 관계의 참여도를 기술
- 관계의 필수여부를 기술

 

유무형에 따른 엔터티 분류

종류 설명
유형 엔터티 - 업무에서 도출되며 지속적으로 사용되는 엔터티
- 예) 고객, 강사, 사원 등
개념 엔터티 - 유형 엔터티는 물리적 형태가 있지만 개념 엔터티는 물리적 형태 X
- 개념적으로 사용되는 엔터티
- 예) 거래소 종목, 코스닥 종목, 생명보험 상품
사건 엔터티 - 비즈니스 프로세스를 실행하면서 생성되는 엔터티
- 예) 주문, 체결, 취소주문, 수수료 청구 등

 

발생 시점에 따른 엔터티 종류

종류 설명
기본 엔터티(Basic Entity) - 키 엔터티라고도 합니다.
- 다른 엔터티로부터 영향을 받지 않고 독립적으로 생성되는 엔터티
- 예) 고객, 상품, 부서 등
중심 엔터티(Main Entity) - 기본 엔터티와 행위 엔터티 간의 중간에 있는 것
- 즉. 기본 엔터티로부터 발생되고 행위 엔터티를 생성하는 것
- 예) 계좌, 주문, 취소, 체결 등
행위 엔터티(Active Entity) - 2개 이상의 엔터티로부터 발생
- 예) 주문 이력, 체결 이력 등

 

엔터티의 명명
- 현업 업무에서 사용하는 용어 사용

- 약어 사용금지
- 단수명사 사용

- 고유한 이름 사용(생성 의미대로 부여)

 

인스턴스(Instance) : 데이터베이스에 저장된 데이터 내용의 전체 집합을 의미

속성(Attributes) : 인스턴스의 구성요소로써 더 이상 분리되지 않는 최소 데이터 단위

- 엔티티에 대한 자세하고 구체적인 정보 표현

- 한 개의 엔터티는 2개 이상의 속성을 가짐
- 한 개의 속성은 1개의 속성값을 가짐

 

Entity - Instance - Attributes의 관계
- 1개의 Entity는 2개 이상의 Instance의 집합
- 1개의 Entity는 2개 이상의 Attribute을 갖는다.
- 1 개의 Attribute은 1 개의 Attribute 값을 갖는다.

 

구성 방식의 분류

PK(Primary Key) : Entity를 식별하는 속성

FK(Foreign Key) : 타 Entity와 관계에서 포함된 속성

일반속성 : PK, FK가 아닌 속성


Attribute의 분류

- 기본 Attribute : 업무로부터 추출한 모든 일반적인 속성 업무상

- 설계 Attribute : 업무를 규칙화하기 위해 새로 만들거나 변형, 정의하는 속성, ex) 일련번호, 분류코드
- 파생 Attribute : 빠른 성능을 낼 수 있도록 원래 속성의 값을 계산(계산된 값), 적을수록 좋음

 

속성의 명명
- 해당업무에서 사용하는 이름 부여
- 서술식 속성명은 사용 금지 → 복합 명사 사용
- 약어 사용 금지
- 구체적으로 명명하여 데이터 모델에서 유일성 확보

 

도메인
- 각 속성이 가질 수 있는 값의 범위
- 엔터티 내에서 속성에 대한 데이터 타입과 제약사항을 지정하는 것
- 예) 제품명이라는 속성은 길이가 20자리 이내 문자열로 정의할 수 있다.

 

관계 표기법

관계명(Membership) : 관계의 이름

관계차수(Cardinality) : 1:1, 1:M, M:M

관계선택사양(Optionality) : 필수관계, 선택관계


관계 체크사항

- 연관규칙 존재하는지

- 엔터티 사이 정보 조합이 발생되는지

- 관계연결에 대한 규칙 이 서술되어 있는지

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

 

식별자 종류 
대표성 여부
- 주 식별자 : 인스턴스를 유일하게 구분할 수 있으며 참조관계를 연결할 수 있음
- 보조 식별자 : 유일하게 구분 가능하지만 대표성을 가지지 못해 참조관계 연결을 못함


스스로 생성 여부
- 내부 식별자 : 엔티티 내부에서 스스로 만들어지는 식별자
- 외부 식별자 : 타 엔티티와의 관계를 통해 타 엔티티로부터 받아오는 식별자


속성의 수
- 단일 식별자 : 하나의 속성으로 구성됨
- 복합 식별자 : 2개 이상의 속성으로 구성됨


대체 여부
- 본질 식별자 : 업무에 의해 만들어지는 식별자
- 인조 식별자 : 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자

 

주 식별자의 특징
- 유일성 : 엔터티 내의 모든 인스턴스를 유일하게 구분함
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 충족하는 최소의 수가 되어야 함
- 불변성 : 식별자가 한 번 지정되면 그 값은 변하지 않아야 함
- 존재성 : 주식별자가 존재하면 반드시 데이터 값이 존재 (null 안됨)

 

주식별자를 도출하는 기준
- 해당 업무에서 자주 사용되는 속성을 주식별자로 지정
- 명칭, 내역 등과 같이 이름으로 기술되는 속성은 주식별자로 지정하지 않는다.
- 복합으로 주식별자를 구성하는 경우 너무 많은 속성이 포함되지 않도록 한다.


식별자 관계 : 부모 엔티티의 주식별자가 자식 엔티티의 주 식별자로 상속된 경우


비식별자 관계 : 부모 엔티티의 주식별자가 자식 엔티티의 일반 속성으로 상속된 경우

 

비식별자 관계로 설정하는 경우
- 부모 없는 자식이 생성될 수 있는 경우
- 부모가 있었지만 자식만 남겨두고 먼저 소멸될 수 있는 경우
- 여러 엔티티가 하나의 엔티티로 통합되어 표현될 경우
- 자식 엔티티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때
- 자식과 관련이 있는 엔티티로의 주식별자 상속을 차단하기 위해

728x90
반응형

'IT > SQLD' 카테고리의 다른 글

SQLD SQL 기본 및 활용, 최적화 기본원리  (3) 2023.03.07
SQLD 데이터 모델과 성능  (1) 2023.03.01