루비온레일즈

[DataBase] 관계형 데이터 모델링이란?

sodait 2021. 4. 16. 12:31

#Model

: 어떤 목적을 가지고 진짜를 모방한 것

- 좋은 모델이란? 목적에 부합하는 모방

 

#데이터 모델링

: 현실의 복잡성을 컴퓨터에 담을 수 있는 방법

- 거대하고 복잡한 현실을 정보로 만들어서 표에 담는 것은 매우 어려운 일 -> 이를 해결하기 위해 나타남 

- 정보를 데이터베이스 표에 담는 것 -> 인간의 능력으로는 상상할 수 없는 거대한 양의 데이터를 엄청난 속도로 다룰 수 있게 됨

 

 


[데이터 모델링 순서]

업무 파악 -> 개념적 데이터 모델링 -> 논리적 데이터 모델링 -> 물리적 데이터 모델링

 

1. 업무 파악

  1) 업무 파악: 의뢰한 사람이 어떤 것을 원하는지 찾아내는 것

  2) 기획

 


 

2. 개념적 데이터 모델링

- 업무 파악이 끝났으면, 이제 최종적으로 데이터베이스에 옮기기 위한 첫 단계

- 내가 하고자 하는 일에 어떤한 개념들이 있고, 각각의 개념들이 어떻게 서로 상호작용하고 있는지

 

 

ER 다이어그램

 

*ERD(Entity Relationship Diagram)

- 현실로부터 개념을 인식하는 도구이자, 다른 사람도 알아볼 수 있게 표현하는 도구

- 현실에서 개념을 추출하는 일종의 필터 제공, 개념에 대해서 다른 사람들과 대화하게 해주는 언어

- 쉽게 표로 전환할 수 있음

 

1) 정보: 정보를 발견하고 다른 사람들에게 표현할 수 있게 도와줌

2) 그룹: 서로 연관된 정보를 그룹핑해서 인식하고, 다른 사람들에게 표현할 수 있게 해 줌

3) 관계: 정보 그룹 사이의 관계를 인식하고 다른 사람들에게 표현할 수 있게 해 줌

 

 

ERD 구성요소

 

- 개념에 집중하고 있으며, 실제 데이터베이스 제품들과는 다름

- Entity는 후에 테이블로 전환됨

- 글이라는 Entity는 실제 데이터가 아님, 구체적인 데이터는 제목, 생성일, 본문 등이 담겨있음

  -> 이런것을 그룹핑한 것이 '글이라는 Entity'

- 구체적인 데이터는 속성(Attribute)이며 -> 표의 column을 말함

 

 

저자의 이름, 댓글 등은 속성이 안되는 이유

만약, 저자의 이름만 우리 시스템이 필요하다면 속성이 될 수 있음

하지만 저자에 대한 소개, 가입일 같은 정보가 필요하다면 이런 속성이 필요한 Entity가 되는 것임

 

Entity -> 디렉토리 (파일은 담을 수 있지만 자식 디렉토리는 담을 수 없는 제한적인 디렉토리)

속성 -> 파일에 비유

 

 

 

Entity간의 관계

저자 - 글 - 댓글 (복잡한 관계)

연관성 표현 -> 관계(Relation)

 

 


 

*관계형 데이터베이스 구조

거대 단일 테이블은 중복 발생 -> 주제에 따라 테이블 나누어야 함

=> 두번째가 관계형 데이터베이스 구조

 

 

 

장점

1) 주제에 따라 데이터 그룹핑할 수 있음

2) 주제에 따라 나뉘어져있기때문에 만약 글에 대한 정보만 필요할 경우, 글을 담고 있는 표만 조회하면 되므로 컴퓨터의 자원을 아낄 수 있음

3) Join

: 여러 개의 표로 분산된 정보를 결합해서 하나의 단일한 표로 만드는 기술 (여러 개의 테이블을 묶어서 하나의 테이블로 만드는)

=> 글과 저자가 따로따로 들어가는 것이 아니므로, 필요할 때마다 순간순간 합성해낼 수 있음

 

 


 

3. 논리적 데이터 모델링

- 개념을 관계형 데이터베이스에 맞게 구성하는 것

- 우리가 생각했던 개념을 표로 전환하는 작업

 

 


 

4. 물리적 데이터 모델링

- 어떤 데이터베이스 제품을 사용할 것인가 선택, 그 데이터베이스 제품에 최적화된 코드를 작성해서 실제 표를 만드는 것

 

SQL 코드

 

 

 

더보기

애플리케이션: 하나의 건물
UI: 옥상
데이터베이스: 지하

UI - 데이터베이스 -> 원인과 결과의 관점에서 생각할 때

정보를 입력하는 UI가 원인이 돼서
데이터베이스의 데이터를 변경하는 결과를 낳음

데이터라는 원인에 의해서 ui에 내용이 표시되는 결과 낳음

사용자가 마주하는 ui와 컴퓨터에 저장되는 데이터는 서로 원인과 결과의 관계에 있다 할 수 있음

원인과 결과를 번갈아가면서
순차적으로 점검하지 않는다면 좋은 모델이라 볼 수 없음

기획자와 구현자가 다르다면 
데이터모델링까지는 최소한 같이하는게 이상적

 

 

제일먼저할일
기획서에서 Entity 찾기

읽기 화면에서는 찾기 어려우나
쓰기에서는 찾을 수 있음?
쓰기-> 표로 만들기 좋은 엔티티

draw.io


출처

생활코딩 관계형 데이터 모델링

www.youtube.com/watch?v=1d38YZKCM88&list=PLuHgQVnccGMDF6rHsY9qMuJMd295Yk4sa&index=1

생활코딩 웹 애플리케이션 만들기 - 관계형 데이터베이스

www.youtube.com/watch?v=dIdey4mMXnw