Develop/DataBase

[2주차] 관계 데이터 모델 (DBMS)

SpruceMoon 2026. 3. 14. 22:54

1. 관계 데이터 모델의 개념

1-1. 릴레이션

- 관계 데이터 모델 : 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델
   - 특징 : 하나의 개체에 관한 데이터를 하나의 릴레이션에 저장
- 릴레이션 :: 행과 열로 구성된 2차원 테이블 형태
- 본문 수록 예시:
    1) 도서 릴레이션: (도서번호, 도서이름, 출판사, 가격) 속성으로 구성됨.
    2) 주문 릴레이션: (도서번호, 고객번호, 판매가격, 주문일자) 속성으로 구성됨.
- 관계(Relation) ::
    1) 릴레이션 내의 관계: 개체 내부의 데이터 집합 (투플 간의 관계).
    2) 릴레이션 간의 관계: 공통된 식별 가능 값(예: 도서번호)을 이용한 연결 관계.


- 핵심 구성 요소 및 정의:


    1) 속성(Attribute): 릴레이션의 열(Column), 파일 시스템의 '필드(Field)'
    2) 투플(Tuple): 릴레이션의 행(Row), 파일 시스템의 '레코드(Record)'
    3) 도메인(Domain): 하나의 속성이 가질 수 있는 모든 원자값들의 집합임.
    4) 차수(Degree): 속성의 전체 개수.
    5) 카디널리티(Cardinality): 투플의 전체 개수.
- 널(Null) 값: 아직 알려지지 않았거나 해당 사항이 없는 특수한 값을 처리



1-2. 릴레이션 스키마와 인스턴스

- 릴레이션 스키마 :: 릴레이션의 논리적 구조
- 표기법: 릴레이션 이름(속성1:도메인1, 속성2:도메인2, ...) 형식
- 스키마의 특성:
    1) 릴레이션의 이름과 속성 이름들의 집합으로 구성됨.
    2) 데이터베이스의 내포(Intension)라고 불림.
    3) 시간에 따라 잘 변하지 않는 정적인 성질을 가짐.
- 무결성 제약조건의 기본 토대가 되는 선언적 구조
- 스키마가 변경되면 해당 데이터를 사용하는 응용 프로그램 전체에 영향 미침. (정적)

- 릴레이션 인스턴스 (Relation Instance) :: 어느 한 시점에 저장된 실제 투플들의 집합
- 인스턴스의 특성:
    1) 데이터베이스의 외연(Extension)이라고 불림.
    2) 투플의 삽입, 삭제, 수정으로 인해 수시로 변하는 동적인 성질을 가짐.
    3) 카디널리티(Cardinality)는 인스턴스에 따라 실시간으로 변동됨.
- 사용자가 쿼리를 통해 실제로 보게 되는 데이터

- 릴레이션 = 스키마 + 인스턴스의 결합.

1-3. 릴레이션의 특징 (5대 원칙)

    1) 속성의 원자성: 모든 속성값은 분해 불가능한 단일 값이어야 함.
    2) 투플의 무순서성: 투플 간 순서 무의미 (정렬 상태 무관)
    3) 속성의 동일성: 하나의 속성은 정의된 도메인의 값만 가져야 함.
    4) 투플의 유일성: 동일한 투플이 존재 불가 (기본키 필요)
    5) 속성의 무순서성: 속성 간 배치 순서 중요 X

1-4. 관계 데이터 모델





2. 무결성 제약조건 및 키

2-1. 키(Key)의 개념


- 키 :: 릴레이션에서 투플들을 서로 구별할 수 있게 해주는 속성 또는 속성들의 집합
- 키의 주요 특성:
    1) 유일성(Uniqueness): 하나의 릴레이션 내에서 모든 투플은 서로 다른 키 값을 가져야 함.
    2) 최소성(Minimality): 투플을 구별하는 데 꼭 필요한 최소한의 속성들로만 구성되어야 함.
