Post

02 관계 데이터 모델

02 관계 데이터 모델

1. 관계 데이터 모델

1. 관계 데이터 모델 (Relational Data Model)

  • 데이터를 2차원 테이블(릴레이션, Relation) 형태로 표현
  • 각 행(Row)은 튜플(Tuple), 각 열(Column)은 속성(Attribute)을 의미
  • 데이터 간 관계를 키(Key)를 통해 연결
  • 수학의 집합 이론(Set Theory)과 관계 대수(Relational Algebra)에 기초

2. 릴레이션

1. 릴레이션

  • 릴레이션 = 데이터가 저장되는 논리적 테이블 구조
  • 각 릴레이션은 속성(Attribute)들의 집합으로 구성됨
  • 릴레이션의 행(Row) 하나는 데이터 한 건(튜플, Tuple)에 해당

2. 용어정리

  • 학생 릴레이션
    1
    2
    3
    4
    5
    
      | 학번      | 이름  | 전공    | 학년 |
      | ------- | --- | ----- | -- |
      | 2024001 | 김유진 | 컴퓨터공학 | 3  |
      | 2024002 | 이현우 | 경영학   | 2  |
      | 2024003 | 박지연 | 컴퓨터공학 | 4  |
    
  • 용어
용어의미예시 설명
릴레이션 (Relation)데이터를 저장하는 테이블 전체위의 Student 테이블 전체가 하나의 릴레이션
튜플 (Tuple)테이블의 한 행(Row), 하나의 레코드(객체)를 의미(2024001, 김유진, 컴퓨터공학, 3)
속성 (Attribute)테이블의 열(Column), 데이터의 항목 또는 특성학번, 이름, 전공, 학년
차수 (Degree)테이블에 포함된 속성(열)의 개수4 (학번, 이름, 전공, 학년)
카디널리티 (Cardinality)테이블에 포함된 튜플(행)의 개수3 (학생이 세 명이므로)
도메인 (Domain)각 속성이 가질 수 있는 값의 범위 또는 타입예: 학년 속성의 도메인 = {1, 2, 3, 4}

3. 릴레이션의 특성

구분내용
중복된 튜플 없음동일한 행이 존재할 수 없음 (집합 이론 기반)
튜플의 순서 무의미행(Row)의 순서는 데이터 의미에 영향 없음
속성의 순서 무의미열(Column)의 순서 또한 의미 없음
속성 값은 원자적하나의 속성에는 더 이상 분해되지 않는 단일 값(Atomic Value)만 저장
모든 튜플은 동일한 속성 구조각 행은 동일한 컬럼 구조를 가짐

4. note

  • 관계 데이터 모델(Relational Model)은 수학의 ‘집합(Set)’ 이론을 기반으로 만들어졌기 때문에, “집합에는 동일한 원소가 2개 이상 존재할 수 없다”는 특성을 그대로 따름.
  • 현실의 데이터베이스(SQL 기반 시스템)는 집합(set)이 아니라 ‘멀티셋(multiset, bag)’ 구조로 구현됨
    • 실용성 : 중복을 완전히 금지하려면 모든 입력마다 DB가 모든 행을 비교해야 함 → 성능 저하. 그래서 DBMS는 기본적으로 중복을 허용하고, 필요한 경우에만 제약 조건(PK 등)으로 막게 설계됨.
    • 현실 데이터의 중복 존재 가능성 : 완전히 동일한 데이터가 업무적으로 의미 있을 때도 있음. 예: “로그 기록”, “결제 내역”, “상품 조회 기록” 등은 동일한 값이 여러 번 등장 가능.

2. 무결성 제약조건

1. 키

구분설명예시
슈퍼키(Super Key)튜플을 유일하게 구분할 수 있는 모든 속성의 조합{학번}, {학번, 이름}
후보키(Candidate Key)튜플을 유일하게 구별할 수 있는 최소 속성의 집합학번, 주민번호
기본키(Primary Key)후보키 중에서 대표로 선택된 키학번
대체키(Alternate Key)기본키로 선택되지 않은 후보키주민번호
외래키(Foreign Key)다른 릴레이션의 기본키를 참조하는 속성수강 테이블의 학번 (→ 학생 테이블 학번 참조)

2. 무결성

