데이터베이스 - 관계 대수(Relational Algebra)

·2025년 4월 6일
0

💾 데이터 베이스

목록 보기
2/12
post-thumbnail

관계형 데이터베이스(Relational Database)의 핵심 개념인 관계 대수(Relational Algebra)와 그 전제 개념들을 정리합니다.

📌 관계(Relation)의 개념

✅ 구성 요소

  • 스키마(Schema): 테이블 구조 정의.
    예) 도서(도서번호, 도서이름, 출판사, 가격)
  • 인스턴스(Instance): 실제 데이터.
  • 튜플(Tuple): 한 행(Row)
  • 속성(Attribute): 열(Column)
  • 도메인(Domain): 속성이 가질 수 있는 값의 집합.

✅ 특징

  • 각 속성은 단일 값(atomic value).
  • 속성 이름은 중복되지 않음.
  • 튜플은 중복되지 않음, 순서와 무관.
  • 속성도 순서와 무관.

🔑 Key 개념


이미지 출처: https://wiki1.kr/index.php/%EC%88%98%ED%8D%BC%ED%82%A4

1. 슈퍼 키(Super Key)

  • 튜플을 유일하게 식별할 수 있는 속성들의 집합.
  • 유일성은 만족하지만 최소성은 만족하지 않을 수 있음.

2. 후보 키(Candidate Key)

  • 슈퍼 키 중 최소성을 만족하는 키.
  • 여러 개가 있을 수 있음.
  • 두개 이상의 attribute로 이루어진 key를 composite key
  • candidate key는 primary key와 alternate key로 구성

3. 기본 키(Primary Key)

  • 후보 키 중 하나를 선정한 대표 키.
  • relation내 tuple을 식별할 수 있는 고유한 값을 가져야 함
  • NULL 불가, 유일해야 하며 변경 불가.
  • 최대한 적은 수의 attribute를 가질 것
  • primary key는 relation schema를 표현할때 밑줄을 그어 표시

4. 대체 키(Alternate Key)

  • 기본 키로 선택되지 않은 나머지 후보 키.

5. 대리 키(Surrogate Key)

  • artificial key
  • 의미 없는 인공 키. 예: 일련번호
  • 복합 키가 너무 복잡하거나 적절한 키가 없을 때 사용.

6. 외래 키(Foreign Key)

  • 다른 테이블의 기본 키를 참조.
  • 테이블 간 관계를 형성 (참조 무결성 유지).
  • 참조하는 relation과 참조되는 relation이 같을 수 있음 (자신의 PK를 참조)

🧱 무결성 제약조건 (Integrity Constraints)

데이터베이스에서 "무결성 제약조건"이란 데이터의 일관성과 정확성을 보장하기 위한 규칙임.
이 제약조건은 데이터 삽입/수정/삭제 시 잘못된 값이 들어오는 것을 막아주는 장치이기도 함.

1. 도메인 무결성 제약조건 (Domain Integrity Constraint)

항목설명
제약 대상속성 (컬럼 하나하나)
다른 이름도메인 제약 (domain constraint)
NULL 허용 여부✅ 허용
제약조건의 개수속성의 수와 동일
기타튜플 삽입/수정 시 해당 속성 값이 도메인 범위 내에 있어야 함

🧠 예시:
나이 속성은 반드시 20~100 사이의 숫자만 들어올 수 있게 설정할 수 있음.

2. 개체 무결성 제약조건 (Entity Integrity Constraint)

항목설명
제약 대상튜플 (테이블의 행)
다른 이름기본키 제약 (primary key constraint)
해당 키기본키(Primary Key)
NULL 허용 여부❌ 불가
제약조건의 개수1개
기타기본키는 반드시 고유하고 존재해야 함. 삽입 시 중복되거나 NULL이면 삽입 거부됨

🧠 예시:
학번이 기본키인 학생 테이블에서 학번=501이 이미 존재하거나, 학번=NULL이면 삽입 불가.

3. 참조 무결성 제약조건 (Referential Integrity Constraint)

항목설명
제약 대상속성과 튜플
다른 이름외래키 제약 (foreign key constraint)
해당 키외래키(Foreign Key)
NULL 허용 여부✅ 허용 (설정 가능)
제약조건의 개수0~여러 개
기타- 자식 테이블에서 외래키가 부모 테이블의 값과 일치해야 함
- 부모에 없는 값을 참조하려 하면 오류 발생

🧠 예시:
학생 테이블의 학과코드는 학과 테이블의 학과코드를 참조함.
→ 존재하지 않는 학과코드(3001 등)는 삽입 ❌

🔄 참조 무결성 삭제 정책 (부모 튜플 삭제 시 대처 방식)

부모 테이블에서 튜플 삭제 시, 자식 테이블이 참조하고 있으면 문제가 발생할 수 있습니다.
이를 방지하기 위해 삭제 옵션을 설정할 수 있습니다:

명령어의미예시
RESTRICTED부모 릴레이션 삭제 거부학과 테이블의 학과코드=1001 삭제 시 학생 테이블이 참조 중이면 삭제 ❌
CASCADE자식 튜플도 같이 삭제학과 삭제 시 학생도 같이 삭제
DEFAULT자식의 외래키를 기본값으로 변경학과코드가 미리 지정된 값으로 자동 설정
NULL자식의 외래키를 NULL로 변경학과 삭제 시 해당 학생의 학과코드가 NULL (허용 설정 필요)