- 키의 종류
  1) 슈퍼키(Super Key):
    - 유일성의 특성만 만족하는 속성 또는 속성 집합
    - 최소성은 만족하지 않아도 무관함.
  2) 후보키(Candidate Key):
    - 유일성과 최소성을 모두 만족하는 속성 또는 속성들의 최소집합
    - 기본키가 될 수 있는 자격을 갖춘 후보들임.
  3) 기본키(Primary Key):
    - 여러 후보키 중 설계자가 지정한 단 하나의 대표 키
    - 특징: NULL 값 입력 불가, 중복 값 입력 불가(개체 무결성).
  4) 대체키(Alternate Key):
    - 후보키 중 기본키로 선택되지 못한 나머지 키들임.
    - 기본키에 문제가 생길 경우 이를 대신할 수 있는 보조 수단임.
  5) 대리키(Surrogate Key / Artificial Key):
    - 기본키로 사용할 적당한 속성이 없거나 속성이 너무 복합적일 때 사용함.
    - 시스템에 의해 자동으로 생성되는 일련번호 형태가 일반적임.
    - 장점: 단순한 정수 형태를 사용하여 인덱싱 및 조인 속도 향상 가능함.

  6) 외래키
- 정의: 다른 릴레이션의 기본키를 참조하는 속성 또는 속성 집합임.
- 역할: 릴레이션 간의 관계(Relationship)를 맺어주는 도구임.
- 특징 및 제약:
    1) 참조하는 릴레이션(자식)의 외래키는 참조되는 릴레이션(부모)의 기본키와 도메인이 같아야 함.
    2) 참조되는 기본키에 없는 값은 외래키로 입력 불가(참조 무결성).
    3) NULL 값은 가질 수 있음(상황에 따라 다름).
- 자기 참조 외래키(Self-referencing Foreign Key):
    - 동일한 릴레이션 내의 기본키를 참조하는 외래키임.
    - 예) '사원' 릴레이션의 '상사사번' 속성은 '사번' 속성을 참조함.
- 외래키의 상태 변화:
    - 참조되는 기본키 값이 변경되면 이를 참조하는 외래키 값도 영향을 받음.
    - 부모 데이터 삭제 시 자식 데이터의 처리 방식(Cascade 등)을 결정해야 함.
- 외래키 값은 중복될 수 있음(1:N 관계의 일반적 특징)
- 외래키는 하나 이상의 속성으로 구성된 복합키 형태일 수도 있음.
- 기본키가 외래키 역할을 겸할 수도 있음(식별 관계)
- 즉...

    - 슈퍼키: 유일성(O), 최소성(X)
    - 후보키: 유일성(O), 최소성(O)
    - 기본키: 후보키 중 선택된 대표 키, NULL 불가
    - 외래키: 타 테이블 참조, 중복 가능, NULL 가능

2-2. 무결성 제약조건

- 개념: 데이터베이스에 저장된 데이터의 정확성과 일관성을 보장하기 위해 준수해야 하는 규칙임.
- 주요 무결성 제약조건 3종:
    1) 도메인 무결성(Domain Integrity):
        - 속성값은 반드시 정의된 도메인에 속한 원자값이어야 함.
        - 데이터 타입, 범위, 기본값 등을 체크함.
    2) 개체 무결성(Entity Integrity):
        - 기본키(PK)는 NULL 값을 가질 수 없으며, 중복될 수도 없음.
        - 모든 투플이 고유하게 식별되도록 보장함.
    3) 참조 무결성(Referential Integrity):
        - 외래키(FK) 값은 참조되는 릴레이션의 기본키 값과 일치하거나 NULL이어야 함.
        - 존재하지 않는 부모 데이터를 참조하는 '고립된 데이터' 발생을 방지함.

 - 무결성 제약조건 수행 주요 위반 사례 
    1) 개체 무결성 위반: 기본키에 기존 데이터와 같은 값을 넣으려 하거나 빈값(NULL)을 넣는 경우임.
    2) 참조 무결성 위반:
        - 자식 테이블에 부모 테이블에 없는 키 값을 삽입하는 경우임.
        - 부모 테이블의 데이터를 삭제하려는데 자식 테이블이 이를 참조 중인 경우임.
