Relation으로 이해하는 관계형 데이터베이스의 구조와 연산

Relation의 속성·튜플·스키마와 관계 대수, 무결성 제약조건을 중심으로 관계형 데이터베이스의 동작 원리를 정리합니다.

2026-08-14 · 최초 발행 2025-08-10

테이블로 보이지만 집합의 규칙을 따르는 구조

Relation은 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 표현하는 기본 단위다. 일반적으로 테이블 형태로 나타나지만, 개념의 뿌리는 E.F. Codd가 1970년에 제안한 관계 데이터 모델에 있다.

이 모델은 수학적 집합론과 관계 대수(Relational Algebra)를 바탕으로 한다. 그래서 Relation은 단순히 행과 열을 담는 화면상의 표가 아니라, 데이터를 일정한 규칙 아래 저장하고 조작하기 위한 논리적 구조다.

속성, 튜플, 그리고 Relation의 크기

Relation의 열은 속성(Attribute)이다. 속성마다 이름이 있으며, 해당 속성이 가질 수 있는 값의 집합인 도메인(Domain)이 정해진다.

행은 튜플(Tuple)이다. 튜플은 각 속성에 대응하는 구체적인 값의 집합으로, 하나의 개체(Entity) 또는 관계(Relationship)의 인스턴스를 나타낸다.

Relation을 설명할 때 함께 쓰는 지표도 있다.

  • 카디널리티(Cardinality)는 Relation에 들어 있는 튜플의 수다. 데이터베이스의 크기와 복잡성을 가늠하는 지표가 된다.
  • 차수(Degree)는 Relation이 가진 속성의 수다. 스키마 구조의 복잡성을 나타낸다.

데이터 구조에 적용되는 규칙

Relation에는 데이터의 논리적 일관성을 지키기 위한 특성이 있다.

값은 더 쪼개지지 않는다

각 속성 값은 원자적이어야 한다. 복합 속성이나 다중값 속성을 하나의 속성에 넣지 않는다는 뜻이다.

예시:
잘못된 설계: 고객(고객ID, 이름, 연락처[전화번호, 이메일])
올바른 설계: 고객(고객ID, 이름, 전화번호, 이메일)

같은 튜플을 허용하지 않는다

모든 튜플은 서로 달라야 하며, 중복된 행은 존재할 수 없다. 이 유일성은 기본키(Primary Key)를 통해 보장된다.

튜플과 속성의 물리적 배치 순서도 논리적 의미를 갖지 않는다. Relation은 저장 위치나 표시 순서가 아니라 데이터 자체를 기준으로 다룬다.

정규화(Normalization)는 데이터 중복을 줄이고 일관성을 유지하기 위한 과정이다. 1NF, 2NF, 3NF, BCNF, 4NF, 5NF 등의 정규형을 통해 구현한다.

스키마는 구조이고 인스턴스는 현재의 데이터다

Relation Schema는 Relation의 구조를 정의한다. 속성의 집합과 각 속성의 도메인 정보를 포함하며, R(A1, A2, ..., An)처럼 표현한다.

예시: 학생(학번, 이름, 학과, 학년, 평점)

Relation Instance는 특정 시점에 Relation에 저장된 튜플의 집합이다. 시간이 흐르면 인스턴스는 바뀔 수 있지만, 스키마는 유지된 상태에서 데이터만 변경된다.

SQL을 뒷받침하는 관계 대수

관계 대수는 Relation을 처리하는 연산 집합이며 SQL의 이론적 기반이다. 조건에 맞는 데이터를 고르고, 필요한 속성만 남기고, 여러 Relation을 결합하는 작업이 이 연산으로 설명된다.

선택으로 조건에 맞는 튜플을 고른다

선택(Selection, σ)은 조건을 만족하는 튜플을 가져오는 연산이다. σ조건(Relation)으로 표현하며 SQL의 WHERE 절에 해당한다.

예시: σ학년>2(학생) → 3학년 이상의 학생들만 선택

투영은 필요한 속성만 남긴다

투영(Projection, π)은 지정한 속성만 추출한다. π속성리스트(Relation)으로 표현하며 SQL의 SELECT 절과 대응한다.

예시: π이름,학과(학생) → 학생들의 이름과 학과 정보만 추출

집합 연산으로 Relation을 다룬다

합집합(Union, ∪)은 두 Relation의 튜플을 합친다. 이때 두 Relation의 스키마는 같아야 하며 SQL의 UNION에 해당한다.

예시: 학부생 ∪ 대학원생 → 모든 학생 목록

차집합(Difference, -)은 첫 번째 Relation에서 두 번째 Relation에 포함된 튜플을 제외한다. SQL의 EXCEPT와 같은 역할을 한다.

