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”라는 구체적인 실제 데이터 한 줄 전체가 하나의 로우

  • 기본키 (Primary Key, PK)
    • 정의
      • 테이블 내에서 각 로우(행)를 유일하게 식별할 수 있는 유일한 고유값 컬럼
    • 설명
      • 대한민국 국민에게 ‘주민등록번호’가 있듯이, 테이블 내의 모든 데이터는 중복되지 않는 고유한 PK를 가짐
      • PK는 절대 비어있을 수 없으며(NOT NULL), 중복될 수 없(UNIQUE)
        • 예: 회원번호, 주문번호

  • 외래키 (Foreign Key, FK)
    • 정의
      • 다른 테이블의 기본키(PK)를 참조하는 컬럼
      • 테이블 간의 ‘관계’를 맺어줌
    • 설명
      • 주문 테이블에 회원번호 컬럼이 있다면, 이는 회원 테이블의 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)
      • 데이터의 정확성 유지(무결성)
      • 여러 사람이 동시에 접근해도 무너지지 않게 통제
      • 권한이 있는 사람만 접근할 수 있도록 보안 유지

  • 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
    • 비관계형 DBMS (NoSQL)
      • 정해진 틀 없이 자유로운 형태(JSON, Key-Value 등)로 데이터를 대량 적재할 때 사용
      • 종류: MongoDB, Redis, Cassandra


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)가 없다면 존재할 수 없으며, 일반 개발자가 실무에서 가장 많이 마주하는 영역


  • SQL의 주요 특징
    • 세계적 표준
      • ISO(국제표준화기구)에서 지정한 표준 언어
      • MySQL, Oracle, PostgreSQL 등 어떤 DBMS를 쓰더라도 기본 문법은 거의 동일하게 작동함
    • 선언적 언어
      • “데이터가 어디에 어떻게 저장되어 있는지” 과정을 지시하는 것이 아니라,
      • “내가 원하는 결과 데이터가 무엇인지(What)”만 선언하면 DBMS가 알아서 찾아옴
    • 영어와 유사한 문법
      • 대문자/소문자를 가리지 않으며,
      • 영어 문장 구조(SELECT name FROM users WHERE id = 1)와 매우 비슷하여 직관적이고 배우기 쉬움

💬 Q&A 및 의견 나누기