- 조치 방법(참조 옵션):
    - RESTRICT: 위반되는 연산 거부 (기본값인 경우가 많음)
    - CASCADE: 부모 데이터 삭제/수정 시 자식 데이터도 함께 삭제/수정
    - SET NULL: 부모 데이터 삭제 시 자식의 외래키 값을 NULL로 변경
- 데이터 정합성을 유지하기 위해 비즈니스 규칙에 맞는 옵션 선택이 필수적임.
- 무결성 규칙은 데이터베이스 설계의 '안전벨트' 역할을 수행함.

Page 25: 제3. 관계대수

3-1. 관계대수

- 정의: 릴레이션을 처리하기 위한 연산자들의 모임임.
- 특징 1 (절차적 언어):
    - '어떻게(How)' 데이터를 유도하는지 기술함.
    - 원하는 결과를 얻기 위해 수행해야 할 연산의 순서를 명시함.
- 특징 2 (폐쇄 특성 - Closure Property):
    - 연산의 피연산자가 릴레이션이고, 결과 역시 릴레이션임.
    - 이를 통해 연산 결과에 다시 다른 연산을 적용하는 중첩 연산이 가능함.
- 구성 요소:
    - 일반 집합 연산자: 수학적 집합 연산을 릴레이션에 적용함.
    - 순수 관계 연산자: 관계 데이터 모델의 구조적 특성을 이용함.

3-2. 집합 연산자

- 수학의 집합 연산을 릴레이션에 적용한 형태임.
- 연산자 종류: 합집합(∪), 교집합(∩), 차집합(–), 카티션 프로덕트(×).
- 합병 가능(Union Compatibility) 조건:
    - 합집합, 교집합, 차집합을 적용하기 위해 반드시 만족해야 하는 조건임.
    - 조건 1: 두 릴레이션의 차수(속성 수)가 같아야 함.
    - 조건 2: 서로 대응되는 속성의 도메인이 같아야 함.

- 합집합 (Union) : 기호: R ∪ S
- 정의: 릴레이션 R 또는 S에 속하는 모든 투플로 구성된 릴레이션
- 특징:
    1) 결과 릴레이션의 차수는 R 또는 S의 차수와 같음
    2) 카디널리티: |R ∪ S| <= |R| + |S| (중복 투플은 한 번만 기록됨)
    3) 교환법칙 성립: R ∪ S = S ∪ R
    4) 결합법칙 성립: (R ∪ S) ∪ T = R ∪ (S ∪ T)

- 교집합 (Intersection) : R ∩ S
- 정의: 릴레이션 R과 S에 공통으로 속하는 투플로 구성된 릴레이션임.
- 특징:
    1) 결과 릴레이션의 차수는 R 또는 S의 차수와 같음
    2) 카디널리티: |R ∩ S| <= min(|R|, |S|)
    3) 교환법칙 성립: R ∩ S = S ∩ R
    4) 결합법칙 성립: (R ∩ S) ∩ T = R ∩ (S ∩ T)

- 차집합 (Difference) : R – S
- 정의: 릴레이션 R에는 존재하지만 S에는 존재하지 않는 투플들의 집합임.
- 특징:
    1) 결과 릴레이션의 차수는 R 또는 S의 차수와 같음
    2) 카디널리티: ||R – S| <= |R|
    3) 교환법칙 성립 안 함: R – S != S – R
    4) 결합법칙 성립 안 함: (R – S) – T != R – (S – T)

 

- 카티션 프로덕트 (Cartesian Product) : R × S
- 정의: 두 릴레이션의 모든 투플을 가능한 모든 조합으로 연결하는 연산임.
- 특징 1 (차수): 결과 릴레이션의 차수는 두 릴레이션의 차수를 합한 것과 같음.
- 특징 2 (카디널리티): 결과의 투플 수는 두 릴레이션의 투플 수를 곱한 것과 같음.
- 연산 법칙: 교환법칙(R × S = S × R)과 결합법칙이 모두 성립함.
- 용도: 관계가 없는 두 테이블을 강제로 연결하여 모든 경우의 수를 만들 때 사용함.
- 합병 가능 조건이 필요 없는 유일한 집합 연산자임.
- 속성 이름이 중복될 경우 '릴레이션명.속성명' 형식으로 구분하여 표기함.
- 실제 데이터 검색보다는 조인(Join) 연산의 이론적 기초가 됨.


