1️. 관계 데이터 모델이란?

정의

관계 데이터 모델(Relational Data Model) 이란 데이터를 2차원 테이블(릴레이션) 형태로 표현하고, 데이터 간의 관계를 키(Key)제약조건으로 관리하는 모델이다.

  • 현재 대부분의 상용 DB(MySQL, PostgreSQL, Oracle)의 이론적 기반
  • SQL은 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 정의(DDL), 조작(DML), 제어(DCL), 조회하기 위해 사용하는 표준 데이터베이스 언어이다.

2️. 릴레이션(Relation)의 개념

릴레이션이란?

  • 행(row)과 열(column)로 구성된 테이블
  • 수학적으로는 집합(set) 개념
용어의미
릴레이션테이블
투플(tuple)행(row)
속성(attribute)열(column)
도메인(domain)속성이 가질 수 있는 값의 범위
  • 릴레이션은 “파일”이 아니라 논리적 데이터 구조

3️. 릴레이션 스키마 vs 인스턴스

3-1) 릴레이션 스키마 (Schema)

데이터 구조 정의

도서(도서번호, 도서이름, 출판사, 가격)
  • 컬럼 이름
  • 데이터 타입
  • 제약조건

👉 CREATE TABLE에 해당


3-2) 릴레이션 인스턴스 (Instance)

실제 저장된 데이터

  • 테이블에 들어 있는 행들의 집합
  • 시간이 지나면 계속 변경됨

👉 INSERT / UPDATE / DELETE 대상


4️. 릴레이션의 특징

릴레이션은 다음 규칙을 반드시 만족해야 한다.

  1. 속성 값은 원자값(Atomic) → 배열, JSON 혼합 ❌ (관계 모델 기준)
  2. 속성 이름은 서로 달라야 함
  3. 한 속성의 값은 같은 도메인
  4. 속성의 순서는 의미 없음
  5. 중복된 투플 허용 안 함
  6. 투플의 순서는 의미 없음

📌 이 규칙이 깨지면 → 관계형 모델 위반


5️. 관계(Relationship)의 개념

관계란?

릴레이션과 릴레이션 사이의 연결

  • PK(기본키)
  • FK(외래키)를 통해 표현

예:

customers(customer_id PK)
orders(customer_id FK)

👉 JOIN의 이론적 근거


6️. 키(Key)의 개념 (핵심)

6-1) 슈퍼키(Super Key)

  • 투플을 유일하게 식별할 수 있는 속성 집합
  • 불필요한 컬럼 포함 가능

6-2) 후보키(Candidate Key)

  • 최소한의 속성으로 투플을 식별
  • 슈퍼키 중 “최소성” 만족

6-3) 기본키(Primary Key, PK)

후보키 중 대표로 선택된 키

특징

  • NULL 불가
  • 중복 불가
  • 변하지 않는 값 권장
  • 최대한 단순해야 함
  • 예) id BIGINT AUTO_INCREMENT
  • 대리키(Surrogate Key) 사용이 일반적

6-4) 외래키(Foreign Key, FK)

다른 릴레이션의 기본키를 참조하는 키

  • 데이터 무결성 보장
  • 관계 표현의 핵심
  • JOIN 성능과 직결 → 인덱스 필수

7️. 무결성 제약조건 (Integrity Constraint)

7-1) 도메인 무결성

  • 값은 정해진 범위만 허용
price INT CHECK (price > 0)

7-2) 개체 무결성

  • 기본키는 NULL ❌
  • 기본키는 중복 ❌

7-3) 참조 무결성

  • FK 값은 반드시 부모 PK에 존재
  • 부모 삭제/수정 시 제약 발생
ON DELETE RESTRICT
ON UPDATE CASCADE

📌 실무 사고의 90%가 여기서 발생


8️. 관계 데이터 모델과 SQL의 연결

관계 모델 개념SQL
릴레이션테이블
투플
속성컬럼
관계JOIN
제약조건PK, FK, CHECK

👉 SQL은 관계 모델의 구현 언어


9️. 관계대수(Relational Algebra) 개요

관계형 DB 질의의 이론적 기초

주요 연산

  • Selection (σ) → WHERE
  • Projection (π) → SELECT 컬럼
  • Join (⨝) → JOIN
  • Union / Difference → UNION / EXCEPT

📌 옵티마이저는 내부적으로 관계대수 기반으로 실행 계획 생성