슈코딩
[Django] Data Base & Django ORM & DB관계 본문
1. 데이터 베이스 연결
파이참으로 프로젝트 세팅을 하게되면 settings.py 안에 DATABASES 가 있다.
강의에서는 SQLlite를 사용해서 기본세팅으로 실습을 했다.
다른 DB를 사용하기위해선 우선 그 DB를 설치를 하고
settings.py에 새로 작성을 해야 한다.
예시) mysql
그 후 파이참을 실행시켜서 서버를 작동시키고
파이참 우측에 데이터베이스 클릭 후 + 버튼을 눌러서
프로젝트 파일에 자동으로 생성된 db파일을 연동시켜서
우리가 볼 수 있는 형태까지 연결을 하면 준비는 끝난다.
이미지에 나와있는 my_user 테이블을 제외한 나머지 테이블은 장고에서
기본적으로 제공하는 테이블구조이다.
생성한 APP의 models.py에서 모델을 생성하고 추가하게되면
my_user테이블과 함께 생성이 된다.
#Github Push 주의 사항
settings.py 안에는 깃허브에 올리면 안되는 중요한 DB정보가 들어가있는데,
이런 정보들을 올리지 않도록 주의해야한다.
settings.py 파일분리(manage.py directory에 my_settings.py생성), .gitignore 를 통해 분리한
파일은 올라가지 않게 하는 등 안전한 방법을 사용해서 중요 정보가 노출되지 않도록 주의하자.
2. ORM ( Object Relational Mapping )
ORM (Object Relational Mapping = '객체와 관계형 데이터베이스를 자동으로 연결을 해준다')
어플리케이션과 데이터베이스를 연결할때
데이터베이스를 하나의 '객체' 덩어리로 보고, SQL언어가 아닌
파이썬의 Class와 같은 어플리케이션 개발언어로 쉽게 표현 및 사용 할 수 있게 해준다.
즉, 데이터에 들어가게 될 객체(Object)를 하나의 Class로 보겠다는 의미이다.
이와 같은 클래스를 이용해서 데이터베이스에 어떤역할을 하는 모델을 생성할지,
어떤 요소들이 담길것인지 고민을하고 코드로 작성을해서 적용 시킨다.
ORM 은 백엔드 개발에 있어 개발언의 일관성과 가독성을 높여주는 강력한 장점이 있다.
또한 재사용 및 유지보수의 편리성이 증가한다.
하지만 ORM만으로는 SQL의 모든 부분을 다루기 어렵기 때문에 백엔드 개발 시 SQL쿼리에
대한 지식과 경험이 바탕이 되어야 더 효과적인 백엔드 개발이 가능하다고 한다.
SQL쿼리에 대한 것도 공부도 해보고, 왜 ORM만으로는 SQL의 모든 부분을 다루기 어려운지,
SQL쿼리를 배우면 왜 더 효과적인 백엔드 개발이 가능한지도 생각을 해봐야 할것같다.
3. 데이터베이스 관계
데이터베이스안의 테이블들은 서로 관계를 가지고 있다. 이를 Mapping Cardinarlity( 매핑 카디널리티 ) 라고 한다.
매핑 카디널리티에는 3가지가 있다.
One-to-One(1:1)
- '데이터 A' 와 '데이터 B' 가 서로 만나서 중복이 되지않는 값을 만들어 내는 것
- ex) 웹사이트의 프로필과 사용자의 관계를 생각해보면 한명의 유저에겐 하나의 프로필만 존재한다.
One-to-Many(1:N)
-'데이터 A' 는 '데이터 B' 를 중복되는 값을 만들 수 있지만, 그 반대는 불가능한 경우
-ex) 게시글과 작성자의 관계 -> 작성자는 여러개의 게시글을 쓸 수 있지만, 게시글은 여러명의 작성자를 가질 수 없다.
Many-to-Many(N:M)
-'데이터 A' 와 '데이터 B'가 서로 중복되는 값을 만들 수 있는 경우
-ex) 피자와 토핑 -> 피자안에는 여러개의 토핑이 들어갈 수 있고, 한개의 토핑이 여러개의 피자에 들어갈수도 있다.
'코딩공부 > Django' 카테고리의 다른 글
[Django] 장고 템플릿(Template) 문법 (0) | 2022.06.02 |
---|---|
[Django] 5/31 아침퀴즈 복습 (0) | 2022.06.01 |
[Django] Admin 페이지 (0) | 2022.05.31 |
[Django] 파이참 프로젝트 기초 구조 (0) | 2022.05.31 |
[Django] 기초개념 (0) | 2022.05.27 |