Database 개요
Database의 개념과 기초에 대하여 학습합니다.
1. 데이터베이스(Database, DB)
- 정의
- 여러 사용자가 서로 다른 목적으로 동시에 공유하여 사용할 수 있도록 체계적으로 통합·관리되는 데이터의 집합
- 단순히 데이터를 모아둔 것을 넘어, 컴퓨터 시스템에 전자적으로 저장되며,
- 필요한 데이터를 몇 밀리초(ms) 만에 찾아낼 수 있도록 효율적인 검색과 수정이 가능한 형태로 구조화되어 있음
1.1 왜 데이터베이스를 사용해야 하는가? (vs 파일 시스템)
-
과거에는 종이에 연필로 기록해 장부로 관리(오프라인 관리)
-
컴퓨터가 확산되면서 엑셀이나 텍스트 파일(파일 시스템)로 데이터를 관리
- 데이터의 양이 많아지고 사용자가 늘어나면서 다음과 같은 한계에 부딪힘
- 데이터 중복 및 불일치 문제
- 하나의 데이터가 여러 파일에 흩어져 있으면 수정 시 일부가 누락되어 데이터가 서로 달라지는 문제가 생김
- 동시성 문제
- 파일 시스템은 누군가 엑셀 등의 파일을 수정 중이면 다른 사람이 편집할 수 없거나 덮어쓰여짐
- 보안 및 권한 문제
- 데이터 중복 및 불일치 문제
- 이러한 문제를 해결하기 위해 데이터베이스가 탄생함
- 데이터 중복 및 불일치 방지 🡲 DB는 이를 중앙에서 한 번에 관리함
- 동시성 제어 🡲 DB는 수천 명이 동시에 접근해도 데이터가 깨지지 않도록 통제함
- 보안 및 권한 관리 🡲 열(Column) 단위, 행(Row) 단위까지 세밀하게 접근 권한을 제어할 수 있음
1.2 데이터베이스의 4대 핵심 특징
- 실시간 접근성 (Real-time Accessibility)
- 사용자가 요청하는 순간 실시간으로 데이터를 처리하여 응답함
- 계속적인 변화 (Continuous Evolution)
- 데이터의 삽입(Insert), 삭제(Delete), 수정(Update)을 통해 항상 최신 상태를 유지함
- 동시 공유 (Concurrent Sharing)
- 여러 사용자가 서로 다른 목적으로 동시에 동일한 데이터에 접근할 수 있음
- 내용에 의한 참조 (Content Reference)
- 데이터의 저장 위치나 주소가 아닌, 데이터의 ‘값(내용)’을 가지고 원하는 데이터를 찾음
1.3 데이터베이스 핵심 필수 용어 정의
-
데이터베이스 실무와 학습에서 가장 기본이 되는 6가지 필수 용어
- 스키마 (Schema)
- 정의
- 데이터베이스의 ‘뼈대’ 또는 ‘구조’를 의미
- 설명
- 데이터베이스에 어떤 테이블이 들어가고,
- 각 테이블에는 어떤 종류의 데이터(문자, 숫자 등)가 어떤 규칙으로 저장되는지
- 등을 정의한 청사진(설계도)
- 정의
- 테이블 (Table) / 엔티티 (Entity)
- 정의
- 데이터를 저장하는 가장 기본적인 단위
- 행과 열로 구성된 표
- 설명
- (개념적으로는) 관리하고자 하는 대상(예: 사용자, 상품, 주문)을 ‘엔티티’라고 부름
- 이것이 데이터베이스 내에 실제 구현된 결과물이 ‘테이블’
- 정의
- 컬럼 (Column) / 속성 (Attribute)
- 정의
- 테이블의 세로줄을 의미
- 데이터의 고유한 특성을 담고 있음
- 설명
- 예를 들어 회원 테이블이 있다면
- 이름, 이메일, 가입일 등이 각각의 컬럼이 됨
- 각 컬럼은 정해진 데이터 타입(예: INT, VARCHAR)만 가질 수 있음
- 예를 들어 회원 테이블이 있다면
- 정의
- 로우 (Row) / 레코드 (Record) / 튜플 (Tuple)
- 정의
- 테이블의 가로줄을 의미
- 관계된 데이터들의 하나의 완전한 세트
- 설명
- 회원 테이블에서 “1번 회원 / 홍길동 / hong@email.com / 2026-05-29”라는 구체적인 실제 데이터 한 줄 전체가 하나의 로우
- 회원 테이블에서 “1번 회원 / 홍길동 / hong@email.com / 2026-05-29”라는 구체적인 실제 데이터 한 줄 전체가 하나의 로우
- 정의
- 기본키 (Primary Key, PK)
- 정의
- 테이블 내에서 각 로우(행)를 유일하게 식별할 수 있는 유일한 고유값 컬럼
- 설명
- 대한민국 국민에게 ‘주민등록번호’가 있듯이, 테이블 내의 모든 데이터는 중복되지 않는 고유한 PK를 가짐
- PK는 절대 비어있을 수 없으며(NOT NULL), 중복될 수 없(UNIQUE)
- 예: 회원번호, 주문번호
- 예: 회원번호, 주문번호
- 정의
- 외래키 (Foreign Key, FK)
- 정의
- 다른 테이블의 기본키(PK)를 참조하는 컬럼
- 테이블 간의 ‘관계’를 맺어줌
- 설명
- 주문 테이블에 회원번호 컬럼이 있다면, 이는 회원 테이블의 PK를 참조하는 외래키(FK)가 됨
- 이를 통해 “이 주문을 한 사람이 누구인지” 테이블 간의 연결 고리를 만듦
- 주문 테이블에 회원번호 컬럼이 있다면, 이는 회원 테이블의 PK를 참조하는 외래키(FK)가 됨
- 정의
1.4 데이터 아키텍처 계층 구조
-
데이터베이스 시스템이 구동되는 전체적인 계층을 위에서 아래로 요약하면
(Source: Sky Lectures / AiDALab)
-
사용자/응용 프로그램: 필요한 데이터를 요청함
- SQL (구조화 질의어)
- 사용자가 데이터베이스와 소통하기 위해 사용하는 표준 언어
- 예: “회원 테이블에서 홍길동을 찾아줘”
- DBMS (데이터베이스 관리 시스템)
-SQL 명령을 해석하여 실제 데이터 저장소에 안전하게 접근하고 결과를 돌려주는 소프트웨어 엔진
- 예: MySQL, Oracle
- Database (데이터베이스)
- 데이터가 물리적(디스크, 메모리)으로 정형화되어 저장되어 있는 물리적/논리적 집합소
-
2. 데이터베이스 관리 시스템(DBMS)
- 데이터베이스 관리 시스템(Database Management System, DBMS)
- 사용자와 데이터베이스 사이에서 데이터를 관리하고 사용자의 요구에 따라 효율적으로 정보를 생성해 주는 소프트웨어
- 예: MySQL, Oracle, PostgreSQL 등
- 데이터베이스가 데이터를 모아둔 ‘창고’라면, DBMS는 그 창고를 안전하게 관리하고 물건을 대신 꺼내주는 ‘창고 관리인’
- 엑셀 파일이나 단순 텍스트 파일과 달리, 대용량의 데이터를 여러 사람이 동시에 안전하게 쓸 수 있도록 통제해 주는 역할을 수행
DBMS 개념도
- DBMS의 3대 필수 기능
- 정의 (Definition)
- 데이터의 형태, 구조, 데이터가 가질 수 있는 조건(제약조건)을 설정
- 조작 (Manipulation)
- 데이터를 조회(Select), 삽입(Insert), 수정(Update), 삭제(Delete)할 수 있는 수단(예: SQL) 제공
- 제어 (Control)
- 데이터의 정확성 유지(무결성)
- 여러 사람이 동시에 접근해도 무너지지 않게 통제
- 권한이 있는 사람만 접근할 수 있도록 보안 유지
- 정의 (Definition)
- DBMS의 발달과 종류
- 계층형 DBMS
- 처음으로 나온 DBMS 개념 - 1960년대에 시작
- 각 계층은 트리Tree 형태, 1:N 관계
- 문제점
- 처음 구축한 이후 그 구조를 변경하기가 상당히 까다로움
- 주어진 상태에서의 검색은 상당히 빠름
- 접근 유연성 부족해서 임의의 검색에는 어려움
- 망형 DBMS
- 계층형 DBMS의 문제점을 개선하기 위해 1970년대에 시작
- 1:1,1:N, N:M(다대다) 관계 지원 - 효과적이고 빠른 데이터 추출
- 복잡한 내부 포인터 사용 🡲 프로그래머가 이 모든 구조를 이해해야만 프로그램의 작성 가능
- 관계형 DBMS (Relational DBMS, RDBMS)
- 1969년 E.F.Codd라는 학자가 수학 모델에 근거해 고안
- 에드거 F. 코드(E. F. Codd, 1923~2003): 관계형 데이터베이스(RDBMS)의 이론적 기반을 확립한 영국계 미국인 컴퓨터 과학자
- 데이터를 표(Table) 형태의 최소 단위로 관리하는 가장 표준적인 시스템
- 테이블은 하나 이상의 열로 구성
- 장점
- 다른 DBMS에 비해 업무가 변화될 경우 쉽게 변화에 순응
- 유지보수 측면에서도 편리
- 대용량 데이터의 관리와 데이터 무결성Integration보장
- 단점
- 시스템 자원을 많이 차지해 시스템이 전반적으로 느려지는 것 🡲 하드웨어가 발전하면서 해결됨
- 종류: MySQL, Oracle, PostgreSQL, MS SQL Server
- 1969년 E.F.Codd라는 학자가 수학 모델에 근거해 고안
- 비관계형 DBMS (NoSQL)
- 정해진 틀 없이 자유로운 형태(JSON, Key-Value 등)로 데이터를 대량 적재할 때 사용
- 종류: MongoDB, Redis, Cassandra
- 계층형 DBMS
3. 구조화 질의어(SQL)
- SQL (Structured Query Language, 구조화 질의어)
- 관계형 데이터베이스(RDBMS)에 저장된 데이터를 관리하고 소통하기 위해 사용하는 표준 컴퓨터 언어
- DBMS와 대화하기 위한 표준 언어
- 데이터베이스라는 창고(RDBMS)에 있는 데이터를 조회하고, 넣고, 수정하고, 지우기 위해 창고 관리인(DBMS)에게 건내는 ‘표준 명령어(대화 수단)’
- SQL의 3대 핵심 기능 분류
- SQL은 목적에 따라 크게 세 가지 종류의 명령어로 나뉨
- DCL (Data Control Language - 데이터 제어어)
- 역할: 데이터베이스에 대한 접근 권한을 주거나 빼앗을 때 사용
- 명령어: GRANT (권한 부여), REVOKE (권한 회수), DENY (명시적 거부)
- 포함 범위: 데이터베이스 시스템 전체 시스템 및 보안 영역
- 가장 강력하고 넓은 범위를 제어함
- DDL이나 DML을 실행할 수 있는 ‘권한 자체’를 통제하는 계층
- DCL(GRANT, REVOKE)을 통해 허가를 받아야만 그 안의 DDL이나 DML 영역으로 진입할 수 있으므로, 모든 데이터베이스 행위의 최상위 울타리 역할을 수행
- DDL (Data Definition Language - 데이터 정의어)
- 역할: 테이블이나 데이터베이스 같은 ‘데이터의 틀’을 만들고 변경할 때 사용
- 명령어: CREATE (생성), ALTER (수정), DROP (삭제), TRUNCATE (초기화)
- 포함 범위: 데이터베이스, 테이블, 뷰 등 ‘틀(구조)’ 영역
- DCL의 허가를 받은 사용자가 들어와서 데이터를 담을 ‘바구니(테이블)’를 만들고 변형하고 부수는 계층
- 테이블 구조(CREATE, ALTER, DROP)가 먼저 생성되어야만 그 안에서 실제 데이터를 조작할 수 있으므로, DML을 포함하는 상위 개념
- DML (Data Manipulation Language - 데이터 조작어)
- 역할: 데이터를 실제로 다룰 때 사용하며, 실무에서 가장 많이 사용됨
- 명령어: SELECT (조회), INSERT (삽입), UPDATE (수정), DELETE (삭제)
- 포함 범위: 테이블 내부의 ‘실제 데이터(Row/Record)’ 영역
- DDL로 만들어진 바구니 안에서 실제 알갱이(데이터)들을 넣고, 바꾸고, 지우고, 조회하는 가장 구체적이고 작은 단위의 계층
- 구조(DDL)가 없다면 존재할 수 없으며, 일반 개발자가 실무에서 가장 많이 마주하는 영역
- DCL (Data Control Language - 데이터 제어어)
- SQL은 목적에 따라 크게 세 가지 종류의 명령어로 나뉨
- SQL의 주요 특징
- 세계적 표준
- ISO(국제표준화기구)에서 지정한 표준 언어
- MySQL, Oracle, PostgreSQL 등 어떤 DBMS를 쓰더라도 기본 문법은 거의 동일하게 작동함
- 선언적 언어
- “데이터가 어디에 어떻게 저장되어 있는지” 과정을 지시하는 것이 아니라,
- “내가 원하는 결과 데이터가 무엇인지(What)”만 선언하면 DBMS가 알아서 찾아옴
- 영어와 유사한 문법
- 대문자/소문자를 가리지 않으며,
- 영어 문장 구조(SELECT name FROM users WHERE id = 1)와 매우 비슷하여 직관적이고 배우기 쉬움
- 세계적 표준