Trainings/세션 정리

데이터베이스

태기의삶 2020. 5. 27. 10:00

Database 란?

- 데이터를 저장 및 보존하는 시스템

- Application에서는 데이터가 메모리 상에서 존재하지만, 해당 애플리케이션이 종료되면 메모리에 있던 데이터들은 다시 읽어 들일 수 없기 때문.

- 데이터를 장기 기간 동안 저장 및 보존하기 위해 데이터 베이스를 사용하는 것.

 

관계형 데이터베이스(RDBMS, Relational DataBase Management System)

- 이름 그대로, 관계형 데이터 모델에 기호를 둔 데이터베이스 시스템을 말한다.

- 관계형 데이터란 데이터를 서로 상호 관련성을 가진 형태로 표현한 데이터를 말한다.

특징

- 모든 데이터들은 2차원 테이블(table)들로 표현된다.

- 각각의 테이블은 칼럼(column)과 row(로우)로 구성된다.

컬럼(column)과 row(로우)은 무엇인가?

- 칼럼은 테이블의 각 항목을 말한다. 행으로 생각하면 된다.

- 로우는 각 항목들의 실제 값들을 이야기한다. 열로 생각하면 된다.

- 각 로우는 저만의 고유 키(Primary Key)가 있다. 주로 이 primary key를 통해서 해당 로우를 찾거나 인용(reference)하게 된다.

 

각각의 테이블들은 서로 상호 관련성을 가지고 서로 연결될 수 있으며, 크게 3가지 종류가 존재한다.

1. One To One

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

출처 : wecode

2. Many to Many

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

출처 : wecode

 

어떻게 테이블과 테이블을 연결하는가?

- Foreign key(외부 키)라는 개념을 사용해서 연결한다.

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

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

 

왜 테이블들을 연결하는가?

- 하나의 테이블에 모든 정보를 다 넣으면 동일한 정보들이 불필요하게 중복되어 저장된다.

- 여러 테이블에 나누어서 저장한 후 필요한 테이블끼리 연결시키면, 중복된 데이터를 저장하지 않음으로 디스크를 더 효율적으로 쓰고, 또한 서로 같은 데이터이지만 부분적으로 틀린 데이터가 생기는 문제가 없어지기 때문이다.

 

NoSQL 데이터베이스이란?

- 비 관계형 타입의 데이터를 저장할때 주로 사용되는 데이터베이스 시스템이다.

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

- MongoDB, Redis, Cassandra 등이 가장 대표적인 NoSQL 데이터 베이스이다.