예시: 수강신청 - 수강취소 → 최종 수강생 목록

교차곱(Cartesian Product, ×)은 두 Relation의 가능한 모든 튜플 조합을 만든다. SQL의 CROSS JOIN에 해당한다.

예시: 학생 × 과목 → 모든 학생과 과목의 조합

조인은 관련 데이터를 하나로 연결한다

조인(Join, ⋈)은 관계가 있는 튜플을 결합하는 연산이다. 내부 조인, 외부 조인, 세미 조인 등 여러 형태가 있으며 SQL의 JOIN 절로 구현한다.

조인조인학생 테이블결과 테이블수강 테이블

무결성 제약조건이 막는 데이터 오류

개체 무결성(Entity Integrity)은 기본키가 NULL 값이나 중복값을 가질 수 없도록 한다. 모든 튜플을 식별할 수 있어야 하기 때문이다.

참조 무결성(Referential Integrity)은 외래키가 참조 대상 Relation의 기본키 값 중 하나이거나 NULL이 되도록 제한한다. 이를 통해 Relation 사이의 연결을 일관되게 유지한다.

도메인 무결성(Domain Integrity)은 속성값이 정의된 도메인 안에 있도록 보장한다. 데이터 타입, 형식, 제약조건을 준수하는지가 여기에 포함된다.

RDBMS에서 Relation을 테이블로 구현하는 방식

RDBMS에서는 Relation을 테이블로 구현하고, 기본키와 외래키, CHECK 제약조건으로 구조와 무결성 규칙을 반영한다.

CREATE TABLE 학생 (
    학번 CHAR(10) PRIMARY KEY,
    이름 VARCHAR(50) NOT NULL,
    학과 VARCHAR(30) NOT NULL,
    학년 INT CHECK (학년 BETWEEN 1 AND 4),
    평점 DECIMAL(3,2) CHECK (평점 BETWEEN 0.0 AND 4.5)
);

CREATE TABLE 수강 (
    수강번호 INT PRIMARY KEY,
    학번 CHAR(10) REFERENCES 학생(학번),
    과목코드 CHAR(7) REFERENCES 과목(과목코드),
    학기 VARCHAR(10) NOT NULL,
    성적 CHAR(2)
);

학생, 수강, 과목 Relation은 외래키를 통해 연결될 수 있다.

appliesincludesStudentCHAR(10)StudentIDPKVARCHAR(50)NameVARCHAR(30)DepartmentINTYearDECIMALGPAEnrollmentINTEnrollmentIDPKCHAR(10)StudentIDFKCHAR(7)CourseCodeFKVARCHAR(10)SemesterCHAR(2)GradeCourseCHAR(7)CourseCodePKVARCHAR(50)CourseNameINTCreditsVARCHAR(30)Professor

Relation을 다룰 때 성능에 영향을 주는 지점

인덱싱(Indexing)은 빠른 데이터 검색을 위한 보조 데이터 구조다. B-Tree, Hash 등의 인덱스 구조를 활용하며, 검색 조건에 자주 쓰이는 속성에 적용한다.

쿼리 최적화(Query Optimization)는 쿼리 실행 계획을 개선하는 과정이다. 관계 대수 연산의 순서를 재배치하고 통계 정보를 활용한 비용 기반 최적화를 수행한다.

대용량 Relation은 파티셔닝(Partitioning)으로 논리적 또는 물리적으로 분할할 수 있다. 수평 파티셔닝(Sharding)과 수직 파티셔닝은 검색 성능을 높이고 관리 부담을 줄이는 데 활용된다.

관계형 모델이 확장되는 방향

NoSQL은 관계형 데이터베이스와 병행해 활용되는 비관계형 데이터베이스 접근법이다. 문서형, 키-값, 칼럼 기반, 그래프 등 다양한 데이터 모델은 관계형 모델이 다루기 어려운 요구를 보완한다.

NewSQL은 관계형 모델의 장점과 NoSQL의 확장성을 결합한다. 분산 환경에서도 ACID 트랜잭션을 보장하면서 수평 확장성과 고가용성을 제공한다.

멀티 모델 데이터베이스는 하나의 시스템에서 Relation과 그래프, 문서 같은 여러 데이터 모델을 함께 지원한다. 데이터 특성에 맞는 접근 방식을 통합할 수 있다는 점이 특징이다.

Relation은 구조화된 저장, 데이터 중복 최소화, 일관성 유지, 강력한 쿼리 기능을 위한 기반이다. 데이터 모델이 다양해진 환경에서도 이 구조와 연산 원리는 관계형 데이터를 설계하고 다루는 핵심으로 남아 있다.

관계형 데이터베이스Relation관계 대수정규화데이터베이스 설계