Database

wanseung2·2021년 1월 3일
0
post-thumbnail

Wecode 생활 4주차 시작전,
지금까지 배워왔던 부분을 복습하는
느낌으로 정리해보자 !! 이건 2021년 첫 글!

👏 면접 준비로 써먹어버리자!👏

Database 정의

데이터 베이스는 일반적으로 컴퓨터 시스템에 저장된 정보 또는
데이터의 집합을 의미합니다!!

이러한 정보와 데이터의 집합인 데이터 베이스를 그럼 어떻게 관리할까요..?
바로 관리 시스템인 데이터베이스 시스템(DBMS)로 제어합니다!

우리가 흔히 말하는 데이터 베이스는 데이터 베이스와 DBMS를 일컬어 통칭하는 거죠!

데이터 베이스에 대한 더 자세한 설명은 여기 오라클 사이트를 참고하시고
우리 데이터 베이스에 대해 좀 더 알아볼까요?!

관계형 데이터베이스(RDBMS)

기존 데이터 베이스에 관계형(Relational)이라는 단어를 붙였는데요!
그 이유는 이름 그대로 관계형 데이터 모델을 기반으로 한 데이터 시스템을 말합니다
현재 대표적인 RDBMS로는 MySQL, Postgres, Oracle DB 등이 있습니다.

그럼 관계형 데이터베이스(RDBMS)에 대해 좀 더 알아 보겠습니다!

1. 관계형 데이터

우선 관계형 데이터에 대해 알아보겠습니다!
관계형 데이터란 상호 연관성을 가진 데이터로서 그것을 형태로 표현해 놓은 것입니다.
모든 데이터들은 2차원 테이블로 표현할 수 있습니다!
아래처럼 말이죠!

Primary keynameaddress
1홍길동seoul
2김짱구tokyo
3제갈량Beijing
4오연서seoul
5혼다tokyo
6우레이Beijing

각각의 테이블은 컬럼(column)과 row(로우)로 구성되어 있으며, 컬럼은 테이블의 각 항목을 ,로우는 각 항목들의 실제 값들을 정의 합니다.
그리고 각 로우에는 고유 키(Primary Key)가 있습니다. 이 primary key를 통해서 해당 로우를 찾거나 인용(reference)하게 됩니다.

위에서 말씀드렸던 것처럼 각각의 테이블들은 서로 상호 관련성을 가지고 연결될 수 있는데 그 종류를 우리는 3가지로 나눌 수 있습니다!

첫번째 : one to one
두번째 : one to many
세번째 : many to many

1. one to one


위의 이미지 처럼 첫번째 테이블의 로우와 두번째 테이블 B의 로우가
정확히 일대일 매칭이 되는 관계를 one to one 관계라고 부릅니다.

예를 들어, 필자가 커머스 사이트에 로그인을 했을경우 필자의 아이디와
로그인후 필자의 프로필은 one to one 관계라고 볼 수 있습니다!

one to many


one to one과 많이 헷갈려 하는 부분입니다. 그러나 위의 이미지를 보시면
첫번째 테이블의 로우가 두번째 테이블의 여러 로우와 연결이 되는 관계를
one to many 관계라고 부릅니다.

예를 들어, 로그인을 마친 필자가 사이트에서 축구공을 주문하려고 합니다.
여러 축구공중에 어떠한 하나를 골라서 주문을 했다고 가정했을때,
여러제품이 many이고 골라서 주문한 제품의 주인은 오직 필자 뿐인거죠!

many to many

마지막으로 many to many입니다. 첫번째 테이블의 여러 로우가 두번째 테이블의 여러 로우와 연결이 되는 관계를 many to many 라고 합니다.

위의 이미지로 예를들면, 책은 여러 작가에 의해 쓰일 수 있고,
작가들은 여러책을 쓸 수 있다고 보시면 됩니다!

2. 관계형 데이터의 연결성

위에서 본 세가지 연결성을 그럼 어떻게 연결할까요?

연결은 Foreign key(외부키)라는 개념을 사용하여 주로 연결합니다

앞서 본 one to one에서 user_profiles 테이블의 user_id 컬럼은 users 테이블에 걸려있는 외부 키라고 지정합니다.

즉 데이터 베이스에게 user_id값은 users 테이블의 id 값이며 그러므로
users테이블에는 id 컬럼에 존재하는 값만이 생성될 수 있는거죠!

만약 테이블에 없는 값이 지정되면 에러가 발생합니다!!

3. 마무리

우리는 위의 관계형 데이터의 연결성들을 보며 궁금증을 가져봐야 합니다.
왜 정보를 여러 테이블에서 저장하는 것일까?

필자가 생각하는 정답은 데이터의 효과적인 배치와 활용이라고 생각합니다.
CS적인 학문이 부족한 필자가 전해 들은 바로 이것을 normalization(정규화)
라고 지칭하더라구요!

그 외에도 ACID(Atomicity, Consistency, Isolation, Durability), Transaction, SQL 그리고 NoSQL까지 다양한 개념들이 있습니다!

다양한 개념들은 구글링을 통해 각자의 스타일로 이해해보는건 어떨까요?!

그럼 이만 가보겠습니다!

새해복 많이받으세요🎂!

profile
"나는 내 노력을 드러내려고 하지 않았고, 그저 내 그림들이 봄날의 밝은 즐거움을 담고 있었으면 했다. 내가 얼마나 노력했는지 아무도 모르게 말이다." - 앙리 마티스

0개의 댓글