데이터베이스의 기본


**데이터베이스**(DB, DataBase) : 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음

**DBMS**(DataBase Management System) : 해당 데이터베이스를 제어, 관리하는 통합 시스템

데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어(query language)를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다.

또한, 데이터베이스는 실시간 접근과 동시 공유가 가능하다.

그림처럼 데이터베이스 위에 DBMS가 있고 그 위에 응용프로그램이 있으며, 이러한 구조를 기반으로 데이터를 주고받는다.

예를 들어 MySQL이라는 DBMS가 있고 그 위에 응용프로그램에 속하는 Node.js나 pgh에서 해당 데이터베이스 안에 있는 데이터를 끄집어내 해당 데이터 관련 로직을 구축할 수 있는 것이다.

Untitled

엔터티

엔터티(entity)는 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사를 의미합니다.

예를 들어 회원이라는 엔터티가 있다고 해봅시다. 회원은 이름, 아이디, 주소, 전화번호의 속성을 갖는다.

물론 이보다 많은 속성이 있지만 서비스의 요구사항에 맞춰 엔터티의 속성이 정해집니다. 예를 들어 주소라는 속성이 서비스의 요구사항과 무관한 속성이라면 주소라는 속성은 사라지게 됩니다.

Untitled

약한 엔터티강한 엔터티

엔터티는 약한 엔터티와 강한 엔터티로 나뉩니다. 예를 들어 A가 혼자서는 존재하지 못하고 B의 존재 여부에 따라 종속적이라면 A는 약한 엔터티이고 B는 강한 엔터티가 됩니다.

예를 들어 방은 건물 안에만 존재하기 때문에 방은 약한 엔터티라고 할 수 있고 건물은 강한 엔터티라고 할 수 있다.

릴레이션

릴레이션(relation)은 데이터베이스에서 정보를 구분하여 저장하는 기본 단위입니다. 엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리합니다.

엔터티 >> 릴레이션 (데이터베이스로 올라가게 되면)

다음 그림처럼 회원이라는 엔터티가 데이터베이스에서 관리될 때 릴레이션으로 변화된 것을 볼 수 있습니다.

관계형 데이터베이스에서는 ‘테이블’ 이라고 하며, NoSQL 데이텀베이스에서는 ‘컬렉션’ 이라고 합니다.

Untitled

테이블컬렉션의 차이