본문으로 건너뛰기
데이터베이스 기초집LESSON 02

관계형 데이터 모델과 데이터 무결성

난이도초급 → 중급
예상 시간35분
선수지식이전 강의

2강. 관계형 데이터 모델과 데이터 무결성

1. 이번 강의에서 해결할 문제

랭킹 점수와 플레이어 이름을 한 행에 반복 저장하면 이름 변경과 집계 결과가 서로 어긋납니다. 관계형 모델의 구성 요소를 이용해 중복과 모순을 줄이고 어떤 상태를 허용할지 선언합니다.

2. 학습 목표

3. 핵심 개념

테이블은 릴레이션의 구현이며 행은 한 사실, 열은 그 사실의 속성을 나타냅니다. 기본 키는 행을 식별하고 외래 키는 다른 릴레이션의 존재를 참조합니다. 자료형, NOT NULL, CHECK는 값의 도메인을 좁힙니다. 무결성은 “정상 상태가 무엇인가”를 DBMS가 판별할 수 있게 만드는 규칙입니다.

4. 단계별 예시

파일 경로: C:\dev\game-ranking-service\database\sql\02-integrity.sql

database/sql/02-integrity.sql
CREATE SCHEMA IF NOT EXISTS ranking;

CREATE TABLE ranking.players (
player_id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
nickname varchar(30) NOT NULL UNIQUE,
rating integer NOT NULL DEFAULT 1000 CHECK (rating >= 0)
);

CREATE TABLE ranking.ranking_snapshots (
snapshot_id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
player_id bigint NOT NULL REFERENCES ranking.players(player_id),
rank_position integer NOT NULL CHECK (rank_position > 0),
rating integer NOT NULL CHECK (rating >= 0),
recorded_at timestamptz NOT NULL DEFAULT now(),
UNIQUE (player_id, recorded_at)
);
PowerShell · 실행
Set-Location C:\dev\game-ranking-service
psql -d game_ranking_dev -v ON_ERROR_STOP=1 -f .\database\sql\02-integrity.sql

5. 동작 원리

PRIMARY KEY는 식별값의 중복과 NULL을 막습니다. FOREIGN KEY는 존재하지 않는 플레이어의 랭킹 기록을 거부합니다. UNIQUE는 같은 시각에 같은 플레이어의 스냅샷이 중복되는 것을 막고 CHECK는 음수 평점과 0등을 거부합니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

관계형 데이터 모델과 데이터 무결성 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“관계형 데이터 모델과 데이터 무결성” 기능을 확장하기 좋은 구조로 설명한 것은 무엇인가요?
  2. 문제 2“관계형 데이터 모델과 데이터 무결성”에서 ‘UI 검증만 신뢰’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

2강. 관계형 데이터 모델과 데이터 무결성 미완료 상태