장뽀장뽀! 모델 뽀개기!

춤추는망고·2020년 5월 7일
0
post-thumbnail

슈퍼개발자, 춤추는망고입니다.

( 춤 안춥니다. )





이번 시리즈는...

백엔드로 가는길,

장뽀장뽀! 장고 뽀개기!


입니다.
( 우와아아아앙아ㅏㅏㅏㅏ~!!!! )












정보! 어디까지 설계해봤니?






데이터베이스와 모델링...

백엔드 개발자의 영원한 친구죠...

( 모르면, 공부하고 와라! 이말입니다! )




데이터베이스와는 이전 글에서 좀 친해졌으니,

( 아니라구요? 크흠... )

이번 글에선,

모델링과 친해지는 것을 목표로 해봅시다!










시작해보죠!










모델링이란?

( Model 을 짜는거죠! )



ORM 을 기억하시나요?

장고가 데이터베이스를 다루는 방식인데요!

1. 테이블 ( 정보덩어리 ) 하나하나를 정의하는 방식이에요!

2. Model 은 Table 하나하나와 서로 Mapping ( 연결 ) 되요!

3. 장고에서 Model 은 Python 의 ' Class 객체 ' 모양이에요!

4. 이 Model 에 대한 정의는 장고의 models.py 파일에서 하구요!



즉,

정보를 담아둘 공간에 대해서는

장고라는 프레임워크에서 Class 로 정의해요! ( Python 으로 코딩! )

그리고,

위에서 정의한 내용대로 실제 DataBase 에 테이블을 만드는 작업을 하죠!

( 이것을 Migrate 라고 해요! / 한국말로 ' 이주시키다 ' 라는 뜻! )



저 작업을 위해선,

기준이 될 내용이 필요하겠죠?

그 구조를 미리 정하는 것이 모델링이에요!



그런데,

다뤄야할 정보가 너무나도 많고, 복잡하다면?

정보의 내용보다 정보들이 묶이는 특징들을 더 우선으로 하여,

최대한 단순하게 모양을 잡아야겠죠??



이렇게,

양이 많고, 내용이 복잡한 정보들에 대해서

중요성이 덜한 부분을 배제하고 생각하는 것을

' 추상화 ' 라고 해요!



엄청나게 좋은 예시쓰!

복잡한 위성지도!

좀 더 보기 좋아진 지도 ! ( ?? )

더 보기 좋아진 지하철노선도 !

아주 보기 좋은 지하철노선도!

엄청 간단해지고, 보기 좋아졌죠??

이렇게, 핵심적인 부분에 대해서만 확실하게 다루는게 추상화!



그리고,

앞으로 다룰 도구인 ' Aquery ' 를 이용하면,

ERD ( Entity Relationship Diagram )

라는 그림을 이용해 더 쉽게 구조를 파악할 수 있어요!

( 이것이 데이터베이스의 추상화! 그것의 결정체! )

이렇게 생겼어요! ↓

( 상자 하나가 Table, 밑에 있는 줄들이 Column 의 특징이나 속성! )



예를 들어보죠,

지난 글 의 내용을 기준으로 할거에요!


만약에, 이 표를 ERD 로 표현한다면!

ERD 에 있는 상자 하나가 표였으니까, 상자 하나만 만들면 되겠죠?


그리고,

ERD 는 추상화의 결정체니까, 추상화를 해야겠죠?

정보의 내용인 Field 들은 신경쓰지않고, Column 만 볼거에요!



이것을 ERD 의 모양으로,

얍!



사실은,

이렇게 비어있는 상자에 우리가 내용을 채우는 거랍니다!

( Aquery 사용법은 잠깐쓰! 시리즈에 올릴 예정이에요! )











ERD 란?

: Entity Relationship Diagram


' 개체 연관성 도표 ' 라는 뜻인데요!

지난 글에서 Field 들이 모여서 Row 가 됐을 때,

연결관계가 확실하고, 하나의 실재하는 개체를 나타내면 ' Entity ' 라고 했었죠!



예시쓰!

' 이름 : 춤추는망고 ' , ' 직업 : 개발자 ' , ' 가진 돈 : 5000원 '

이라는 정보로 ' 춤추는망고 ' 가 충분히 설명되죠!



이때,

' 춤추는망고, 개발자, 5000원 ' 이라는 내용과

' 춤추는망고 ' 라는 존재의 연결성이 명확하기 때문에,

' 춤추는망고 ' 를 하나의 개체 ( Entity ) 라고 할 수 있어요!



그리고,

' 춤추는망고, 노래하는후추, 돈버는포도 ' 라는 개체 ( Entity ) 모두

' 이름, 직업, 가진 돈 ' 이라는 공통적인 특징 ( Attribute ) 들의 연결성이 명확해

하나의 표에 같이 있어도 어색하지 않았죠?



이렇게,

공통적으로 설명되는 속성이 있으면서 개체들 사이의 연관성이 명확할 때,

그 정보들이 모인 것이

하나의 테이블이 되요!



그러한 테이블들이 어떤 명확한 연관성을 가지고 있을 때,

그 테이블들이 모인 것이

하나의 스키마가 되는 것이죠!



저희는,

이러한 테이블이나 스키마를 기준으로

여러 정보를 단독으로 호출하거나 조합한 뒤 정제하여,

Front-End 에게 API 로써 제공해야 하기 때문에,

다루는 정보들의 관계를 명확하게 이해해야 해요!

그러기 위해선, 정보들의 관계에 대해 더 집중해야겠죠?






이런식으로 개체가 정의되기 까지 필요한,

특징과 내용들의 관계에 대한 복잡한 내용들을,

최대한! 단순하게 그려내는 것이 ERD 에요!

( 정보들의 관계에 집중하는데에 엄청난 도움을 준답니다! )










여기까지!




이번 글에서는,

정보를 다루기 위해 필요한 것들 중

모델링에 대해서 알아봤습니다!

( ERD 와 그 필요성도 알아봤죠! )




다음 글에서는,

우리가 다뤄야하는 정보를 수집하는

크롤링에 대해서 알아볼겁니다!










백엔드 개발자가 다루는

많은 프레임워크 중 하나

장고를 함께 뽀개봅시다!





고생하셨습니다.

감사합니다.( _ _)

profile
지금까지 이런 망고는 없었다. 이것은 개발자인가 춤추는망고인가

0개의 댓글