데이터베이스 1주차 내용 정리

박서영·2026년 3월 5일

📎 데이터베이스와 DBMS

데이터베이스

  • 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 집합.
  • 데이터의 저장/검색/갱신을 효율적으로 수행할 수 있도록 조직화해 저장

DBMS

  • 데이터베이스 관리 시스템
  • 오라클, MS SQL Server, MySQL, IBM의 DB2

  • DBMS의 종류:
    1. 관계형 DBMS: 키와 값들의 관계를 테이블로 표현한 데이터베이스 모델
    2. 객체 지향 데이터베이스: 정보를 객체의 형태로 표현하는 데이터베이스 모델
    3. NoSQL, NewSQL DBMS:비정형데이터를 처리하는데에 적합

관계형 데이터베이스(RDBMS)

관계형 데이터베이스

  • 데이터베이스를 테이블을 형태로 구성.
  • 데이터들이 다수의 테이블로 구성되며, 각 테이블은 키(key)와 값(value)들의 관계로 표현.
  • 키는 테이블의 열(column), 테이블은 행(row)은 하나의 레코드(record)를 표현.

기본 용어

  • 릴레이션: 하나의 개체에 관한 데이터를 2차원 테이블 구조로 저장한 것.
  • 속성(attritube): 릴레이션의 열, 파일관리시스템에서 필드에 해당.
  • 튜플(tuple): 릴레이션의 행, 파일관리시스템에서 레코드에 해당.
  • 도메인(domain): 하나의 속성이 가질 수 있는 모든 값의 범위 또는 데이터 타입.
    예) 문자열, 정수, 실수...


SQL과 JDBC

SQL

  • 관계형 데이베이스 관리 시스템에서 사용하는 쿼리용 언어
  • 데이터베이스 스키마 생성, 자료의 검색/관리/수정/DB 객체 접근 관리를 위해 고안된 언어.
  • 데이터베이스로부터 정보를 추출 또는 갱신하기 위한 표준 대화식 프로그래밍 언어

JDBC

  • 관계형 데이터베이스에 저장된 데이터를 접근 및 조작할 수 있게 하는 API
  • 다양한 DBMS에 대해 일관된 API로 데이터베이스 연결/검색/수정/관리 등을 할 수 있게함.
  • JDBC 드라이버: DBMS마다 고유한 JDBC 드라이버 제공

CRUD란?

  • 데이터를 다루는 4가지 기능으로 Create, Read, Update, Delete

CRUD API

  • CRUD 기능을 HTTP 기반의 API로 제공하는 것
  • 데이터베이스에 있는 데이터를 웹 애플리케이션 또는 다른 시스템에서도 쉽게 다룰 수 있게 만드는 인터페이스

CRUD 프로그래밍

  • 단순히 CRUD 기능을 사용하는 개발방식X, 데이터중심의 앱/시스템을 설계하고 구현하는 기본 패턴
  • 데이터 생성/조회/수정/삭제 등 전체 흐름을 다루는 프로그램을 만듦.

📎 데이터베이스

1. 데이터

구조에 따른 데이터 분류

  1. 정형 데이터: 구조화된 데이터로 행과 열이 명확히 저장됨.
    예) 엑셀 스프레드시트
  2. 반정형 데이터: 일정한 구조는 있지만, 고정되지 않고, 키-값으로 유연하게 저장.
    예) JSON, XML 등
{
  	"이름" : "김이화",
 	"나이" : 23,
  	"성별" : "여"
} json
  1. 비정형 데이터: 구조가 없고 자유로운 형태.
    예) 이미지, 영상, 텍스트 문서

특성에 따른 데이터 분류

  1. 범주형 데이터: 범주로 구분할 수 있는 값(=종류를 나타내는 값). 크기 비교나 산술연산이 불가해 질적 데이터라고도 함.
  2. 수치형 데이터: 크기 비교와 산술 연산이 가능한 숫자값을 가진 데이터. 양적 데이터라고도함.

