티스토리 뷰

1. 데이터베이스란?

여러 사람들이 다양한 방식으로 데이터를 저장, 검색, 수정할 수 있도록 구조화된 데이터의 집합
앱 또는 시스템에서 데이터를 구조화하고 효율적으로 다루기 위한 도구

 

사용 예시

  • 사용자 로그인 정보 저장 (이메일/비밀번호)
  • 최근 사용 내역 조회
  • 오프라인 상태에서도 앱 작동 (ex. 메모 앱, 캘린더)

 

2. DBMS (Database Management System)

데이터베이스를 쉽게 사용할 수 있도록 해주는 소프트웨어

 

주요 역할

  • 데이터를 파일이 아닌 논리적으로 관리 (인덱스, 트랜잭션, 동시성 제어 등)
  • SQL을 통해 데이터 처리

대표 DBMS

분류 예시
관계형 (RDB) MySQL, PostgreSQL, Oracle
비관계형 (NoSQL) MongoDB, Firebase, Redis
로컬 DB SQLite, Room

 

3. SQL (Structured Query Language)

데이터베이스에 명령을 내리는 표준 언어

SELECT * FROM users WHERE age > 20;
INSERT INTO users (name, age) VALUES ('Anna', 25);
UPDATE users SET age = 26 WHERE name = 'Anna';
DELETE FROM users WHERE age < 18;

 

연산 종류

연산 주의할 점
SELECT (조회) 인덱스가 없으면 느려짐 → WHERE 조건에 인덱싱 필요
INSERT (삽입) UNIQUE 제약조건 충돌 주의. 대량 삽입 시 배치 처리 고려
UPDATE (수정) WHERE 누락 시 전체 수정됨 → 항상 조건문 확인
DELETE (삭제) 트랜잭션 사용 필수. 외래키 제약이 있다면 제약 해제 순서 확인

 

4. 관계형 데이터베이스 (RDB: Relational Database)

 

핵심 개념

  • 데이터를 테이블 단위로 저장 (엑셀처럼 행과 열)
  • 테이블 간 관계 설정 가능 (Join)
  • JOIN이 많아질수록 성능 이슈 발생 가능 → 인덱스 튜닝 필수
  • 엄격한 스키마 구조 → 데이터 간 관계가 명확한 경우 추천
  • 트랜잭션 처리로 데이터 정합성을 보장할 수 있어 업무 로직에 신뢰성 요구될 때 적합

주요 용어

용어 설명
테이블 데이터 저장 단위
행(Row) 레코드, 데이터 한 건
열(Column) 속성 (이름, 나이 등)
기본키(PK) 각 행을 유일하게 식별
외래키(FK) 다른 테이블과의 관계를 나타냄
스키마 테이블 구조 정의

 

5. 키(Key)의 종류

키 종류 설명
슈퍼 키(Super Key) 유일성만 만족
후보 키(Candidate Key) 슈퍼 키 중 최소성도 만족
기본 키(Primary Key) 후보 키 중 하나 선택 (NOT NULL + UNIQUE)
대체 키(Alternate Key) 후보 키 중 기본 키 제외한 나머지
외래 키(Foreign Key) 다른 테이블의 기본 키를 참조

 

6. 정규화(Normalization)

  • 중복 제거 및 데이터 무결성을 위해 테이블을 구조적으로 나누는 과정
  • 정규화는 중복 제거와 무결성 확보에 효과적
  • 하지만 과도한 정규화 → JOIN 남발 → 성능 저하
  • 실무에서는 3NF 또는 BCNF까지만 적용하고, 필요한 경우 비정규화로 속도 최적화
정규형 설명
제1정규형 (1NF) 컬럼이 원자값(단일값)만 가지도록 분리 (중첩/반복되는 컬럼 제거)
제2정규형 (2NF) 제1정규형 만족 + 기본키의 일부에만 종속된 컬럼 제거 (부분 종속 제거)
제3정규형 (3NF) 제2정규형 만족 + 이행적 종속 제거 (비기본키 → 다른 비기본키 종속 제거)
BCNF (보이스-코드 정규형) 제3정규형 만족 + 모든 결정자가 후보키일 것 (후보키 아닌 컬럼이 결정자면 분해)
제4정규형 (4NF) BCNF 만족 + 다치 종속 제거 (하나의 키가 여러 독립적인 다중값을 가질 때 분리)
제5정규형 (5NF) 제4정규형 만족 + 조인 종속 제거 (조인 후에도 정보 손실 없이 복원 가능하게 분해)

 

용어 정리

  • 부분 종속: 기본키의 일부에만 종속됨
  • 이행적 종속: A → B, B → C이면 A → C가 되는 관계
  • 결정자: 다른 값을 결정하는 컬럼 (예: 학번 → 이름)
  • 다치 종속: 하나의 속성이 여러 개의 독립된 값을 가짐
  • 조인 종속: 테이블을 조인했을 때만 의미가 있는 종속 관계

 

7. 트랜잭션과 ACID

트랜잭션: 데이터베이스 작업의 논리적 단위

 

