📌DB란?
데이터의 집합 저장소
여러 사람이 공유하고 사용할 목적으로 한 곳에서 통합 관리되는 데이터의 집합이다.
이를 효율적으로 관리하기 위해 저장소 역할을 한다.
⚙️DBMS(Database Management System)
DB를 직접 관리하고 운영하는 시스템 SW이다.
💡DBMS의 주요 기능
-
데이터 정의(Definition)
- DB의 논리적/물리적 구조(스키마, 테이블 등)를 정의하고 생성/수정/삭제하는 기능(CRUD) 제공
-
데이터 관리(Manipulation)
- 사용자가 데이터를 효율적으로 CRUD(생성, 조회, 수정, 삭제)할 수 있도록 지원한다.
- 데이터를 저장하기 위한 최적화된 파일 시스템을 내부적을 관리하며, 표준 쿼리 언어(SQL) 인터페이스를 제공한다.
-
데이터 보안(Security)
- 사용자 권한 관리, 데이터 암호화, 감사 로그를 통해 불법적인 접근으로부터 데이터를 보호
-
트랜잭션 및 동시성 제어(Concurrency Control)
- 다수의 사용자가 동시에 동일한 데이터에 접근할 때, 중복이나 데이터 불일치가 일어나지 않도록 제어
- DBMS는 여러 사용자가 동시에 데이터에 접근할 때, 데이터의 일관성을 유지하기 위한 트랜잭션 관리 기능을 제공한다.
- ACID 속성 보장
- Atomicity(원자성) : 트랜잭션의 모든 작업이 성공적으로 완료되거나, 실패 시 모든 작업이 롤백
- Consistency(일관성) : 트랜잭션이 DB를 일관된 상태로 유지
- Isolation(고립성) : 동시에 실행되는 트랜잭션 간의 영향을 최소화
- Durability(지속성) : 트랜잭션이 완료된 후 데이터의 변경 사항은 영구적으로 저장

-
백업 및 도구(Backup/Recovery)
- 예기치 못한 시스템 장애 발생 시 데이터를 안전하게 복구할 수 있는 기능 제공
🔍 감사 로그란?
시스템이나 DB에 "누가, 언제, 어떤 데이터에, 무엇을(어떻게)했는지" 기록해주는 일종의 로그"
📊 DBMS 유형별 핵심 비교
| 구분 | 관계형 DBMS (RDBMS) | 비관계형 DBMS (NoSQL) | 다중 모델 DBMS (Multi-model) |
|---|
| 특징 | • 데이터를 행과 열의 테이블 형태로 구조화하여 저장 • 테이블 간의 '관계(Relationship)'를 활용하여 데이터를 연결 | • 테이블 형식이 아닌 Key-Value, Document, Graph 등 다양한 형태로 저장 • 스키마가 고정되지 않아 자유로운 데이터 구조(Schema-less) 지원 | • 하나의 DBMS에서 관계형 데이터와 비관계형 데이터를 동시에 지원 |
| 장점 | • 엄격한 데이터 무결성 보장 • 표준 SQL 지원으로 높은 범용성 • 트랜잭션 안전성(ACID) 우수 | • 대규모 데이터 처리 용이 • 빠른 읽기/쓰기 성능 • 수평적 확장(Scale-out)에 매우 유리 | • 여러 DB를 개별적으로 구축할 필요 없이, 하나의 시스템에서 하이브리드로 데이터 처리 가능 |
| 대표 예시 | MySQL, PostgreSQL, Oracle, SQL Server | MongoDB, Redis, Cassandra | Amazon DynamoDB, Azure Cosmos DB |
RDBMS이란?
- RDB를 관리할 수 있는 SW로 데이터를 테이블형식으로 관리한다.
- RDBMS는 데이터 간의 관계를 정의한다.
- 이러한 관계를 복잡한 Query를 실행할 수 있는 기능을 제공한다.
📌RDBMS의 특징
1. 테이블(Table) 구조
RDBMS에서 데이터는 행(Row)과 열(Col)로 이루어진 2차원 표(Table) 형태로 저장된다.
- 열(Column/Attribute) : 데이터의 속성을 나타내며, 고유한 이름과 데이터 타입(int, varchar 등)을 가진다.
- 행(Row/Tuple/Record) : 관계된 데이터 값들의 묶음으로, 하나의 구체적인 개체 인스턴스를 의미한다.

