1. 모델링 (Modeling)
모델링: 현실 세계를 특정 목적에 따라 단순화, 추상화, 명확화하여 이용하기 쉬운 형식으로 표현하는 과정
특징
특징 | 설명 |
단순화 | - 목적을 위해 필요 기능만 선택 - 제한된 언어를 통해 간단히 표현 |
추상화 | - 필요한 부분 / 중요한 부분을 통합하여 표현 - 일정 형식에 맞춰 표현 |
명확화 | - 대상에 대해 명확하게 기술 |
1) 데이터 모델링
- 현실 세계의 존재하는 데이터를 데이터베이스 (DB)로 옮기는 과정
- DB를 구축하기 위한 분석/설계 과정 포함
① 데이터 모델이 제공하는 기능
제공 기능 | 설명 |
가시화 | 시스템의 현재 모습 / 원하는 모습을 시각화 |
구조화 | 시스템 구축을 위한 구조화된 틀 제공 |
명세화 | 시스템의 구조, 행동을 명확히 정의 |
문서화 | 시스템 구축 과정의 내용 기록, 보관 |
다양한 관점 | 시스템의 다양한 관점 제공 (다른 영역의 세부 사항을 숨김) |
표현 방법 제공 | 목표에 따라 구체화한 표현 방법 제공 |
② 데이터 모델링의 유의점
유의점 | 설명 |
비유연성 | - 데이터의 정의와 사용 프로세스를 분리 → 데이터/프로세스의 작은 변화가 앱과 DB에 중대한 변화를 일으킬 가능성을 감소시켜야 함 |
비일관성 | - 데이터 간의 연간 관계를 명확히 정의, 모순이 발생하지 않도록 함 |
중복성 | - 여러 장소의 DB에 같은 정보 저장 X |
③ 데이터 모델링의 3가지 요소
요소 | 설명 |
Things | 업무가 관여하는 어떤 것 |
Attributes | Things가 가지는 성격 |
Relationship | Things간의 관계 |
④ 데이터 모델링의 3단계 진행
요소 | 설명 |
개념적 데이터 모델링 | - 업무 중심적 & 포괄적인 수준의 모델링 진행 - 결과물로 ERD (Entity Relationship Diagram) 도출 - 추상화 수준 높음 |
논리적 데이터 모델링 | - 구축하고자 하는 업무에 대해 식별자, 속성, 관계 등을 정확히 표현 - 데이터 모델의 재사용성 가장 높음 - 데이터 정규화 작업 - 데이터 모델링이 최종적으로 완성된 상태 - 추상화 수준 중간 |
물리적 데이터 모델링 | - DB의 물리적인 성격 (e.g. 성능, 저장)을 고려하여 설계 - 실제 DB 구축 시 참고됨 - 추상화 수준 낮음 |
ERD (Entity Relationship Diagram): 개체 (entity) 간 관계를 도형으로 표시
정규화 (Normalization): 관계형 DB 데이터의 중복 최소화 / 테이블을 갱신, 삽입, 삭제 시 부작용 발생 방지
2) 데이터 독립성과 DB 3단계 구조
데이터 독립성:
- 하위 단계의 데이터 구조 변경이 상위 단계에 영향 X
- DB 구조 변경이 응용프로그램에 영향 X
DB 3단계 구조:
- 3단계 구조를 통해 데이터 독립성 확보 가능
단계 | 스키마 | 설명 |
외부 단계 | 외부 스키마 | - 개별 사용자 관점에서 DB를 이해 및 표현 |
개념 단계 | 개념 스키마 | - 전체 사용자들의 관점을 통합, 조직 전체의 관점에서 이해 및 표현 - DB에 저장되는 데이터 간의 관계 기술 |
내부 단계 | 내부 스키마 | - 저장 장치의 관점에서 DB를 이해 및 표현 - 데이터가 물리적 장치에 실제로 저장되는 방법 표현 |
- 데이터 모델링은 통합 관점의 개념 스키마를 만드는 과정
3) 데이터 모델의 표기법 (ERD)
- 개체 (entity) 간 관계를 도형으로 표시
관계 차수 (Cardinality): 엔티티 내 인스턴스들이 얼마나 관계에 참여하는지를 나타냄
예시:
작성 순서:
엔티티 생성/배치 → 엔티티 간 관계 설정 → 관계명 표시 → 관계 차수 표시
정리 (두음으로 외우기!)
모델링 특징: 단추명 (단순화, 추상화, 명확화)
모델 제공 기능: 가구명문관표 (가시화, 구조화, 명세화, 문서화, 댜앙한 관점, 표현 방법 제공)
모델링 유의점: 유일중 (비유의성, 비일관성, 중복성)
모델링 요소: TAR (Thing, Attribute, Relationship)
모델링 3단계 진행: 개논물 (개념적, 논리적, 물리적 모델링)
DB 3단계 구조: 외개내 (외부, 개념, 내부 단계/스키마)
'SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 - 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2023.04.26 |
---|---|
[MySQL] 프로그래머스 - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2023.04.25 |
[MySQL] 프로그래머스 - 즐겨찾기가 가장 많은 식당 정보 출력하기: RANK OVER() 활용 (0) | 2023.04.25 |
[MySQL] 프로그래머스 - 조건에 맞는 사용자 정보 조회하기 (0) | 2023.03.13 |
[MySQL] 프로그래머스 - 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.03.10 |