🧩 1. 트랜잭션 & 락 (ACID / 격리 수준 / 동시성 문제)

구분 설명 대표 예시

Atomicity 트랜잭션은 전부 수행되거나 전혀 수행되지 않아야 함 예: 중간 실패 시 전체 롤백
Consistency 트랜잭션 전후에 데이터 무결성 유지 FK/PK 제약조건 유지 등
Isolation 다른 트랜잭션 간 영향 차단 격리 수준 설정으로 구현
Durability COMMIT된 결과는 영구히 유지 시스템 장애 후에도 보존

 

 

 

트랜잭션 격리 수준 (낮 → 높):

  • READ UNCOMMITTED → READ COMMITTED → REPEATABLE READ → SERIALIZABLE

 

 

동시성 이슈:

유형 설명

Dirty Read 다른 트랜잭션의 미확정값을 읽음
Non-repeatable Read 같은 행을 반복 조회 시 값이 바뀜
Phantom Read 조건에 맞는 새로운 행이 중간에 삽입됨

 

 

 

 


 

 

🔒 락 (Lock) 전략

종류 설명

낙관적 락 충돌 적다고 가정, 버전 비교 후 충돌 시 롤백
비관적 락 충돌 가능성 높음, SELECT ... FOR UPDATE 사용

 

 

 

 

🧮 2. 실행계획 (EXPLAIN) & 인덱스 활용

항목 설명

EXPLAIN SQL의 실행 순서, 인덱스 사용 여부 확인
인덱스 검색 속도 개선 도구, B-Tree 기본
사용 시기 자주 검색, 정렬, 조인되는 컬럼
피해야 할 패턴 함수 사용 (WHERE YEAR(date)=2024), 연산 포함된 조건 등

 

 

 

⚙️ 3. DDL vs DML, 제약조건

항목 설명 자동 COMMIT ROLLBACK

CREATE / DROP / ALTER (DDL) 구조 변경 O X
INSERT / UPDATE / DELETE (DML) 데이터 조작 X O
TRUNCATE 모든 행 삭제 (구조 유지) O X

 

 

 

제약조건 키워드 요약

제약 설명

PRIMARY KEY 고유 + NOT NULL
UNIQUE 중복 X, NULL 허용
NOT NULL 반드시 값 필요
FOREIGN KEY 참조 무결성 유지
CHECK 조건 만족 필요

🔹 데이터 모델의 개념

  • 현실 세계의 데이터를 컴퓨터에서 표현한 구조
  • 데이터 모델링 목적: 구조화, 명확한 의사소통, 설계 기반 제공

🔹 데이터 모델링의 3단계

  1. 개념적 모델링: 개체, 속성, 관계 정의 (비즈니스 관점)
  2. 논리적 모델링: 정규화, 식별자 등 설계 구조화
  3. 물리적 모델링: 실제 테이블, 인덱스, 제약 조건 등 구현

🔹 데이터 모델의 구성 요소

  • 개체(Entity): 독립적 존재 (예: 고객)
  • 속성(Attribute): 개체의 특징 (예: 이름, 이메일)
  • 관계(Relationship): 개체 간 연결 (예: 고객은 주문을 한다)

🔹 엔티티(Entity)의 종류

  • 강한 엔티티: 고유 식별자 존재
  • 약한 엔티티: 다른 개체 통해 식별됨
  • 중심/행위/조인 엔티티: 역할에 따른 분류

🔹 속성(Attribute)의 종류

  • 기본 / 복합 / 유도 속성
  • 단일 / 다중값 속성
  • 식별자 속성: 기본키 후보

🔹 관계(Relationship)의 종류

  • 1:1: 하나의 고객 ↔ 하나의 주소
  • 1:N: 한 고객 → 여러 주문
  • M:N: 학생 ↔ 수업 (조인 테이블 필요)

🔹 정규화 단계별 요약

  • 1NF: 원자값 (반복 제거)
  • 2NF: 부분 종속 제거
  • 3NF: 이행 종속 제거
  • BCNF: 결정자 → 후보키

🔹 식별자(Identifier) 정리

  • 기본키(PK): 고유 식별자
  • 후보키(CK): PK 후보
  • 대체키(AK): CK 중 선택되지 않은 것
  • 외래키(FK): 다른 테이블 PK 참조

🔹 모델링 품질 3요소

  • 완전성
  • 중복 배제성
  • 업무 적합성

+ Recent posts