Django DataBase

MIN·2023년 9월 20일
post-thumbnail
이 글은 아이티뱅크 강의를 듣고 공부한 내용을 토대로 작성한 글입니다.
혹시 잘못된 내용이 있을 시 댓글로 알려주시면 감사하겠습니다 ^U^

📌 DataBase란?

DataBase는 데이터 중복 제거 및 효율적 처리를 목표로 만들어진 데이터 저장소다.

📌 DataBase를 사용하는 이유

  • 수 많은 데이터를 메모장이나 엑셀에 저장할 경우 데이터의 중복 저장이 발생할 수 있다.
  • 데이터 사용 시 매우 많은 파일을 하나씩 열어 원하는 데이터를 찾아야 되므로 효율적인 데이터 처리가 불가능하다.
  • DB는 구조적, 관계형, 객제지향형 등으로 구분된다.
    대부분은 관계형DB를 주로 사용한다.
  • DB를 효과적으로 운영하고 설계하기 위해서는
    DBMS( DataBase Management System )가 필요하다.

📌 DataBase의 장점

  • 데이터 중복을 최소화하고 데이터의 무결성을 유지할 수 있다.
  • 일관성있는 데이터 관리를 할 수 있으며, 데이터의 보안이 보장된다.

📌 DataBase의 무결성

  • 데이터에 정의되는 데이터의 형식을 정의할 수 있다. (타입지정)
  • 실체 무결성 : 데이터 유일성 보장(Primary key)
  • 참조 무결성 :데이터 참조연결(Foreign key)
  • 컬럼 무결성 : 지정된 데이터 형식을 만족하는 값만 포함하는 무결성

📌 DataBase 기본구조


column1(속성)column2(속성)
value1value1
value2value2
Table_ATable2_B

실제 데이터는 위 colunm안에 저장된다.

📌 DBMS (DataBase Management System)

  • DBserver : 데이터 덩어리라고 생각하면 좋다. 이를 관리하기 위해서는 소프트웨어가 필요하다.
  • DBMS란, 데이터베이스를 효과적으로 설계 운영복구 할 수 있도록 도와주는 소프트웨어로, 위에서 말한 데이터서버를 관리한다.
  • 현재 관계형 데이터베이스 구조를 많이 사용하므로 RDBMS를 주로 사용하게 된다. 대표적인 RDBMS(관계형 데이터베이스 메니지먼트 서비스)로는
    Oracle DB, MS-SQL, MySQL, MariaDB 등이 있다.

📌 RDBMS (Relation DataBase Management System)


💡 관계형 데이터베이스란?

  • 관계형 데이터 베이스는 데이터들간의 사전에 정의된 연결 관계가 형성되어있는 데이터베이스 구조를 말한다.
  • 테이블들은 관계 형성을 통해 데이터를 관리할 수 있도록 구성되어 있다.
    (1:1 / 1:N / N:N --> 주로 1:N 형태가 많음)
  • 테이블은 기본키를 이용하여 자신의 고유 식별 값을 가질 수 있으며, 다른 여러 테이블과의 관계 형성을 위해 외래키를 사용한다.
  • 테이블들의 관계(Relation)를 얼마나 체계적으로 맺고 관리하게 구성을 했는가에 따라 성능의 차이가 발생한다.

💡 RDBMS의 기능

1. 정의 기능 (Definition Facility)

  • DB, 테이블, 인덱스, 뷰, 트리거, 시퀀스 정의
  • 응용 프로그램과 데이터베이스 간의 인터페이스 제공
  • 논리적 구조 명세, 물리적 구조 명세

2. 조작 기능 (Manipilation Facility)

  • 데이터의 검색 / 갱신 / 삽입 / 수정 등의 기능 제공
    ( CRUD = Create, Read, Update, Delete )
  • 사용자와 데이터베이스 간의 인터페이스 제공

3. 제어 기능 (Control Facility)

  • 권한 부여 및 제거
  • 데이터의 정확성 및 안정성을 유지 (보안, 복구, 백업)
  • 데이터베이스 자체를 제어하는 기능

DBMS의 기능을 수행하기 위해서는 SQL을 사용한다.
ANSI SQL 표준 : RDBMS를 관리하는 명령어


📌 ORM (Object Relational Mapping)

  • 일반적인 RDBMS 관리방법은 SQL Query를 이용해 데이터베이스에 접근 후 데이터 조작 작업을 진행한다.
  • JSP, PHP 등의 언어로 구성된 환경의 경우 HTML코드 내부에서 동적언어를 처리하는 코드를 혼합하여 코드내용에 포함한다.
  • 동적 작업을 위한 코드작성을 위해 DB접근이 필요한 경우 SQL Query문을 직접 작성하여 코드 내용에 포함한다.
  • Django FramWork에서는 위와 같은 방식이 아닌 ORM형식의 RDBMS관리작업을 진행한다.
  • ORM방식의 경우 DB내부의 테이블과 연결하는 객체를 미리 정의 후 맵핑 된 객체를 이용하여 데이터베이스를 조작한다.
  • ORM방식은 쉬운 접근성을 제공하며, SQL Query문 사용형식을 모르더라도 데이터베이스를 조작할 수 있도록 도움을 준다.
profile
기초부터 시작하는 감쟈 ※ 소개글 확인해주세요!! ※

0개의 댓글