3-3. 셀렉션과 프로젝션


- 셀렉션 (Selection) : σ


- 정의: 릴레이션에서 특정 조건(Predicate)을 만족하는 투플들만 추출함.
- 특징 1 (수평적 연산): 테이블에서 특정 행들을 선택하여 부분 집합을 만듦.
- 특징 2 (단항 연산자): 하나의 릴레이션을 대상으로 연산을 수행함.
- 표기법: σ조건(릴레이션) 형식으로 작성함.
- 조건문 형식: 속성 이름, 비교 연산자(=, <, >, <=, >=, !=), 상수 등을 사용함.
- 복합 조건: ∧(AND), ∨(OR), ¬(NOT) 등의 논리 연산자로 조건을 결합할 수 있음.



- 프로젝션 (Projection) : π


- 정의: 릴레이션에서 지정된 속성들만 추출하여 새로운 릴레이션을 만듦.
- 특징 1 (수직적 연산): 테이블에서 특정 열들을 선택하여 부분 집합을 만듦.
- 특징 2 (단항 연산자): 하나의 릴레이션을 대상으로 연산을 수행함.
- 표기법: π속성리스트(릴레이션) 형식으로 작성함.
- 결과 차수: 속성리스트에 나열된 속성의 개수와 동일하게 결정됨.


 3-4. 조인 및 동등 조인

- 조인 :: ⨝ 
- 조인 연산의 수학적 정의: 카티션 프로덕트(×) 수행 후 특정 조건으로 셀렉션(σ)을 수행하는 복합 수식임.
- 기본 유도 공식: R ⨝조건 S = σ조건(R × S)
- 동등 조인(Equi-join) 수식: 조건 연산자가 오직 '=' 인 경우의 수식임.
    - 수식 구조: R ⨝ R.A=S.B S (R의 A속성과 S의 B속성 값이 같은 튜플 결합)
- 결과 차수(Degree) 공식: Degree(R ⨝ S) = Degree(R) + Degree(S)
- 결과 카디널리티(투플 수) 한계: |R ⨝ S| <= |R| × |S|

- 세타 조인 :: ⨝ θ 
- 세타 조인의 수학적 정의: R ⨝ θ S = σ θ (R × S)
- 조건식(θ) 허용 연산자 집합: { =, !=, <, <=, >, >= }
- 수식 해석: 동등 조인 조건(ID 일치)과 선택 조건(나이>25)이 논리곱(∧, AND)으로 결합된 복합 세타 조건임.
- 포함 관계식: 동등 조인 집합 ⊂ 세타 조인 집합 (동등 조인은 θ가 '='인 세타 조인의 부분집합임).
- 차수 계산식: Degree(R ⨝ θ S) = Degree(R) + Degree(S) (동등 조인과 동일하게 속성 보존됨).
- 수식의 유연성: (조건A ∧ 조건B ∨ 조건C) 형태로 조건을 무한히 확장할 수 있는 범용 수식

- 자연 조인 (Natural Join) :: ⋈ N 
- 자연 조인의 수학적 정의: 동등 조인 수식에서 중복 속성을 제거하는 프로젝션이 결합된 수식임.
- 내부 변환 공식: R ⋈ S ≡ π중복제거속성리스트 (R ⨝ R.공통속성=S.공통속성 S)
- 차수 계산 공식: Degree(R ⋈ S) = Degree(R) + Degree(S) - 중복공통속성수
- 수행 전제 조건식: R ∩ S != ∅ (두 릴레이션 스키마 교집합에 이름이 같은 공통 속성이 존재해야 함).
- 중복 속성 소거: 수식 결과에서 공통 속성은 단 1번만 출현하므로 수식 결과표가 가장 최적화됨.
- 다중 속성 조건식: 공통 속성이 2개 이상일 경우, (R.A=S.A) ∧ (R.B=S.B) 처럼 모든 공통 속성의 논리곱으로 자동 처리됨.
- 실무 모델링에서 가장 빈번하게 요구되는 조인 결과를 가장 짧은 수식으로 만들어냄.

