웹 프로젝트

Django Model 관련한 공부

JaeHyunShin 2021. 1. 23. 18:55

전문가들이 사용하는 용어 중 Data Model/ Business Model 중 Data Model을 말하는 것이다.

 

App을 만들기 위해 필요한 데이터를 models에서 정의하면 된다.

Django 모델을 공부하던 도중, 모델들 간의 관계를 정의하는 과정에서 헷갈리는 부분이 있었다. 

모델에 작성자 클래스와 게시 

아래 개념들을 설명하기 위하여 게시글 작성 수정하는 토이 프로젝트를 예시로 들겠다.

 

OneToOneField 1: 1 관계

 한 명의 작성자는 하나의 게시글만 작성할 수 있고, 하나의 게시글은 한 명의 작성자만 갖을 수 있따.

일대일 관계에선 한 쪽의 테이블이 상대 테이블에 대한 키값을 갖는다.

게시글 테이블에서 작성자에 대한 키 값을 Django에서 ID(Primary Key)로 갖고 있게 되면, 게시글의 작성자를 확인할 수 있고, 작성자 테이블에서 작성자에 대한 데이터도 찾을 수 있다. 

 

 이 관계를 1:1로만 매칭할 수 있다. 

 

ManyToManyField  

  다대 다 관계가 아니고, N:M 관계의 경우, 1:다 관계를 지칭한다.

N:M 관계의 경우, 게시글 테이블 또는 작성자 테이블에서 키값을 가지고 있지 않고 게시글의 키값과 작성자의 키값을 갖고 있는 새로운 테이블을 만든다. 위 과정은 백엔드에서 데이터를 처리하는 공통 과정에 해당한다. 

 

 장고에서는 이를 위해 migrate라는 과정이 있다. 

 

 모델을 migrate하면 모델에 정의된 내용을 데이터베이스의 쿼리문으로 변경해서 연결된 DB에 반영하고 테이블을 만든다. 직접 DB에 들어가서 확인해보니 역시나 새로운 두 테이블에 대한 키값을 가지고 있는 새로운 테이블을 만들었다.

 

 

디자인 패턴과 엮어보기 

MVC 를 장고에서는 MTV라고 부른다. 장고도 MVC 패턴과 마찬가지로 한 요소가 다른 요소들에게 영향을 주지 않도록 설계하는 방식으로

웹 요청에 따라 전달받은 데이터를 가공하는 파트는 Model 파트가 아니다.  

 

용어 정의

Foriegn Key 테이블간 일 대 다 관계에서 핵심 역할을 하는 속성

Primary Key 테이블에서 데이터를 유일하게 식별할 수 있는 하나의 속성

 

 

'웹 프로젝트' 카테고리의 다른 글

Spring Boot  (0) 2021.02.02
Docker 컨테이너 관련 커맨드 사용법  (0) 2021.02.01
Swagger  (0) 2021.01.31
카이스트 친구와 함께하는 장고 공부  (1) 2020.12.31
서버 관련 개념  (0) 2020.01.20