Database

Seokho·2021년 12월 6일
0

1. 데이터베이스는 무엇인가?

데이터란 무엇인가?

  • 데이터란 수, 단어, 이미지, 영상~ 전부 다!
  • web client(상품 상세 정보 요청) --> client-server model(필요한 정보 요청) --> Database --> client-server model(필요한 정보 응답) --> web client(상품 상세 정보 응답)

데이터베이스

  • 컴퓨터 시스템에 저장된 정보나 데이터를 모두 모아 놓은 집합을 의미합니다.
  • 데이터들은 Database Management System으로 제어 및 관리합니다.
  • 즉 데이터가 저장된 하드웨어를 부르는 말이기도 하면서, 데이터베이스를 관리하는 시스템 자체를 통칭합니다.

CRUD
Creat read update delete

2. 데이터베이스를 사용하는 이유

1. 데이터를 오랜 기간 저장 및 보존하기 위해서

  • 작은 어플에서도 데이터를 임시로 저장할 수는 있습니다. 그러나 저장하지 않은 데이터는 컴퓨터를 껐다 켜면 사라지죠. 메모리에 존재하는 데이터는 오래 보존이 되지 않습니다. 어플이 종료되면 메모리에 있던 데이터르들은 다시 읽어들일 수 없습니다.
    따라서, 필요한 자료를 계속 보존하기 위해 데이터베이스를 사용합니다.

2. 데이터를 체계적으로 보존하고 관리하기 위해서

  • 데이터는 많이 오래 저장한다고만해서 좋지 않습니다.
    필요할 때 언제든 내가 원하는 자료를 쉽게 읽어낼 수 있어야만 의미 있는 정보라고 할 수 있습니다.
    데이터베이스에는 데이터가 아무렇게나 어질러 저장되지 않고 체계적으로 정리되어 입력됩니다. 다시 찾고자 할 때 어렵지 않게 정보를 얻을 수 있습니다.
    위 영화 데이터도 표 모양으로 깔끔하게 날짜별로 저장되어 있죠. 이렇듯 데이터를 체계적으로 정리하여 보관하기 위해 데이터베이스를 사용합니다.

3. 관계형 데이터베이스

관계형 데이터베이스란?

  • RDBMS(Relational DataBase Management System)으로 관계형 데이터 모델에 기초를 둔 데이터베이스 시스템을 말합니다.
  1. 모든 데이터들은 2차원 테이블들로 표련할 수 있습니다.

    • Column(열): 데이블의 각 항목 / Row(행): 각 항목들의 실제 값
  2. 테이블의 각 행은 저만의 고유 키(Primary Key)가 있습니다.

    • 각 로우는 다른 로우와 겹치지 않는, 하나의 데이터만 정확하게 지칭할 수 있는 고유한 번호를 갖고 있습니다.
    • Primary Key를 통해 특정 로우를 찾거나, 인용할 수 있습니다.
  3. 각각의 테이블들은 서로 상호 관련성을 가지고 서로 연결될 수 있습니다.

    • 관계형 데이터베이스라는 의미는 DB를 구성하고 있는 테이블들이 서로 상호관련성을 가지고 연결되어 있다는 의미
    • 각각의 테이블들이 완전한 독립적이지 않고, 테이블 A와 테이블 B가 서로 연관된 사이라는 뜻.

관계 유형

  1. 일대일 관계(One to One)

    • 하나의 A테이블 데이터는 오로지 하나의 B테이블 데이터와 연결됩니다.
    • Identification numbers 테이블의 user_id 컬럼은 user 테이블의 id(pk)를 참고합니다.
  2. 일대다 관계(One to Many)

    • 하나의 A테이블 데이터는 B테이블의 여러 데이터와 연결됩니다.
    • pets 테이블의 user_id컬럼은 user테이블의 id(pk)를 참조합니다.

*중간 정리
One to One --> 서로가 서로의 오로지 한 로우에만 연결
One to Many --> 로우 하나에 다른 테이블의 로우 여러개가 연결

  1. 다대다 관계(Many to Many)
    • 하나의 A테이블 데이터는 B테이블의 여러 데이터와 연결될 수 있습니다.

*정규화(Normalization)
- 서로 각자 다른 테이블의 여러 데이터와 연결 될 때에는 두 테이블에 석한 데이터의 조합을 입력하기 위한 중간테이블이 생선됩니다.

profile
같이의 가치를 소중하게 생각하는, 프론트엔드 개발자 이석호 입니다.

0개의 댓글