2.데이터베이스의 개념 및 특징

데이터베이스 개념

  • 여러 사용자가 공유해 사용할 수 있도록 통합 저장한 운영 데이터의 집합
  1. 공유 데이터: 특정 조직의 여러 사용자가 함께 소유하고 이용할 수 있는 공용 데이터.
    => 여러 사용자가 활용.
  2. 통합 데이터: 최소의 중복과 통제 가능한 중복만 허용하는 데이터.
    => 중복 제거 + 하나로 모음.
  3. 저장 데이터: 컴퓨터가 접근할 수 있는 매체에 저장된 데이터.
    => 영구적인 보관
  4. 운영 데이터: 조직의 주요 기능을 수행하기 위해 지속적으로 꼭 필요한 데이터.
    => 실시간 업무에 활용

3. 데이터베이스 시스템의 기본 구성요소

구성: 데이터베이스 관리 시스템(DBMS), 데이터베이스, 데이터 모델

  1. 데이터베이스: 실제 데이터를 저장하는 공간. 통합/공유/저장/운영 데이터 포함

  2. DBMS: 데이터베이스를 관리하는 소프트웨어로 사용자와 데이터베이스를 연결.

  3. 데이터 모델: 데이터를 설계하는 논리(ERD)와 저장기법

  4. 데이터베이스 사용자:
    최종 사용자(일반 사용자): 응용 프로그램을 통해 데이터 활용.
    개발자/관리자: DB 설계/운영/보안 관리.

  5. 인터페이스:
    데이터베이스 언어: SQL -> 사용자가 DBMS에게 명령을 내리는 수단.
    응용 프로그램: DBMS와 사용자 사이에서 동작. SQL을 통해 데이터베이스와 연동.

정보 시스템의 발전

파일 시스템 -> 데이터베이스 시스템 -> 웹 데이터베이스 시스템 -> 분산 데이터베이스 시스템


📎 파일 시스템과 DBMS

DBMS의 장단점

장점

  • 데이터 중복을 통제 가능
  • 데이터 독립성 확보
  • 데이터를 동시 공유 가능
  • 데이터 보안의 향상
  • 데이터의 무결성 유지 가능
  • 표준화할 수 있음
  • 장애 발생 시 회복이 가능
  • 응용 프로그램 개발 비용이 줄어듦.

단점

  • 도입비용이 많이 듦
  • 백업과 장애 회복 방법이 복잡함
  • 중앙 집중 관리로 인한 취약점 존재
  • 대규모 사용자의 동시접속/복잡한 쿼리 처리시 성능 저하 발생 가능
  • 설계/운영/최적화/튜닝에 전문지식이 요구. 효율적 관리를 위해 숙련된 DBA가 필요.

DBMS의 발전과정

1세대: 네트워크 DBMS, 계층 DBMS

  • 네트워크 DBMS: 데이터베이스를 그래프 형태로 구성
  • 계층 DBMS: 데이터베이스를 트리 형태로 구성.

2세대: 관계 DBMS

  • 관계 DBMS: 데이터베이스를 테이블 형태로 구성.
    예) 오라클, MS SQL 서버, 액세스, 인포믹스, MySQL, 마리아DB(MariaDB)

3세대: 객체지향 DBMS, 객체관계 DBMS

  • 객체지향 DBMS: 객체를 이용해 데이터베이스를 구성
    예) 오투, 온투스, 젬스톤
  • 객체관계 DBMS: 객체지향 DBMS + 관계 DBMS
    예) 관계 DBMS 제품들이 객체지향 기능을 지원하면서 객체관계 DBMS로 분류. (대표적으로 오라클)

4세대:NoSQL/NewSQL DBMS

