일상 생활에서 생기는 다양한 정보를 기록하기 위해 다이어리와 노트를 사용하듯이, 컴퓨터도 정보를 기록하기 위해 **데이터베이스 (Database)**를 사용한다. 그리고 데이터베이스를 관리하는 애플리케이션을 **DataBase Management System (DBMS)**라고 한다.

현대 웹 서비스는 다양한 기능을 제공한다. 웹 서버는 데이터베이스를 사용하여 이용자의 요청에 맞게 회원 정보와 게시글 같은 데이터를 저장하고 조회, 수정한다. 다수의 사람들이 데이터를 생성하고, 참조하고, 수정하는 웹 서버의 특수한 환경에 가장 적합한 자료구조로 채택된 것이 데이터베이스이며, 최근의 웹 서비스에는 거의 필수적으로 포함되어야 한다.


Database Management System

데이터베이스 관리 시스템

웹 서비스는 데이터베이스에 정보를 저장하고, 이를 관리하기 위해 **DataBase Management System (DBMS)**을 사용한다. DBMS는 데이터베이스에 새로운 정보를 기록하거나, 기록된 내용을 수정, 삭제하는 역할을 한다. DBMS는 다수의 사람이 동시에 데이터베이스에 접근할 수 있고, 웹 서비스의 검색 기능과 같이 복잡한 요구사항을 만족하는 데이터를 조회할 수 있다는 특징이 있다.

DBMS는 크게 관계형과 비관계형을 기준으로 분류하는데, 다양한 종류의 DBMS가 존재한다.

종류 대표적인 DBMS
Relational(관계형) MySQL, MariaDB, PostgreSQL, SQLite
Non-Relational(비관계형) MongoDB, CouchDB, Redis

두 DBMS의 가장 큰 차이로 관계형은 행과 열의 집합인 테이블 형식으로 데이터를 저장하고, 비관계형은 테이블 형식이 아닌 키-값(Key-Value) 형태로 값을 저장한다.


Relational DBMS

Relational DBMS

**Relational DataBase Management System (RDBMS, 관계형 DBMS)**는 1970년에 Codds가 12가지 규칙을 정의하여 생성한 데이터베이스 모델이다.

RDBMS는 행(Row)과 열(Column)의 집합으로 구성된 테이블의 묶음 형식으로 데이터를 관리하고, 테이블 형식의 데이터를 조작할 수 있는 관계 연산자를 제공한다. Codds는 12가지 규칙을 정의했지만 실제로 구현된 RDBMS들은 12가지 규칙을 모두 따르지는 않았고, 최소한의 조건으로 앞의 두 조건을 만족하는 DBMS를 RDBMS라고 부르게 되었다. RDBMS에서 관계 연산자는 Structured Query Language (SQL) 라는 쿼리 언어를 사용하고, 쿼리를 통해 테이블 형식의 데이터를 조작한다.

학교에서 사용하는 정보들을 사용해 RDBMS의 예시를 들어보자. 학교(데이터베이스)에 여러 정보를 담은 테이블이 있다. 예를 들어 학생의 정보를 담은 학생 명부, 출석부, 성적표, 생활기록부 등이 테이블 형태로 관리된다. 그리고 각 테이블의 정보를 사용할 때에는 학번(학생들의 고유 키)을 참조해 사용한다.

학생 명부

학번(문자열) 이름(문자열) 생년월일(날짜) 번호(문자열)
20211234 김정보 2020.04.01 010-1337-1337
20211235 최보안 2016.01.01 070-8864-1337

보안과목 출석부