728x90

앞에서 Django를 배우면서 Model을 만들어주면 생기는 Data들을 볼 수 있었다.

그런 data들이 저장되는 곳이 db.sqlite3와 같이 곳이 있었는데 이걸 기반으로 데이터 베이스에 대해 알아보자.

 

 

목차

  1. Intro
  2. 정의 및 RDB

 

 

 


1. Intro

 

지금은 데이터의 시대

 

  • 세상에는 수많은 데이터들이 존재한다.
  • 인터넷만 떠올려봐도 셀 수 없이 많은 데이터가 지금 이 순간에도 우리가 사용하는 웹 서비스나 애플리케이션 등을 통해 생성 수정 삭제 되고 있다.
  • 과거와 달리 이러한 데이터 규모는 점점 더 빠른 속도로 증가하고 있고, 이 데이터를 다루는 기술 또한 점점 중요해지고 있다.

 

데이터 베이스의 등장

 

  • 이러한 서비스 혹은 애플리케이션들이 데이터들을 저장하는 곳
    • 데이터베이스
  • 파일을 이용한 데이터 관리
    • 우리는 일반적으로 데이터를 파일에 저장한다.
    • 장점
      1. 운영체제에 관계없이 어디에서나 쉽게 사용 가능
      2. 이메일이나 메신저를 이용해 간편하게 전송 가능
    • 단점
      1. 성능과 보안적 측면에서 한계가 명확
      2. 대용량 데이터를 다루기에 적합하지 않음
      3. 데이터를 구조적으로 정리하기에 어려움
      4. 확장이 불가능한 구조
  • 스프레드 시트를 이용한 데이터 관리
    • 스프레드 시트(엑셀 시트)를 사용
    • 스프레드 시트를 컬럼(열)을 통해 데이터의 유형을 지정하고, 레코드(행)를 통해 구체적인 데이터 값을 포함
    • 스프레드 시트 자체를 데이터베이스라고 부를 수는 없지만 데이터베이스로 가는 길목 정도로 생각해볼 수 있음
  • 데이터베이스를 이용한 데이터 관리
    • 스프레드 시트와 달리 프로그래밍 언어를 사용해 작동시킬 수 있음
    • 데이터베이스는 많은 형태가 있지만 실제 가장 많이 쓰이는 유형은 RDB(Relational Database)라고 부르는 관계형 데이터베이스
    • RDB는 각각의 데이터를 테이블에 기입함 (스프레드 시트에 작성하는 것처럼)
    • 쉽게 생각하면 스프레드시트 파일 모음을 관계형 RDB라고 생각하자!

 

이러한 데이터베이스를 사용하면 데이터를 안전하고 편리하고 바르게 보관하고 사용할 수 있다.


 

2. 정의 및 RDB

 

데이터베이스의 정의

 

  • 체계화된 데이터의 모임
  • 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 정보의 집합
  • 검색, 구조화 같은 작업을 보다 쉽게 하기 위해 조직화된 데이터를 수집하는 저장 시스템
    • 내용을 고도로 구조화 함으로써 검색과 갱신의 효율화를 꾀한 것
    • 즉, 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 구조화하여 기억시켜 놓은 자료의 집합체
  • 이러한 Database를 조작하는 프로그램 = DBMS(Database Management System)
    • 한 번쯤 들어봤을 Oracle, MySQL, SQLite.. 등이 모두 DBMS
    • DBMS에서 Database를 조작하기 위해 사용하는 언어를 SQL이라 함
  • 웹 개발에서 대부분의 데이터베이스는 '관계형 데이터베이스 관리 시스템(RDBMS)'을 사용하여 SQL로 데이터와 프로그래밍을 구성

 

RDB

 

  • Relational Database(관계형 데이터베이스)
  • 데이터를 테이블, 행, 열 등으로 나누어 구조화하는 방식
  • 자료를 여러 테이블로 나누어서 관리하고, 이 테이블 간 관계를 설정해 여러 데이터를 쉽게 조작할 수 있다는 장점
  • SQL을 사용하여 데이터를 조회하고 조작

 

# 참고 - 테이블 간 관계 설정 예시

 

  • 고객 테이블에서 고객 ID는 고객이 관계형 데이터베이스에서 고유하게 식별되는 기본 키 (primary key)
  • 주문 테이블에서 특정 주문을 식별하는 기본 키는 주문 ID
    • 외래 키(foreign key)를 사용하여 고객 테이블의 고객 ID를 연결하여 고객을 주문과 연결할 수 있음
  • 이 관계를 통해 특정 날짜에 구매한 모든 고객에 관한 정보를 조회하거나 지난달에 배송일이 지연된 주문을 받은 고객을 파악하거나 할 수 있음

 

RDB 기본 구조

 

  1. 스키마(Schema)

  • 테이블의 구조(Structure)
  • 데이터베이스에서 자료의 구조, 표현 방법, 관계 등 전반적인 명세를 기술한 것

 

  2. 테이블(Table)

 

  • 필드, 레코드, 기본 키로 구성
  • 필드와 레코드를 사용해 조직된 데이터 요소들의 집합
  • 관계(Relation)라고도 부름
    1. 필드(field)
      • 속성, 컬럼(Column)
    2. 레코드(record)
      • 튜플, 행(Row)
      • 테이블의 데이터는 레코드에 저장됨

 

  • PK(Primary Key)
    1. 기본 키
    2. 각 레코드의 고유한 값
      • 각각의 데이터를 구분할 수 있는 고윳값
    3. 기술적으로 다른 항목과 절대로 중복 xx인 단일 값(unique)
    4. 데이터베이스 관리 및 테이블

 

관계형 데이터베이스의 이점

 

  • 데이터를 직관적으로 표현할 수 있음
  • 관련한 각 데이터에 쉽게 접근할 수 있음
  • 대량의 데이터도 효율적으로 관리 가능

 

RDBMS

 

  • Relational Database Management System (관계형 데이터베이스 관리 시스템)
  • 관계형 데이터베이스를 만들고 업데이트하고 관리하는 데 사용하는 프로그램
    • SQLite, MySQL, PostgreSQUL, Oracle Database 등 

 

SQLite

 

  • 응용 프로그램에 파일 형식으로 넣어 사용하는 비교적 가벼운 데이터베이스
  • 안드로이드 iOS, macOS에 기본적으로 탑재, 임베디드 소프트웨어에서도 많이 활용
  • 오픈 소스 프로젝트이기 때문에 자유롭게 사용 가능

  # 단점

  • 대규모 동시 처리 작업에는 적합하지 않음
  • 다른 RDMBS에서 지원하는 SQL 기능을 지원하지 않을 수 있음

 

  # 그럼에도 학습하는 이유!?

  • 어떤 환경에서나 실행 가능한 호환성
  • 데이터 타입이 비교적 적고 강하지 않기 때문에 유연한 학습 환경을 제공
  • Django Framework의 기본 데이터베이스

 

앞서 배웠던 Django에서 기본 DB이기 때문에 SQLite를 통하여 데이터베이스를 알아가 보자.

728x90

'CS > Database with SQLite' 카테고리의 다른 글

[DB] DML2 - Filtering data  (1) 2022.10.05
[DB] DML1 - simple query, Sorting rows  (0) 2022.10.05
[DB] DDL2 - ALTER, DROP TABLE  (0) 2022.10.05
[DB] DDL1 - create table  (0) 2022.10.04
[DB] SQL  (1) 2022.10.04