- 외부 조인 (Outer Join) :: ⟕ (Left Outer), ⟖ (Right Outer), ⟗ (Full Outer)
- 외부 조인 기본 원리: 자연 조인 집합과 조인 실패 집합의 합집합(∪) 수식임.
- Left Outer Join 수식: R ⟕ S = (R ⋈ S) ∪ (R의 조인실패튜플 × {NULL 집합})
- Right Outer Join 수식: R ⟖ S = (R ⋈ S) ∪ ({NULL 집합} × S의 조인실패튜플)
- Full Outer Join 수식: R ⟗ S = (R ⟕ S) ∪ (R ⟖ S)
- 결과 카디널리티 한계 공식: 
    - |R ⟕ S| >= |R| (기준인 왼쪽 테이블의 튜플 수보다 항상 크거나 같음).
    - |R ⟖ S| >= |S| (기준인 오른쪽 테이블의 튜플 수보다 항상 크거나 같음).
- 수식 예제: 고객 ⟕ 주문 (수식 결과에 주문내역이 없는 고객은 주문 속성이 모두 NULL로 연산됨).
- 자연 조인 수식(⋈)에서 정보 손실(Information Loss)이 발생하는 수학적 맹점을 보완하는 연산임.

- 세미 조인 (Semi-join) :: ⋉ (Left Semi-join), ⋊ (Right Semi-join).
- 세미 조인의 수학적 정의: 자연 조인 결과에서 한쪽 릴레이션의 속성만 프로젝트하는 수식임.
- Left Semi-join 도출 수식: R ⋉ S = πR의모든속성 (R ⋈ S)
- 차수 계산 공식: Degree(R ⋉ S) = Degree(R) (결과 릴레이션의 속성은 완전히 R과 동일해짐).
- 결과 카디널리티 한계 공식: |R ⋉ S| <= |R| (원본 R의 튜플 수를 절대 초과할 수 없는 수식임).
- 교환법칙 불성립 증명: R ⋉ S != S ⋉ R (좌항의 차수는 R, 우항의 차수는 S가 되므로 집합 구조 자체가 다름).
- 수식 예제: 고객 ⋉ 주문 (결과표에는 고객 정보만 남으며, 주문 속성은 수식에 의해 모두 소거됨).
- 분산 환경에서 데이터베이스 통신 비용 연산식 최적화를 위해 고안된 필터링 수식임.

 

3-5. 디비전 (Division)

- 연산 기호: ÷ 
- 수학적 정의: 릴레이션2의 '모든' 튜플과 관련이 있는 릴레이션1의 튜플만을 추출하는 매우 특수한 형태의 연산임.
- 성립 조건: 피제수가 되는 릴레이션1이 제수가 되는 릴레이션2의 모든 속성을 포함하고 있어야만 연산이 성립함.
- 수식 표현법: '릴레이션1 ÷ 릴레이션2' 형식으로 단순하게 작성됨.
- 카티션 프로덕트(곱셈, ×)의 역연산과 매우 유사한 논리적 구조를 바탕으로 설계됨.

4. 관계대수 사용 예시

4-1. 관계대수 - 조인



- 자연조인 시 조인에 실패한 튜플도 억지로 결과에 포함시키되, 짝을 찾지 못해 비어버린 대응 속성 칸에는 'NULL' 기호를 채워서 반환

 - 관계대수와 SQL 매핑 예시

'Develop > DataBase' 카테고리의 다른 글

[6주차] 뷰, 함수, 프로시져  (1) 2026.04.11
[5주차] SQL 고급 쿼리  (0) 2026.04.04
[4주차] SQL 기초 (JOIN, CREATE, ALTER, DROP)  (0) 2026.03.28
[3주차] SQL 기초 (SELECT문)  (0) 2026.03.21
[1주차] Database와 SQL  (0) 2026.03.07