NoSQL DBMS: 비정형 데이터를 처리하는데 적합하고 확장성이 뛰어남.

  • 안정성과 일관성 유지를 복잡한 기능 포기
  • 데이터 구조를 미리 정해두지 않는 유연성.
  • 여러 대의 컴퓨터에 데이터를 분산해 저장하고 처리하는 환경에서 주로 사용
    예) MongoDB, HBase, Redis

NewSQL DBMS: 관계 DBMS의 장점 + NoSQL의 확정성 및 유연성

  • 정형 및 비정형 데이터를 안정적이고 빠르게 처리 가능
    예) 구글 스패너, 볼트DB, 누오DB


📎 데이터베이스 시스템의 구성

1. 데이터베이스 시스템의 기본 구성

  • 데이터베이스 / DBMS / 데이터 모델
  • 데이터베이스 사용자
  • 인터페이스
    • 데이터베이스 언어(SQL)
    • 응용 프로그램

2. 데이터베이스 언어(SQL)

  • 사용자와 DBMS 간의 통신 수단

SQL의 구성

  • 데이터 정의(DDL): DBMS에 저장된 테이블 구조를정의하는데 사용
    예) CREATE, ALTER, DROP

  • 데이터 조작어(DML): 데이터를 검색/삽입/삭제/수정하는데 사용
    예) INSERT, SELECT, UPDATE, DELETE

  • 데이터 제어어(DCL): 내부적으로 필요한 규칙이나 데이터의 사용 권한을 관리하는데 사용
    예) GRANT, REVOKE

SQL의 핵심

  • 데이터 조작어 중 데이터를 검색하는 질의문
  • 질의문은 SELECT-FROM-WHERE 구조로 되어 있음.

3. 데이터베이스 사용자

  • 데이터베이스를 이용하기 위해 접근하는 모든 사람

  • 이용 목적에 따라 최종 사용자, 데이터베이스 관리자, 응용 프로그래머, SQL 사용자로 구분

  • 일반 사용자: 데이터베이스에 접근해 데이터를 조작하는 사람 -> 프로그래머가 개발한 프로그램을 이용해 접근/주로 데이터 조작어 사용

  • SQL 사용자: SQL을 사용해 업무를 처리. 응용 프로그램으로 구현되지 않은 업무를 SQL을 사용해 처리.

  • 응용 프로그래머: 일반 사용자가 사용할 수 있도록 프로그램을 작성하는 사람.

  • 데이터베이스 관리자(DBA): 데이터베이스 시스템을 운영/관리하는 사람. 주로 DDL, DCL 사용.

4. 데이터 모델

  • 현실 세계의 데이터를 DB 구조로 변환하는 논리적 가이드라인
  • 데이터베이스 시스템에서 데이터를 저장하는 이론적인 방법
  • 데이터베이스 시스템에서 데이터가 어떻게 구조화되어 저장되는지를 결정
  • 관계를 표현하는 방법에 따라 "계층/네트워크/관계/객체 모델 등이 존재
  • 현재 가장 많이 사용되는 데이터 모델 = 관계 데이터 모델

관계 표현 방법

  1. 포인터 사용: 계층 데이터 모델, 네트워크 데이터 모델
    예) 강좌 데이터가 저장된 포인터 값 p를 학생 데이터에 저장
    => 프로그램 속도는 빠르지만 개발 속도가 느림.
  1. 속성값 사용: 관계 데이터 모델
    예) 강좌 데이터의 속성값을 학생 데이터에 저장
    => 개념이 쉽고 개발 속도가 빠름.
  1. 객체 식별자 사용: 객체 데이터 모델
    예) 강좌 객체의 고유식별자인 oid를 학생 테이블에 저장
    => 객체지향언어의 상속, 캡슐화 개념 도입 가능

5. 데이터베이스의 개념적 구조

1) 용어 정리

  • 스키마: 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것.
    ㄴ 테이블 헤더(header)
  • 인스턴스: 스키마에 따라 데이터베이스에 실제로 저장된 값
    ㄴ 예) 테이블에 저장된 행: 101, 짱구, 5, 떡잎마을

