관계

반응형
SMALL

관계대수

  • 관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는 가를 기술하는 절차적인 언어이다.
  • 관계대수는 릴레이션을 처리하기 위해 연산자와 연산 규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션이다.
  • 관계대수는 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다.

순수 관계 연산자

  • select(σ,시그마)
    • 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산이다.
    • 릴레이션의 행에 해당하는 튜플(tuple)을 구하는 것이므로 수평 연산이라고도 한다.
  • project(π,파이)
    • 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산이다.
    • 릴레이션의 열에 해당하는 속성을 추출하는 것이므로 수직 연산자라고도 한다.
  • join(⨝)
    • 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산이다.
    • join의 결과는 cartesian product(교차곱)을 수행한 다음 select를 수행한 것과 같다.
  • division(÷)
    • xↃy인 두 개의 릴레이션 R(x)와 S(y)가 있을 때, R의 속성이 S의 속성 값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산이다.

일반 집합 연산자

  • 합집합(UNION)
    • 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거되는 연산이다.
    • 합집합의 카디널리티는 두 릴레이션 카디널리티의 합보다 크지 않다.
    • 기호: U
  • 교차곱(INTERSECTION)
    • 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산이다.
    • 교집합의 카디널리티는 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티보다 크지 않다.
    • 기호:⋂
  • 차집합(DIFFERENCE)
    • 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산이다.
    • 차집합의 카디널리티는 릴레이션 R의 카디널리티보다 크지 않다.
    • 기호:-
  • 교차곱(CARTESIAN PRODUCT)
    • 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산이다.
    • 교차곱의 디그리(DEGREE)는 두 릴레이션의 디그리를 더한 것과 같고, 카디널리티(CARDINALITY)는 두 릴레이션의 카디널리티를 곱한 것과 같다.
    • 기호:X

관계해석

  • 관계해석(Relational Calculus)은 관계 데이터의 연산을 표현하는 방법이다.
  • 관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학의 Predicate Calculus(술어해석)에 기반을 두고 관계 데이터베이스를 위해 제안했다.
  • 관계해석은 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지닌다.
  • 원하는 정보를 정의할 떄는 계싼 수식을 사용한다.

이상

  • 이상이란 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 않게 발생하는 곤란한 현상을 의미한다.
    • 삽입 이상(insertion anomaly): 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
    • 삭제 이상(deletion anomaly): 테이블에서 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발생하는 현상
    • 갱신 이상(update anomaly): 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상

함수적 종속

  • 함수적 종속(Functional Dependency)
    • 어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 하자, 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고, X→Y로 표기한다.
  • 완전 함수적 종속(Full Functional Dependency)
    • 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 속성 집합 X의 어떠한 진 부분 집합 Z(즉, Z Ϲ X) 에도 함수적 종속이 아닐 때 속성 Y는 속성 집합 X에 완전 함수적 종속이라고 한다.
  • 부분 함수적 종속(Partial Functional Dependency)
    • 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 속성 집합 X의 임의의 진 부분 집합에 대해 함수적 종속일 때, 속성 Y는 속성 집합 X에 부분 함수적 종속이라고 한다.
  • 이행적 함수적 종속(Transitive Functional Dependency)
    • X→Y이고 Y→Z일 때 X→Z를 만족하는 관계를 의미한다.

1. 관계대수(Relational Algebra) 예시

1.1. 순수 관계 연산자 예시

  • Select (σ, 시그마):
    • 예시: σ 학년 = 2 (학생)
    • 설명: 학생 테이블에서 학년이 2인 학생만 선택합니다.
    학번 이름 학년 신장 이메일 학과코드
    19001 김예소 2 170 yeso@ex.com CD
    19012 이향기 2 180 hyanggi@ex.com ID
  • Project (π, 파이):
    • 예시: π 이름, 학과코드 (학생)
    • 설명: 학생 테이블에서 이름과 학과코드 속성만 추출합니다.
    이름 학과코드
    김예소 CD
    고강민 CD
    이향기 ID
    김동준 ED
  • Join (⨝):
    • 예시: 학생 ⨝ 학과
    • 설명: 학생 테이블과 학과 테이블을 학과코드로 조인합니다.
    학번 이름 학년 신장 이메일 학과코드 학과명
    19001 김예소 2 170 yeso@ex.com CD 컴퓨터디자인학과
    20002 고강민 1 169 kangmin@ex.com CD 컴퓨터디자인학과
    19012 이향기 2 180 hyanggi@ex.com ID 산업디자인학과
    17032 김동준 4 174 dongjun@ex.com ED 전자공학과
  • Division (÷):
    • 예시: R ÷ S
    • 설명: R 릴레이션에서 S 릴레이션의 속성 값을 가진 튜플에서 S 속성을 제외한 결과를 구합니다.
    • (예시는 이론적 설명이므로 간단하게 넘어갈 수 있습니다.)

