일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Kotlin
- 리눅스마스터 3과목
- 스프링 컨테이너
- 코딩테스트
- 카카오
- 자바스크립트 코딩의 기술
- 월간코드챌린지
- Linux
- 반복문
- toCharArray
- Java
- map
- 백준 javascript
- java 백준 1차원 배열
- 백준 java
- 프로그래머스
- 리눅스
- 리눅스마스터1급
- 연습문제
- 리눅스마스터 1급 정리
- 스프링 빈
- 코테
- JavaScript
- 명령어
- 개발자 회고록
- 문자열
- Memoir
- 고잉버스
- 자바
- GoingBus
- Today
- Total
hoon's bLog
SQLD 데이터 모델링의 이해 본문
모델링
사람, 사물, 개념 등에 의해 발생한 다양한 현상을 표기법에 의해 규칙을 가지고 표기하는 것
모델링 특징
- 추상화 : 현실세계, 다양한 현상 일정한 양식인 표기법에 의해 표현 ( = 모형화, 가설적)
- 단순화 : 복잡한 현실세계를 약속된 규약 의해 제한된 표기법이나 언어로 표현
- 명확화 : 누구나 이해하기 쉽게 대상에 대한 불명확함 제거
모델링의 세 가지 관점
- 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지, 데이터 간 관계 무엇인지 (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 안됨)
주식별자를 도출하는 기준
- 해당 업무에서 자주 사용되는 속성을 주식별자로 지정
- 명칭, 내역 등과 같이 이름으로 기술되는 속성은 주식별자로 지정하지 않는다.
- 복합으로 주식별자를 구성하는 경우 너무 많은 속성이 포함되지 않도록 한다.
식별자 관계 : 부모 엔티티의 주식별자가 자식 엔티티의 주 식별자로 상속된 경우
비식별자 관계 : 부모 엔티티의 주식별자가 자식 엔티티의 일반 속성으로 상속된 경우
비식별자 관계로 설정하는 경우
- 부모 없는 자식이 생성될 수 있는 경우
- 부모가 있었지만 자식만 남겨두고 먼저 소멸될 수 있는 경우
- 여러 엔티티가 하나의 엔티티로 통합되어 표현될 경우
- 자식 엔티티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때
- 자식과 관련이 있는 엔티티로의 주식별자 상속을 차단하기 위해
'IT > SQLD' 카테고리의 다른 글
SQLD SQL 기본 및 활용, 최적화 기본원리 (3) | 2023.03.07 |
---|---|
SQLD 데이터 모델과 성능 (1) | 2023.03.01 |