![[Part 1] 1. 데이터 모델의 이해](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%255BPart%25201%255D%25201.%2520%25EB%258D%25B0%25EC%259D%25B4%25ED%2584%25B0%2520%25EB%25AA%25A8%25EB%258D%25B8%25EC%259D%2598%2520%25EC%259D%25B4%25ED%2595%25B4%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3DCoding_study&w=2048&q=75)
저번 프로젝트 진행하면서 트랜잭션에 대한 중요성을 뼈저리게 느끼며 정규화와 쿼리에 대해 다시 공부의 필요성을 느꼈다!!
난 비전공자에 노베이기에 다시 한번 정리 하고 개념을 잡는다는 느낌으로 유선배와 노랭이 풀고 홍쌤을 유튭을 참고하여 공부 하기로했다.



교재를 보면서 느낀것은 너무 잘 설명해 주시려고 천천히 풀어 주신 것들이 헷갈리는 경우가 있어서 헷갈리는 것은 따로 구글링이나 카페에서도 참고하여 알아볼 수 있게 나만의 방법으로 정리하도록한다. 홍쌤 유튭 설명은 진짜 깔끔하게 잘해주시는 것 같다. 그리고 노랭이는 진짜 어렵게 느겨져서 진짜 4회독 정도는 돌려야 될 것 같다.
유선배에서도 PIVIOT 과 PIVIOT 정규 표현식은 교재에 없고 또 각 챕터 마다 레벨 문제에 대한 해설이 유튭에 다 나와 있지 않으므로 나처럼 노베이신 분들에게 도움이 조금이나마 되었으면 좋겠다.
1. 모델링이란?
- 데이터베이스의 모델링은 ‘현실 세계를 단순화하여 표현하는 기법’이다.
- 현실 세계에서 필요한 비즈니스 프로세스와 데이터 요구 사항을 추상적이고 구조화된 형태로 표현하는 과정
예시) 배달앱으로 음식 주문을 표현