1.2. 일반 집합 연산자 예시

  • 합집합 (UNION):
    • 예시: 학생 ∪ 교수
    • 설명: 학생과 교수 테이블에 있는 튜플을 합친 후 중복을 제거합니다.
  • 교집합 (INTERSECTION):
    • 예시: 학생 ⋂ 수강생
    • 설명: 학생과 수강생 테이블에 공통적으로 존재하는 튜플을 구합니다.
  • 차집합 (DIFFERENCE):
    • 예시: 학생 - 졸업생
    • 설명: 학생 테이블에서 졸업생 테이블에 없는 학생만을 구합니다.
  • 교차곱 (CARTESIAN PRODUCT):
    • 예시: 학생 X 학과
    • 설명: 학생과 학과 테이블에 있는 모든 튜플의 조합을 구합니다.

2. 관계해석(Relational Calculus) 예시

  • 관계해석은 비절차적 언어로, 원하는 정보를 "어떤 조건을 만족하는 튜플을 반환하라"는 방식으로 기술합니다.
    • 예시: {t | t ∈ 학생 ∧ t.학년 = 2}
    • 설명: 학생 테이블에서 학년이 2인 튜플을 반환하라는 의미입니다.

3. 이상(Anomalies) 예시

  • 삽입 이상 (Insertion Anomaly):
    • 예시: 학생을 삽입하려고 하지만 학과 정보가 아직 등록되지 않아 학생 정보를 삽입할 수 없습니다.
    • 설명: 테이블 구조가 잘못 설계되면, 일부 데이터를 삽입하기 위해 불필요한 다른 데이터도 함께 입력해야 하는 경우가 발생합니다.
  • 삭제 이상 (Deletion Anomaly):
    • 예시: 특정 학생이 테이블에서 삭제될 때 해당 학생과 연결된 학과 정보도 함께 삭제되는 경우.
    • 설명: 데이터 삭제 시 원치 않는 연관된 데이터가 함께 삭제되어 정보 손실이 발생하는 문제.
  • 갱신 이상 (Update Anomaly):
    • 예시: 특정 학과의 학과명이 변경될 때 여러 튜플에 중복된 학과명을 모두 수정해야 하는 경우.
    • 설명: 테이블에 중복된 데이터가 존재할 때, 갱신 시 모든 중복된 항목을 수정하지 않으면 데이터 불일치가 발생합니다.

4. 함수적 종속(Functional Dependency) 예시

  • 함수적 종속 (X → Y):
    • 예시: 학번 → 이름
    • 설명: 학생 테이블에서 학번이 같으면 이름도 동일해야 한다는 함수적 종속 관계.
  • 완전 함수적 종속 (Full Functional Dependency):
    • 예시: (학번, 과목코드) → 성적
    • 설명: 학생의 학번과 과목코드를 모두 알아야 성적을 알 수 있는 경우. 성적은 (학번, 과목코드)에 완전 함수적 종속입니다.
  • 부분 함수적 종속 (Partial Functional Dependency):
    • 예시: (학번, 과목코드) → 이름
    • 설명: 학번만으로도 이름을 알 수 있는데, 과목코드까지 포함한 부분 집합이 존재하는 경우. 이는 부분 함수적 종속입니다.
  • 이행적 함수적 종속 (Transitive Functional Dependency):
    • 예시: 학번 → 학과코드 → 학과명
    • 설명: 학번이 학과코드를 결정하고, 학과코드가 학과명을 결정하는 경우, 학번이 학과명을 결정하는 이행적 함수적 종속 관계입니다.
반응형
LIST

'정보처리기사 > 데이터 입출력 구현' 카테고리의 다른 글

시스템 카탈로그 및 복구 방법  (0) 2024.10.14
정규화과정  (1) 2024.10.13
데이터베이스 키(Key)와 제약조건  (1) 2024.10.13
릴레이션  (1) 2024.10.13
데이터 모델  (1) 2024.10.13