2. 데이터 무결성(Data Integrity)
데이터가 깨지지 않고, 정확성, 일관성, 유효성을 유지하는 성질이다.
- 엔티티 무결성 : 모든 테이블은 중복되지 않고
NULL이 아닌 기본 키(Primary Key)를 가져야 한다.
- 참조 무결성 : 외래 키(FK)값은 참조하는 테이블의 기본 키(PK)로 존재하거나
NULL이어야 한다.(고스트 데이터 방지)
- 도매인 무결성 : 특정 열에 입력되는 값은 지정된 데이터 타입 및 제약 조건(ex. 나이는 0보다 커야 함)을 만족해야 한다.
3. 관계(Relationships)
-
1:1 관계 : 본인 인증 정보와 회원 정보처럼 단 하나의 행끼리만 연결됨
-
1:N 관계(가장 많이 쓰임) : 한 명의 고객(1)이 여러 개의 주문(N)을 생성하는 구조
-
N:M 관계 : 어려 학생(N)이 여러 과목(M)을 수강하는 구조(중간에 매핑 테이블을 두어 1:N, N:1로 풀어내는 것이 표준 설계)
E-R다이어그램 페이지에서 관계 좀 더 알아보기
4. 키(Keys) 종류
- 기본 키(Primary Key) : 행을 유일하게 식별하는 대표 키 / 중복 불가능 /
NULL 불가능
- 외래 키(Foreign Key) : 다른 테이블의 PK를 참조하는 키 / 테이블 간의 관계를 맺고 참조 무결성을 보장함
- 유일 키(Unique Key) : 중복을 허용하지 않는 키 / 기본 키와 유사하나
NULL을 허용할 수 있으며, 한 테이블에 여러 개 지정가능(ex. 이메일 주소, 전화번호)

5. SQL(Structured Query Language)
- RDBMS에서 데이터를 정의하고, 관리하기 위한 표준 언어이다.
- 데이터를 생성(Create), 읽기(Read), 갱신(Update), 삭제(Delete)하는 작업을 수행한다.
6. 정규화(Normalization)
- 데이터의 중복을 줄이고, 일관성과 무결성을 유지하기 위해 데이터를 구조화하는 프로세스이다.
- 여러가지 정규화 단계가 있으며, 각 단계는 데이터 중복을 줄이고 이상 현상을 방지하는 데 목적이 있다.
7. 인덱스(Index)
- 특정 열의 검색 기능을 향상시키기 위해 사용된다.
- 인덱스는 테이블의 데이터를 정렬하고, 효율적으로 접근할 수 있도록 지원한다.
- 인덱스가 많아지면 삽입 및 수정 작업의 성능에 영향을 미칠 수 있다.
8. 트랜잭션(Transaction)
- RDBMS는 트랜잭션이라는 단위를 통해 데이터베이스 작업을 처리하며, 이를 통해 데이터의 일관성과 무결성을 유지한다.
- 트랜잭션은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)이라는 ACID 속성을 따른다.
- Atomicity: 트랜잭션의 모든 작업이 성공적으로 완료되거나, 실패 시 모든 작업이 롤백
- Consistency: 트랜잭션이 데이터베이스를 일관된 상태로 유지
- Isolation: 동시에 실행되는 트랜잭션 간의 영향을 최소화
- Durability: 트랜잭션이 완료된 후 데이터의 변경 사항은 영구적으로 저장
SQL이란?
SQL 틀징
SQL 종류