배달앱으로 음식 주문을 도식화로 표현하면 고객, 상품, 주문하는 행위로 나눌 수있고, 배달 음식 주문하는 현실 세계를 그림과 같은 모델로 만듦으로써, 모델은 이처럼 현실세계에서 일어날 수 있는 다양한 현상에 대해서 일정한 표기법에 의해 표현해 놓은 모형이고 모델링은 이런 모델을 만들어 가는 일이다.
2. 모델링의 특징
2-1. 추상화(Abstraction)
- 복잡한 현실 세계를 일정한 형식에 맞추어 간략하게 대략적으로 표현하는 과정
- 다양한 현상을 일정한 양식인 표기법에 따라 표현
2-2. 단순화(Simplification)
- 복잡한 현실을 정해진 표기법에 따라 단순화하여 핵심 요소에 집중하고 불필요한 세부 사항을 제거
- 단순화를 통해 복잡한 현실 세계를 이해하고 표현하기 쉬워짐
2-3. 명확화(Clarity)
- 대상에 대한 애매모호함(불분명한 것) 을 최대한 제거하고 정확하게 현상을 기술하는 과정
- 명확화를 통해 모델을 이해하는 이들의 의사소통을 원활히 함
3. 모델링의 3가지 관점
3-1. 데이터 관점
- 데이터 위주의 모델링
- 데이터가 어떻게 저장되고, 접근되고, 관리되는지를 정의하는 단계 (어떤 데이터들이 업무와 얽혔는지 그 데이터들간에 어떤 관계가 있는지 )
3-2. 프로세스 관점
- 프로세스 위주의 모델링
- 업무가 실제로 시스템이 어떤 작업을 수행하며, 이러한 작업들이 어떻게 조직되고 조정되는지를 정의하는 단계
- 데이터가 시스템 내에서 어떻게 흐르고 변환되는지에 대한 확인
3-3. 데이터와 프로세스 관점
- 데이터 관점과 프로세스 관게를 위주로 한 모델링
- 데이터 관점과 프로세스 관점을 결합하여 시스템의 전반적인 동작을 이해하는 단계
- 특정 프로세스가 어떤 데이터를 사용하는지, 데이터가 어떻게 생성되고 변경되는지를 명확하게 정의
4. 데이터 모델링 유의점
4-1. 중복(Duplication)
- 한 테이블 또는 여러 엔터티(테이블)에 같은 정보를 저장하지 않도록 설계
4-2. 비유연성(Inflexibility)
- 사소한 업무 변화에 대해서도 잦은 모델 변경이 되지 않도록 주의 → 유지보수에 어려움을 가중 시킴
- 데이터 정의를 프로세스와 분리하여 유연성을 높임
4-3. 비일관성(Inconsistency)
- 데이터베이스 내의 정보가 모순되거나 상반된 내용을 갖는 상태를 의미
- 데이터의 중복이 없더라도 비일관성은 발생할 수 있음 (개발자가 다른 데이터와 연관성을 고려하지 않고 데이터 일부만 변경 할 수 있기 때문 )
- 데이터간 상호연관 관계를 명확히 정의해야 함
- 데이터 품질 관리 필요
5. 데이터 모델링의 3단계
5-1. 개념적 모델링(Conceptual Data Modeling)
- 전사(회사 전체 차원의) 적 데이터 모델링 수행시 행해지며 업무 중심적이고 포괄적인 수준의 모델링
- 추상화 수준이 가장 높음
- 업무를 분석 뒤 업무의 핵심 엔터티(Entity)를 추출하는 단계
- 도출된 핵심 엔터티(Entity)들과의 관계들을 표현하기 위해 ERD 작성
5-2. 논리적 모델링(Logical Modeling)
- 개념적 모델링의 결과를 토대로 세부속성, 식별자, 관계 등을 표현하는 단계
- 재사용성이 가장 높은 모델링
- 데이터 구조를 정의하기 때문에 비슷한 업무나 프로젝트에서 동일한 형태의 데이터 사용 시 재사용가능
- 동일한 논리적 모델을 사용하는 경우 쿼리도 재사용 가능
- 데이터 정규화 수행
- 재사용성이 높은 논리적 모델은 유지보수가 용이해짐
5-3. 물리적 모델링(Physical Data Modeling)
- 논리 모델링이 끝나면 이를 실제 데이터베이스로 구현할 수 있도록 직접 물리적으로 생성하는 과정
- 데이터베이스 성능, 디스크 저장구조, 하드웨어의 보안성, 가용성 등을 고려
- 가장 구체적인 데이터 모델링
- 추상화 수준은 가장 낮음(가장 구체적인 모델링이므로)
6. 데이터의 독립성
6-1. 3단계 스키마의 구조
- 외부 스키마
- 사용자 관점 : 각 사용자가 보는 관점에서 데이터베이스 스키마를 정의
- 사용자나 응용 프로그램이 필요한 데이터를 정의(View : 사용자가 접근하는 대상)
- 개념 스키마
- 통합된 관점 : 사용자 관점의 데이터베이스 스키마를 통합하여 데이터베이스의 전체 논리적 구조를 정의
- 전체 데이터베이스의 개체, 속성, 관계, 데이터 타입 등을 정의
- 내부 스키마
- 물리적인 관점 : 실제 데이터가 물리적으로 어떻게 저장되는지를 정의
- 데이터의 저장 구조, 컬럼, 인덱스 등을 정의함
6-2. 3단계 스키마의 독립성
물리적, 논리적 구조를 변경하더라도 사용자가 사용하는 응용 프로그램에 영향을 주지 말아야 함
- 논리적 독립성 : 개념 스키마(논리적 데이터 구조가 변경)가 변경되어도 외부 스키마는 영향받지 않는다.
- 물리적 독립성 : 내부 스키마가(물리적 구조가 변경) 변경 되어도 외부/개념 스키마는 영향 받지 않는다.
7. 데이터 모델의 표기법(ERD : Entity Relationship Diagram)
- 엔터티(Entity)와 엔터티 간의 관계(Relationship)를 시각적으로 표현한 다이어그램
- 1976년 피터 첸(Peter Chen)이 만든 표기법, 데이터 모델링 표준으로 사용
7-1. ERD 표기방식

7-2. IE/Crow’s Foot 표기법

7-3. ERD 작성 순서 (6단계)
어떤 표기법을 사용하든 ERD 작성하는 순서는 공통된 룰이며, 다음의 표기 순서를 따른다.
① 엔터티를 도출한 후 그린다
② 엔터티 적절하게 배치
③ 엔터티 간의 관계를 설정
④ 관계명을 서술
⑤ 관계의 참여도 기입
⑥ 관계의 필수/선택 여부를 확인
Share article