ACID 4원칙

항목 설명
원자성(Atomicity) 전부 실행되거나 전부 취소됨
일관성(Consistency) 무결한 상태 유지
고립성(Isolation) 동시에 실행돼도 서로 영향 없음
지속성(Durability) 커밋된 내용은 영구 저장됨

 

8. 인덱스(Index)

데이터를 빠르게 찾기 위한 자료 구조 (책의 목차 역할)

항목 실무 팁
WHERE 조건 자주 사용하는 컬럼에 인덱스 생성
정렬(SORT) ORDER BY 대상에도 인덱스 고려
JOIN 조인 대상 컬럼 인덱스 필수
INSERT/UPDATE 인덱스 많을수록 느려짐 → 쓰기 빈번한 테이블은 인덱스 최소화

 

장점

  • 검색 속도 향상
  • 정렬 빠름
  • 유니크 제약 조건으로 데이터 무결성 강화

 

단점

  • 인덱스 생성/유지 비용
  • INSERT/UPDATE 성능 저하

 

9. 이상 현상(Anomaly)

테이블 구조가 비정상적일 때 생기는 문제

유형 설명
삽입 이상 일부 정보 없으면 삽입 안 됨
삭제 이상 하나 지우면 관련 정보도 삭제됨
갱신 이상 일부만 수정돼 정보 모순 발생

 

10. ERD (Entity Relationship Diagram)

시스템에서 사용하는 개체(엔티티)와 그 관계를 도식화한 데이터베이스 설계도

 

주요 개념

  • 엔티티(Entity): 테이블에 대응 (예: User)
  • 속성(Attribute): 테이블의 열
  • 관계(Relationship): 엔티티 간의 연결

 

관계 유형

기준 관계
외래 키 위치 식별자 관계 vs 비식별자 관계
발생 횟수 1:1, 1:N, N:N

 

11. NoSQL (Not Only SQL, 비관계형 데이터베이스)

유연한 구조, 대규모 확장을 위해 등장한 비관계형 데이터베이스

 

등장 배경

  • 스키마 변경 어려움, JOIN 많은 관계형 DB의 한계
  • 트래픽 많고 유연성 필요한 서비스 (SNS, IoT 등)

 

사용 조건

사용 조건 설명
스키마 자주 변경됨 문서 기반(JSON)은 구조 자유로움
수평 확장 필요 서버 수 늘리기 쉬움 (샤딩 지원)
고속 읽기/쓰기 단순 key-value 조회 성능 우수
관계 표현이 불필요 조인이 거의 필요 없는 데이터

 

주요 유형

유형 설명 예시
Document JSON 문서 기반 MongoDB, Firebase
Key-Value 키-값 쌍 Redis, DynamoDB
Column 열 단위 저장 Cassandra
Graph 노드-엣지 기반 Neo4j

 

12. MongoDB 특징 (Document DB)

  • JSON 형태로 저장 (유연한 스키마)
  • Collection 단위로 관리 (테이블 개념)
  • 샤딩(Sharding), 복제(Replication), 트랜잭션 지원
{
  "name": "Anna",
  "age": 25,
  "tags": ["developer", "blogger"]
}

 

13. RDB vs NoSQL 선택 기준 요약

항목 RDB NoSQL
구조 테이블, 고정된 스키마 JSON, 유연한 스키마
트랜잭션 ACID 강력 지원 약함 또는 제한적
JOIN 가능 불가 또는 복잡
확장성 수직 확장 수평 확장 유리
사용 예 금융, ERP SNS, 로그, IoT

 

14. 로컬 데이터베이스

로컬 데이터베이스란 네트워크 없이도 디바이스 내부에 데이터를 저장하고 조회할 수 있는 데이터베이스를 의미합니다. 서버와 통신하지 않아도 사용할 수 있어 오프라인 환경에서도 작동 가능합니다.

 

사용 조건

상황 설명
오프라인 데이터 저장 일정, 메모, 투두리스트, 기사 등
서버와 주기적 동기화 서버 연동 전 임시 저장
빠른 UI 표시용 캐시 검색 결과, 최근 본 항목 등

 

특징

  • 디바이스 내 저장: 스마트폰, 태블릿, PC 등의 내부 저장소에 위치
  • 빠른 접근 속도: 네트워크 지연 없이 즉시 데이터에 접근 가능
  • 오프라인 지원: 인터넷 연결 없이도 데이터 조회/수정 가능
  • 보안 이슈: 디바이스 분실 시 보안 문제 발생 가능 (암호화 필요)
플랫폼 로컬 데이터베이스 예시 설명
Android SQLite, Room (SQLite 기반 ORM) 안드로이드 기본 DB, Room은 SQLite를 추상화해 사용 편리
iOS Core Data, SQLite 애플의 객체 기반 저장소(Core Data), 또는 SQLite
Web IndexedDB, LocalStorage 브라우저에서 클라이언트 데이터 저장 시 사용
Cross-platform Realm, ObjectBox, Hive 플랫폼 독립적이며 사용이 쉬움 (특히 Flutter 등에서 인기)
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함