본문 바로가기

others

TIL no.18 - DataBase의 기초라도 이해합시다 ..!🌧

 

오늘은 DataBase에 대해 정리해보려고 합니다 !

저는 Frontend-Developer 라서 제가 DataBase를 알아야 할 것이라고 생각 못했는데요..

이해를 하고 있으면 Backend와 서로 소통하는데 더 원활하다는 이유이기 때문에

나도 기초를 이해하고 있어야 겠구나 ! 생각했습니다 🤗

깊이 파고들어 공부할 필요는 없겠지만 의사소통에 문제가 없게 이해하고 있는 것이 중요한 것 같습니다.

 

 


 Database   란 무엇인가요? 

말 그대로 ! 데이터를 저장하고 보존하는 시스템을 말합니다.

저는 세션을 듣고 database를 공부하기 전에는 단순 분류로 저장된 데이터를 꺼내올 때 찾아서 꺼내온다고만 생각했었습니다.

하지만, database를 정리하기 위해서는 정규화라는 과정을 통해 미리 데이터들을 분류하고 분류된 값끼리 정리해둡니다.

이렇게 정리된 database를 필요할 때 원하는 키값으로 꺼내어 사용할 수 있습니다. 

 

- Database 는 크게 관계형 데이터베이스인 RDBMS비관계형인 NoSGL 가 있습니다.

 

⭐️관계형 데이터 베이스 RDBMS

 

관계형 데이터 모델에 기초를 둔 데이터베이스 시스템을 말합니다.

데이터를 서로 상호관련성이 존재하게 나타낸 데이터를 말합니다.

모든 데이터들은 2차원 테이블로 표현됩니다.

 

 

각각의 테이블은 Column (컬럼)과 row(로우)로 구성되어 있습니다.

로우는 각 항목들의 실제 값을 표시하며 각 로우는 자기만의 고유 키를 가지고 있습니다.

주로 이 primary key 를 통해서 로우를 찾거나 reference 할 수 있습니다.

 

또한 각각의 테이블은 서로 상호관련성을 가지고 서로 연결될 수 있어야합니다.

 

테이블끼리의 연결방식에는 크게 3가지 종류가 있습니다.

 

  • one to one
  • one to many
  • many to many

- one to one 

테이블 A의 로우와 테이블 B의 로우가 정확히 일대일로 매칭이 되는 관계를 one to one 관계라고 합니다.

각 카테고리에 들어갈 이미지는 각각 일대일 매칭된다.

 

 

 

- one to many

테이블 A의 로우가 테이블 B의 여러 로우와 연결이 되는 관계를 one to many 관계라고 함.

각 student는 여러 개의 class를 가질 수 있다. 그래서 일대n로 매칭된다.

 

-many to many

테이블 A의 여러 로우가 테이블 B의 여러 로우와 연결이 되는 관계를 many to many 라고 함.

위 예시는 제가 wecode 과제 참여 시 조원들과 스타벅스 데이터베이스를 분류하다가 생각해봤던 예시인데요.
스타벅스 안에서 스페셜 태그는 신메뉴와 시즌메뉴라는 것이 들어있는 것이고, 각 메뉴가 신메뉴인지 시즌 메뉴인지 id key로 알 수 있습니다. 이 신메뉴와 시즌메뉴는 한 메뉴에 둘다 포함이 될 수도 있으며 각 스페셜 태그 안에 여러 개의 메뉴 아이템들이 들어올 수 있기 때문에 
n 대 n 관계라고 생각했습니다.

 

 

database에 대해 처음에 떠올렸을 때처럼 그냥 정보를 저장하기만 하면 왜 안될까?

- 개발자로서 공부하고 생각하게 된다면 한 눈에 보았을 때도 정보들이 너무 많이 중복되어 데이터 낭비가 아닐까? 생각이 들 것이다. 아마?

디스크를 더욱 효율적으로 사용하고 중복되는 데이터에 유니크한 키를 생성해 분리함으로서 정보를 더욱 손쉽게 찾을수가 있습니다!!

이러한 문제들을 없애기 위해 조금 전 배운 것들을 정규화 라고 합니다.

 

 

⭐️비관계형 데이터 베이스  NoSQL

관계형 데이터베이스와는 다르게 데이터들을 저장하기 전에 정의할 필요가 없습니다.

RDBMS(SQL) 이 효율적이기 위해 저장하기 전에 정의했다고 하였는데 그렇다면 NoSQL은 왜 사용될까요?

미리 정보를 정의하고 저장하는 RDBMS는 효율적으로 디스크를 관리하는 데 초점을 둔다면 NoSQL은 미리 정리하지 않기 때문에 나중에 데이터가 확장되더라도 추가하는데 걱정없고 유연하게 반응합니다. 그렇기 때문에 방대한 테이터의 양을 가진 정보일수록 유리하게 쓰입니다.