데이터베이스 기초집LESSON 03
데이터베이스·스키마·테이블의 계층
난이도초급 → 중급
예상 시간35분
선수지식이전 강의
3강. 데이터베이스·스키마·테이블의 계층
1. 이번 강의에서 해결할 문제
모든 객체를 public 스키마에 만들면 서비스 데이터, 감사 데이터, 확장 기능의 소유 관계가 흐려집니다. PostgreSQL의 계층과 연결 경계를 이해해 랭킹 서비스의 객체 위치를 정합니다.
2. 학습 목표
3. 핵심 개념
하나의 PostgreSQL 서버 인스턴스는 여러 데이터베이스를 가질 수 있고 연결은 한 데이터베이스를 대상으로 합니다. 데이터베이스 안의 스키마는 테이블·뷰·함수의 네임스페이스입니다. 서로 강하게 트랜잭션으로 묶이는 랭킹 데이터는 한 데이터베이스에 두고 ranking, audit처럼 책임별 스키마로 나눌 수 있습니다.
4. 단계별 예시
파일 경로: C:\dev\game-ranking-service\database\sql\03-namespaces.sql
database/sql/03-namespaces.sql
CREATE SCHEMA IF NOT EXISTS ranking;
CREATE SCHEMA IF NOT EXISTS audit;
CREATE TABLE IF NOT EXISTS audit.schema_events (
event_id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
event_name text NOT NULL,
created_at timestamptz NOT NULL DEFAULT now()
);
SELECT current_database();
SELECT current_schemas(true);
SELECT schemaname, tablename
FROM pg_tables
WHERE schemaname IN ('ranking', 'audit')
ORDER BY schemaname, tablename;
PowerShell · 데이터베이스 생성과 확인
createdb -U postgres game_ranking_dev
psql -U postgres -d game_ranking_dev -v ON_ERROR_STOP=1 -f .\database\sql\03-namespaces.sql
psql -U postgres -d game_ranking_dev -c "\dn"
5. 동작 원리
ranking.players처럼 스키마를 명시하면 세션의 search_path가 달라도 같은 객체를 가리킵니다. 데이터베이스 경계는 연결과 트랜잭션 경계이므로 단순 분류를 위해 데이터베이스를 과도하게 나누면 JOIN과 원자적 변경이 어려워집니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2데이터베이스·스키마·테이블의 계층 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
3강. 데이터베이스·스키마·테이블의 계층 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.