[DataBase] 관계형 데이터 모델링이란?
#Model
: 어떤 목적을 가지고 진짜를 모방한 것
- 좋은 모델이란? 목적에 부합하는 모방
#데이터 모델링
: 현실의 복잡성을 컴퓨터에 담을 수 있는 방법
- 거대하고 복잡한 현실을 정보로 만들어서 표에 담는 것은 매우 어려운 일 -> 이를 해결하기 위해 나타남
- 정보를 데이터베이스 표에 담는 것 -> 인간의 능력으로는 상상할 수 없는 거대한 양의 데이터를 엄청난 속도로 다룰 수 있게 됨
[데이터 모델링 순서]
업무 파악 -> 개념적 데이터 모델링 -> 논리적 데이터 모델링 -> 물리적 데이터 모델링
1. 업무 파악
1) 업무 파악: 의뢰한 사람이 어떤 것을 원하는지 찾아내는 것
2) 기획
2. 개념적 데이터 모델링❗⭐
- 업무 파악이 끝났으면, 이제 최종적으로 데이터베이스에 옮기기 위한 첫 단계
- 내가 하고자 하는 일에 어떤한 개념들이 있고, 각각의 개념들이 어떻게 서로 상호작용하고 있는지
*ERD(Entity Relationship Diagram)
- 현실로부터 개념을 인식하는 도구이자, 다른 사람도 알아볼 수 있게 표현하는 도구
- 현실에서 개념을 추출하는 일종의 필터 제공, 개념에 대해서 다른 사람들과 대화하게 해주는 언어
- 쉽게 표로 전환할 수 있음
1) 정보: 정보를 발견하고 다른 사람들에게 표현할 수 있게 도와줌
2) 그룹: 서로 연관된 정보를 그룹핑해서 인식하고, 다른 사람들에게 표현할 수 있게 해 줌
3) 관계: 정보 그룹 사이의 관계를 인식하고 다른 사람들에게 표현할 수 있게 해 줌
ERD 구성요소
- 개념에 집중하고 있으며, 실제 데이터베이스 제품들과는 다름
- Entity는 후에 테이블로 전환됨
- 글이라는 Entity는 실제 데이터가 아님, 구체적인 데이터는 제목, 생성일, 본문 등이 담겨있음
-> 이런것을 그룹핑한 것이 '글이라는 Entity'
- 구체적인 데이터는 속성(Attribute)이며 -> 표의 column을 말함
저자의 이름, 댓글 등은 속성이 안되는 이유
만약, 저자의 이름만 우리 시스템이 필요하다면 속성이 될 수 있음
하지만 저자에 대한 소개, 가입일 같은 정보가 필요하다면 이런 속성이 필요한 Entity가 되는 것임
Entity -> 디렉토리 (파일은 담을 수 있지만 자식 디렉토리는 담을 수 없는 제한적인 디렉토리)
속성 -> 파일에 비유
Entity간의 관계
저자 - 글 - 댓글 (복잡한 관계)
연관성 표현 -> 관계(Relation)
*관계형 데이터베이스 구조
거대 단일 테이블은 중복 발생 -> 주제에 따라 테이블 나누어야 함
=> 두번째가 관계형 데이터베이스 구조
장점
1) 주제에 따라 데이터 그룹핑할 수 있음
2) 주제에 따라 나뉘어져있기때문에 만약 글에 대한 정보만 필요할 경우, 글을 담고 있는 표만 조회하면 되므로 컴퓨터의 자원을 아낄 수 있음
3) Join
: 여러 개의 표로 분산된 정보를 결합해서 하나의 단일한 표로 만드는 기술 (여러 개의 테이블을 묶어서 하나의 테이블로 만드는)
=> 글과 저자가 따로따로 들어가는 것이 아니므로, 필요할 때마다 순간순간 합성해낼 수 있음
3. 논리적 데이터 모델링
- 개념을 관계형 데이터베이스에 맞게 구성하는 것
- 우리가 생각했던 개념을 표로 전환하는 작업
4. 물리적 데이터 모델링
- 어떤 데이터베이스 제품을 사용할 것인가 선택, 그 데이터베이스 제품에 최적화된 코드를 작성해서 실제 표를 만드는 것
애플리케이션: 하나의 건물
UI: 옥상
데이터베이스: 지하
UI - 데이터베이스 -> 원인과 결과의 관점에서 생각할 때
정보를 입력하는 UI가 원인이 돼서
데이터베이스의 데이터를 변경하는 결과를 낳음
데이터라는 원인에 의해서 ui에 내용이 표시되는 결과 낳음
사용자가 마주하는 ui와 컴퓨터에 저장되는 데이터는 서로 원인과 결과의 관계에 있다 할 수 있음
원인과 결과를 번갈아가면서
순차적으로 점검하지 않는다면 좋은 모델이라 볼 수 없음
기획자와 구현자가 다르다면
데이터모델링까지는 최소한 같이하는게 이상적
제일먼저할일
기획서에서 Entity 찾기
읽기 화면에서는 찾기 어려우나
쓰기에서는 찾을 수 있음?
쓰기-> 표로 만들기 좋은 엔티티
출처
생활코딩 관계형 데이터 모델링
www.youtube.com/watch?v=1d38YZKCM88&list=PLuHgQVnccGMDF6rHsY9qMuJMd295Yk4sa&index=1
생활코딩 웹 애플리케이션 만들기 - 관계형 데이터베이스