✅ 무결성 제약조건 핵심 요약 비교표

구분도메인 제약개체 무결성참조 무결성
제약 대상속성튜플속성과 튜플
다른 용어domain constraintprimary key constraintforeign key constraint
키 적용기본키외래키
NULL 허용 여부허용❌ 불가설정 가능
개수속성 수와 동일1개0 ~ 여러 개
삽입/수정 시 유의사항도메인 범위 확인중복/NULL ❌참조 무결성 유지 확인


📘 관계 대수(Relational Algebra)

관계 대수는 절차적 질의 언어로서, 관계(테이블)를 입력으로 받아 또 다른 관계를 출력으로 생성하는 연산 집합.

🔸 관계 대수의 특징

  • 절차적 언어: 어떤 데이터를 어떻게 연산할지 순서를 명확히 지시
  • 입력과 출력 모두 릴레이션(테이블)

🔹 집합 연산의 개념

관계 대수는 집합 이론에 기반한 연산으로 구성됩니다.
예를 들어, 다음과 같은 두 집합이 있다고 할 때:
A = {2, 4}
B = {1, 3, 5}

Cartesian Product (카티션 곱)
• 두 집합 A, B의 가능한 모든 조합
• 릴레이션 간 곱 연산이며, 조인(join)의 기초가 됨.
• A × B 결과: {(2,1), (2,3), (2,5), (4,1), (4,3), (4,5)} → 총 6개

📌 단항 연산자 (Unary Operator)

연산자 기호이름 (한글)설명예시
σ (시그마)선택 (Selection)조건을 만족하는 튜플(행) 만 선택σ가격 ≤ 8000(도서)
π (파이)투영 (Projection)특정 속성(열) 만 추출. 중복 제거π이름, 주소(고객)

📌 이항 연산자 (Binary Operators)

이항 연산자는 두 개의 릴레이션에 대해 연산을 수행하는 관계 대수 연산자임.
크게 집합 기반 연산자조인 연산자로 나눌 수 있음.

🔹 1. 집합 연산자 (Set Operators)

연산자 기호이름 (한글)설명예시
합집합 (Union)두 릴레이션의 튜플을 합침 (중복 제거)도서A ∪ 도서B
교집합 (Intersection)두 릴레이션에 공통으로 존재하는 튜플만 선택도서A ∩ 도서B
차집합 (Difference)첫 릴레이션에만 존재하고 두 번째에는 없는 튜플 선택도서A − 도서B
×카티션 곱 (Cartesian Product)두 릴레이션의 모든 가능한 튜플 조합 생성고객 × 주문

🔹 2. 조인 연산자 (Join Operators)

조인은 두 릴레이션을 공통된 속성이나 조건을 기준으로 결합하는 연산.
조인 연산자는 가장 많이 쓰이며, 여러 가지 유형이 존재함.

조인 종류설명조건/기준특징예시
Theta Join두 릴레이션의 튜플을 일반 조건에 따라 조인비교 연산자 사용 (=, >, <, 등)가장 범용적, 다양한 조건으로 조인 가능고객 ⨝고객.나이 > 주문.수량 주문
Equi JoinTheta Join 중에서 속성 값이 같은 경우만 조인= 연산자만 사용중복 속성이 그대로 남음고객 ⨝고객번호 = 고객번호 주문
Natural JoinEqui Join에서 중복 속성을 제거한 형태공통 속성 자동 매칭 (= 조건 암묵적)중복된 속성 1개만 남기고 자동 결합, 가장 직관적이고 많이 사용고객 ⨝ 주문
Left Outer Join왼쪽 릴레이션 기준 조인, 실패한 튜플도 포함왼쪽 기준, 실패 시 NULL왼쪽 데이터는 모두 유지됨고객 ⟕ 주문
Right Outer Join오른쪽 릴레이션 기준 조인, 실패한 튜플도 포함오른쪽 기준, 실패 시 NULL오른쪽 데이터는 모두 유지됨고객 ⟖ 주문
Full Outer Join양쪽 릴레이션 기준, 실패한 튜플도 모두 포함둘 다 실패 시 NULL왼쪽/오른쪽 모두 유지, 누락 없는 전체 결합고객 ⟗ 주문

🧠 예제 연산 표현

  • 도서 테이블에서 가격이 8000원 이하인 도서이름과 출판사 조회:
    π도서이름, 출판사(σ가격≤8000(도서))

  • 고객과 주문 테이블을 고객번호로 조인하고 이름이 '박지성'인 튜플에서 주문번호, 이름, 판매가격 출력:
    π주문번호, 이름, 판매가격(σ이름='박지성'(고객 ⨝ 주문))


✅ 마무리

관계 대수는 단순한 데이터 필터링을 넘어서 관계형 데이터의 연산 논리를 표현하는 강력한 도구임.


📚 공부 팁

  • Selection/Projection 등 기본 연산은 SQL과 매칭해보며 연습
  • 조인 연산은 Natural Join vs Outer Join 차이를 명확히!
  • 키 개념(Primary, Foreign, Candidate 등)은 ERD 설계에서 필수
profile
안녕하세요! AI & 데이터분석을 전공하는 대학원생(석사 과정)입니다.

0개의 댓글