교재 목차
회원가입·게시판 데이터를 설계하며 SQL, JOIN, 인덱스, 트랜잭션, 정규화와 운영 모델링을 단계적으로 익힙니다.
데이터베이스 학습은 SQL 문법만 외우면 실제 서비스의 테이블을 설계하는 단계에서 막히기 쉽습니다.
이 교재는 회원과 게시글 데이터를 저장하는 작은 문제에서 시작해 조회, 무결성, 성능과 운영 설계로 확장합니다.
같은 요구사항을 SQL 결과와 관계 모델 양쪽에서 확인하므로 쿼리와 설계를 따로 배우지 않습니다.
각 장의 예제는 MySQL 8.4를 기준으로 하지만 기본 키, 외래 키, 트랜잭션과 정규화의 원리는 다른 관계형 데이터베이스에도 적용됩니다.
처음에는 실행 환경에서 연결을 준비하고, 파일 저장과 DBMS의 첫 테이블 → PK·FK의 게시글 → CHECK의 허용 값 순서로 진행합니다. 이후 장은 이렇게 만든 board_lab를 이어 사용합니다.
SQL을 실행하기 전에는 현재 데이터베이스와 앞 절에서 만들어 둔 객체를 확인하고, 결과의 행·오류 이름을 먼저 예상해 적어 보세요. 같은 CREATE TABLE이나 같은 이메일의 INSERT를 다시 실행하면 첫 실행과 다른 오류가 날 수 있습니다. 이때 누적 데이터를 지우기보다 이미 실행한 단계와 실제 테이블을 비교합니다. 오류 재현 예제의 거절은 실패한 실습이 아니라 지킬 규칙을 관찰한 결과입니다.
학습 경로
1단계 · SQL 기초에서는 환경을 확인하고 테이블을 만든 뒤 데이터를 입력·변경·조회합니다.
2단계 · 관계와 성능에서는 JOIN·서브쿼리·인덱스와 실행 계획을 통해 데이터 접근 비용을 읽습니다.
3단계 · 무결성과 모델링에서는 트랜잭션, ERD, 키와 관계 소유권을 설계합니다.
4단계 · 정규화와 물리 설계에서는 중복과 갱신 이상을 줄이고 조회 요구에 맞게 구조를 조정합니다.
5단계 · 선택 심화에서는 코드·계층·이력·수명·상속·JSON처럼 운영에서 자주 만나는 모델을 비교합니다.
관계 연산의 이론은 집합 연산 → 조인·디비전으로 SQL과 연결합니다. 트랜잭션 뒤에는 로그·회복과 최소 권한을 읽습니다. 4NF·5NF와 분산·미디어 저장은 각각 분해 심화, 저장 방식 심화로 선택할 수 있습니다. 관계·권한 보강은 앞 장의 누적 데이터를 덮어쓰지 않는 독립 cs_db_lab fixture를 사용합니다.
분산 트랜잭션과 XA 복구는 로그·권한·COMMIT/ROLLBACK 뒤의 선택 심화입니다. 준비 상태와 최종 결정을 나누고, 새 격리 MySQL 엔진의 프로세스 종료·재시작에서 남는 XA 상태를 확인합니다. 여러 노드의 실제 네트워크 장애를 실행했다고 해석하지 않습니다. 한 DB 안의 효과·완료 기록은 지속 저장과 재시도로 연결합니다.
장별 목차
1장 MySQL 환경과 관계형 기초
2장 데이터 입력·변경과 운영 DDL
3장 조회·필터·정렬
4장 값 가공·집계
5장 관계를 읽는 JOIN
6장 서브쿼리·집합·조건식
7장 인덱스와 실행 계획
8장 무결성과 트랜잭션
9장 개념 모델과 ERD
10장 키와 관계 모델
11장 관계 소유권과 식별
12장 정규화와 물리 설계
13장 공통 코드 설계
14장 계층형 데이터
15장 변경 이력과 시간 모델
16장 데이터 수명과 집계
17장 상속 모델과 동적 속성
18장 JSON과 운영 설계
쿼리를 작성한 뒤에는 결과만 확인하지 말고 어떤 인덱스와 제약 조건이 그 결과를 지탱하는지 설명해 보세요.
완주 기준은 SQL을 빨리 쓰는 것이 아니라 요구사항을 키·관계·트랜잭션과 실행 계획으로 표현하는 능력입니다.