DB 4

정규화 vs 반정규화

✅들어가면서데이터베이스 설계를 하다 보면 반드시 마주치는 고민이 있다.“데이터를 깔끔하게 나눠야 할까?”“아니면 그냥 한 테이블에 몰아넣는 게 빠를까?” 이 고민의 핵심이 바로👉 정규화 vs 반정규화이다.⭐ 정규화(Normalization)란? 정규화는 한마디로데이터 중복을 제거하고 구조를 깔끔하게 만드는 과정이다. 🎯 왜 정규화를 할까?정규화의 목적은 크게 3가지다.데이터 중복 제거데이터 무결성 유지이상 현상(Anomaly) 방지이상 현상이란? : 잘못 설계된 테이블에서 발생하는 문제💡 이상 현상의 예시: 온라인 강의 시스템학생강의강사이윤재Java박강사이윤재Spring박강사 ❌ 문제강사 이름 변경 → 여러 행 수정 필요 (수정 이상)강의 삭제 → 강사 정보도 같이 사라짐 (삭제 이상)강사만 추가 ..

DB 2026.03.20

DB 인덱스(Index)란?

✅들어가면서데이터베이스를 사용하다 보면 이런 상황을 자주 겪다.“데이터가 많아지니까 조회 속도가 너무 느린데?”이 문제를 해결하는 핵심 기술이 바로 인덱스(Index) 이다.⭐ 인덱스(Index)란?인덱스는 한마디로 데이터를 빠르게 찾기 위한 “검색용 구조”이다. 전화번호부를 예로들어서 이해해보자.이름 순으로 정렬되어 있음원하는 사람을 빠르게 찾을 수 있음만약 정렬이 없다면?👉 처음부터 끝까지 다 찾아야 함 (Full Scan) 매우 번거롭고 귀찮은 작업일 것이다. 데이터베이스에서도 똑같다.인덱스 없음 → 전체 탐색인덱스 있음 → 빠르게 위치 찾기 📌 인덱스가 왜 빠를까?인덱스는 단순히 데이터가 아니라 “값 + 데이터 위치”를 함께 저장한다. 그래서조건에 맞는 값을 빠르게 찾고해당 데이터 위치로 바로..

DB 2026.03.20

트랜잭션(Transaction)과 ACID 원칙

✅들어가면서데이터베이스를 공부하다 보면 반드시 등장하는 개념이 있다.“트랜잭션이 뭐야?”“ACID는 왜 그렇게 중요해?”이 글에서는 단순 정의가 아니라왜 필요한지 + 실제 상황에서 어떻게 문제를 막는지까지 이해해보겠다.⭐ 트랜잭션(Transaction)이란?트랜잭션은 쉽게 말해서 “하나의 작업 단위” 이다.여러 개의 SQL을 하나로 묶어서 전부 성공하거나 전부 실패하도록 만드는 것이다.💡예시: 음식 주문 시스템사용자가 음식을 주문한다고 가정해보자.주문 생성결제 처리재고 차감이 3개는 따로 실행되면 안 된다. ❌ But, 문제 발생결제는 됐는데 재고 차감 실패주문은 생성됐는데 결제 실패이런 경우 데이터가 꼬이게 된다.이때 사용하는 것이 바로 트랜잭션 ✅ 트랜잭션 적용 세 작업을 하나로 묶음모두 성공 → ..

DB 2026.03.20

RDB vs NoSQL, 언제 무엇을 써야 할까?

✅들어가면서데이터베이스를 처음 공부하다 보면 한 번쯤 이런 고민을 하게 된다.“RDB가 좋은 거야? 아니면 NoSQL이 더 좋은 거야?”결론부터 말하면 둘 중 하나가 무조건 좋은 것은 아니다.각각의 특징이 다르기 때문에, 상황에 맞게 선택하는 것이 핵심이다.⭐데이터베이스와 SQL 간단 정리먼저 기본 개념부터 짚고 넘어가자.Database(DB): 데이터를 저장하는 공간DBMS: 데이터베이스를 관리하는 시스템SQL: RDB에서 데이터를 조회/조작할 때 사용하는 언어그리고 데이터베이스는 크게 두 가지로 나뉜다.👉 RDB (관계형 DB)👉 NoSQL (비관계형 DB)⭐RDB (Relational Database)란? RDB는 데이터를 테이블 형태 (행/열) 로 저장하는 방식이다.엑셀처럼 구조가 딱 정해져 ..

DB 2026.03.20