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️. 릴레이션의 특징
릴레이션은 다음 규칙을 반드시 만족해야 한다.
- 속성 값은 원자값(Atomic) → 배열, JSON 혼합 ❌ (관계 모델 기준)
- 속성 이름은 서로 달라야 함
- 한 속성의 값은 같은 도메인
- 속성의 순서는 의미 없음
- 중복된 투플 허용 안 함
- 투플의 순서는 의미 없음
📌 이 규칙이 깨지면 → 관계형 모델 위반
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
📌 옵티마이저는 내부적으로 관계대수 기반으로 실행 계획 생성