*스키마(Schema)란? : DB 내에서 데이터가 저장되는 구조와 제약 조건을 정의한 것. 장고에서 하나의 어플리케이션의 models.py 파일이라고 할 수 있습니다.
우리가 웹사이트를 만들때는 DB에 새로운 데이터를 저장하고 저장된 정보들을 표시한다.
장고에서는 정보의 단위, 즉 모델 클래스를 파이썬 클래스로 선언하여 정의한다. 정의한 하나의 클래스는 하나의 테이블로 만들어지고 DB는 여러개의 테이블로 구성된다.
모델 클래스: 어떤 형태의 정보가 다뤄지고 저장될 지를 정의한다. 우리가 만들 장고 웹 앱 내에서 코드로 구현되고 웹앱이 구동되면서 실제 DB와 연된다.
DB와 각 테이플 : 실제 정의된 내용이 저장되는 장소. 웹앱과는 독립적인 시스템으로 존재 (파이썬 기반의 장고 웹서버 뿐만 아니라 자바, 노드 서버를 통해서도 각각의 웹 앱 프레임워크가 제공하는 방식으로 모델클래스를 정의한다음 DB 서버에 접속해서 데이터를 처리하는 것이 가능하다.)
쉽게 이해하기 : 테이블 및 필드의 생성, 삭제, 변경 등과 같이 데이터베이스에 대한 변경사항을 알려주는 것
장고는 ORM을 사용하기 떄문에 models.py와 클래스를 통해 DB 스키마를 생성하고 다루게 되는데, 이 때 DB 스키마를 버전으로 나눠서 관리할 수 있게 해주는 시스템이라고 생각하면 된다. 즉, 하나의 마이그레이션 파일은 해당 마이그레이션이 생성된 시점의 모델의 구조(DB 스키마)를 담고 있다.
ORM이란?
Object Relational Mapping, 객체-관계 매핑
- 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
- 객체 모델과 관계형 모델 간에 불일치가 존재한다.
- ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.
장고에서는 자동적으로 구현된 모델 클래스를 DB의 실제 테이블로 생성하는 명령어를 제공한다.
-마이그레이션 파일 생성하기
-models.py 즉 모델링 파일에 있는 우리가 정의한 모델클래스를 DB에 맞는 형태로 코드를 정의해주는 역할
-해당 마이그레이션 파일을 DB에 반영하기