2) 데이터베이스 개념적 구조

3단계 데이터베이스 구조: 관점에 따라 외부 단계, 개념 단계, 내부 단계로 분류

(1) 외부단계: 개별 사용자 관점

  • 일반사용자/응용 프로그래머가 접근하는 계층.
  • 전체 데이터베이스 중에서 하나의 논리적인 부분을 의미. 여러 개의 외부 스키마가 있을 수 있음 (논리적 구조로 사용자마다 다를 수 있음)

(2) 개념단계: 조직 전체의 관점

  • 통합 조직별로 하나만 존재하며 DBA가 관리.
  • 개념 스키마: 개념단계에서 전체 데이터베이스의 논리적 구조를 정의한 것. => 데이터들간의 관계, 제약조건에 대한 정의, 보안정책이나 접근 권한에 대한 정의도 포함.

(3) 내부단계: 저장 장치의 관점

  • 물리적 저장 장치에 데이터베이스가 실제로 저장되는 방법을 표현한 것.
  • 하나의 데이터베이스에는 내부 스키마 하나만 존재하며 레코드 구조, 필드 크기, 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함됨.

3) 매핑(사상)

DBMS는 매핑(사상)을 통해 각 단계 간의 관계를 정의.

  1. 외부/개념 사상: 외부 스키마와 개념 스키마의 대응 관계. 응용 인터페이스라고도함.
  2. 개념/내부 사상: 개념 스키마와 내부 스키마의 대응 관계. 저장 인터페이스라고도함.

4) 데이터 독립성

하위 단계의 내용을 추상화하여 상위 단계에 숨김으로써 다른 단계와 상호간섭이 없도록하는 것. (=즉, 하위 스키마를 변경하더라도 상위 스키마가 영향을 받지 않도록 하는 것)

  1. 논리적 데이터 독립성
  • 외부 단계와 개념 단계 사이의 독립성
  • 개념 스키마가 변경되어도 외부 스키마(사용자 뷰)에는 영향X
  • 논리적 구조가 변경되어도 응용프로그램에는 영향X
    예) 새로운 속성을 테이블에 추가해도 기존 사용자 질의는 그대로 동작

  1. 물리적 데이터 독립성
  • 개념 단계와 내부 단계 사이의 독립성
  • 내부 스키마(저장구조)가 변경되어도 개념 스키마에 영향X
    예) 인덱스 구조를 바꾸거나 저장방식을 변경해도 논리적 구조는 동일

📎 후속활동

1. DBMS 종류에 대한 선호도 및 국내 점유율 조사

Oracle > MySQL > MS SQL Server > PostgreSQL > MongoDB (국제 기준)

[DB-Engines Ranking]

공공시장 기준 공급업체 상위 5곳은 오라클(62%), 마이크로소프트(14%), 큐브리드(10%), 티맥스데이터(9%), 마리아DB(3%). 다만, 민간 시장 포함 시 오라클과 오픈소스(MySQL, PostgreSQL)이 압도적인 점유율 차지.

큐브리드는 국산 오픈소스 DBMS라 공공기관에서 탈외산 및 오픈소스 권장 정책의 영향으로 공공시장에서의 점유율이 높은편...

[참고자료: [DX브리핑] 국산 DBMS, 공공시장서 도약]

2. DBMS 자격증 정리

전문가 vs 일반

전문가: SQLP, DAP, OCP
일반/준전문가: SQLD, DAsP, ADsP, OCA

DBMS별 자격증

DBMS 구분주요 자격증
OracleOCP/OCM
AzureDP-900/DP-300
Google CloudProfessional Database Engineer
MongoDBAssociate DBA/Developer
PostgreSQLEDBPostrgreSQL Associate
profile
이불 밖은 위험해.

0개의 댓글