제약조건의미예시
개체 무결성(Entity Integrity)기본키는 NULL이면 안 되고, 중복될 수도 없음학생 테이블의 학번은 중복 불가
참조 무결성(Referential Integrity)외래키는 참조하는 테이블의 기본키 값 중 하나이거나, NULL이어야 함수강 테이블의 학번은 반드시 존재하는 학생 학번이어야 함
도메인 무결성(Domain Integrity)속성 값은 정의된 도메인(값의 범위) 내에 있어야 함성별 = ‘M’ 또는 ‘F’
사용자 정의 무결성(User-defined Integrity)사용자가 정의한 비즈니스 규칙나이는 0 이상, 수강 학점은 0.5~4.5 사이

1. 참조 무결성 제약조건의 옵션

옵션의미예시 상황 (학생–수강 관계)
CASCADE부모가 삭제되거나 수정되면, 자식도 같이 삭제 또는 수정됨학생 2024001이 삭제되면, 해당 학번의 수강 내역도 함께 삭제
SET NULL부모가 삭제되거나 수정되면, 자식의 외래키 값을 NULL로 변경학생 2024001이 삭제되면, 수강 테이블의 학번이 NULL로 됨
SET DEFAULT부모가 삭제되거나 수정되면, 자식의 외래키 값을 기본값으로 변경기본 학번(예: ‘9999999’)으로 설정
NO ACTION부모가 삭제/수정되어도 자식 테이블은 변경되지 않음 (기본값)학생을 삭제하려 하면, 참조 중이면 오류 발생
RESTRICTNO ACTION과 유사하지만, 즉시 제약 확인 (일부 DB 차이 있음)학생 삭제 시, 수강 내역이 존재하면 삭제 불가

3. 관계 연산 (Relational Operations)

1. 관계대수

1. 관계대수

  • 관계대수(Relational Algebra)는 관계형 데이터베이스에서 데이터를 어떻게 처리할지를 절차적으로 기술하는 언어
  • “무엇을”이 아니라 “어떻게 구할 것인가”를 명시

2. 언어적 관점

구분설명예시
절차적 언어 (Procedural Language)데이터를 얻기 위한 처리 과정(순서) 을 기술관계대수(Relational Algebra), Relational Calculus 일부
비절차적 언어 (Non-Procedural Language)무엇을 얻고 싶은지 만 명시, 처리 절차는 DBMS가 수행SQL (SELECT ~ WHERE ~), 관계해석(Relational Calculus)

3. 연산 종류

  • 순수 관계 연산
    • 관계 데이터 모델에서만 정의되는, 릴레이션 고유의 연산
    • 주로 튜플(행)과 속성(열)을 기준으로 조작
    • 종류
    연산기호설명SQL 유사 표현
    셀렉션σ조건을 만족하는 튜플(행)만 선택SELECT * FROM 테이블 WHERE 조건;
    프로젝션π특정 속성(열)만 추출SELECT 열1, 열2 FROM 테이블;
    조인두 릴레이션을 공통 속성 기준으로 결합SELECT * FROM A INNER JOIN B ON A.공통컬럼 = B.공통컬럼;
    디비전÷특정 속성의 모든 값을 만족하는 튜플 추출SQL에서는 NOT EXISTS 또는 GROUP BY + HAVING으로 구현 가능
  • 일반 집합 연산
    • 관계형 데이터 모델이 아닌 일반 집합 이론에서 차용된 연산
    • 릴레이션을 집합으로 보고 수행
    • 종류
    연산기호설명SQL 유사 표현
    합집합두 릴레이션의 모든 튜플을 합침 (중복 제거)UNION
    교집합두 릴레이션 모두에 존재하는 튜플INTERSECT
    차집합첫 릴레이션에는 있지만 두 번째에는 없는 튜플EXCEPT / MINUS
    카티션 프로덕트×두 릴레이션의 모든 튜플 조합 생성CROSS JOIN

2. 연산들

1. 종류

  • 셀렉션(Selection, σ)
  • 프로젝션(Projection, π)
  • 집합 연산 (Union, Difference, Intersection, Cartesian Product)
  • 조인(Join)
  • 디비전(Division)

2. Note

  • 2025.10.15. 책으로 대략적인 흐름만 파악하고 통과!
This post is licensed under CC BY 4.0 by the author.