[ 데이터베이스 ] Key와 관계 연산

THIST·2024년 9월 11일

관계(Relation)과 테이블(Table)

  • 관계형 데이터베이스는 데이터를 테이블 형식으로 저장한다. 각 테이블은 행(Tuple, Record)열(Attribute, Field)로 구성된다.

도메인 (Domain)

정의: 그 속성(Attribute)가 가질 수 있는 값의 범위를 의미한다.

Ex. 학년 속성의 도메인은 1 ~ 4까지의 정수만 올 수 있다.

원자적 속성 값 (Atomic Attribute Value)

  • 속성 값은 원자적이어야 하며, 이는 값을 더 이상 나눌 수 없는 단일한 값을 가진다.

    Ex. 전화번호가 (010) 1234-5678 로 저장될 때, 이를 (지역번호) 번호로 나누지 않고 하나의 전체 값으로 저장해야 한다.

Null값 (Null Value)

  • 'Null'은 값을 '알 수 없음' 또는 '존재하지 않음'을 의미한다.

    Ex. 학생의 전화번호가 아직 등록되지 않은 경우, 해당 필드는 Null값이 될 수 있다.

Relation schema and instance

  • 스키마(Schema): 테이블의 구조를 나타내는 정의이다. R(A1, A2, ..., An) 형식으로 표현되며, 여기서 R은 테이블 이름을, A1, A2, ..., An은 속성들을 나타낸다.

    instructor(ID, name, dept_name, salary)는 instructor라는 테이블의 스키마를 정의한 것이다.

  • Relation Instance: 스키마에 따라 실제로 저장된 데이터(행의 집합)를 말한다. 즉, 현재 테이블에 저장된 값들을 의미한다.
  • Relation은 정렬되어 저장되지 않는다.

키(Key)

키(key)는 데이터베이스에서 조건을 만족하는 특정 튜플을 찾거나 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 Attribute(속성)이다.

슈퍼키(Superkey)

* 테이블 내에서 튜플을 고유하게 식별할 수 있는 하나 이상의 속성들의 집합.

Ex. 학생 테이블에서 ID, ID + 이름, ID + 전화번호 등 여러 조합이 슈퍼키가 될 수 있다.

  • 특징: 중복을 허용하지 않으며, 모든 튜플을 유일하게 식별할 수 있다.

후보키(Candidate Key)

  • 슈퍼키 중에서 최소성을 만족하는 키로, 다른 속성들을 포함하지 않는키.

    ID가 유일하고 중복되지 않는다면 후보키가 될 수 있다.

  • 특징: 중복되지 않으며, 테이블의 모든 튜플을 고유하게 식별할 수 있다. 또한, 여러 개의 후보키가 존재할 수 있다.

기본키(Primary Key)

  • 후보키 중에서 테이터베이스 설계자가 선택한 주요 키로, 테이블에서 각 튜플을 고유하게 식별함.

    학생 테이블에서 ID가 기본키로 설정될 수 있다.

  • 특징: NULL 값을 가질 수 없으며, 값이 거의 변경되지 않는다. 테이블에서 오직 하나의 기본키만 존재할 수 있다. 또한, Primary Key는 무조건 밑줄을 그어준다.

대체키(Alternate Key)

  • 후보키 중에서 기본키로 선택되지 않은 나머지 키
    다른 테이블의 기본키를 참조하는 키

    ID가 기본키로 설정되면, 학번이 대체키가 될 수 있다.

  • 특징: 기본키와 동일한 특성을 가지지만, 기본키로 선택되지 못한 키들이다.

외래키(Foreign Key)

  • 후보키 중에서 기본키로 선택되지 않은 나머지 키,
    다른 테이블의 기본키를 참조하는 키

    수강 테이블에서 학생_ID는 학생 테이블의 기본키 ID를 참조한다.

  • 특징: 참조 무결성(Referential integrity constraint)을 유지하기 위해 사용되며, 외래키가 가리키는 값은 참조하는 테이블의 기본키 값 중 하나여야 한다.

복합키(Composite Key)

* 두 개 이상의 속성을 조합하여 고유성을 보장하는 키

강의 테이블에서 강의코드 + 학기 조합이 복합키가 될 수 있다.

  • 특징: 개별 속성으로는 고유성을 보장할 순 없지만, 이를 조합하여 고유성을 만들 수 있다.

관계 연산(Relational Operations)

  • 관계 연산(Relational Operations)은 관계형 데이터베이스에서 테이블(관계) 간의 데이터를 조작하고 검색하는 데 사용되는 연산

Select (σ, 시그마) - 행 선택 연산

  • 정의: 조건을 만족하는 튜플(행)들을 선택하는 연산.

    Ex. A와B가 같고 D가 5이상인 행만 선택.

Project (π, 파이) - 열 선택 연산

  • 정의: 특정 속성(열)만 선택하여 결과를 반환하는 연산.

    Ex. A,C만 추출.

Union (∪) - 합집합 연산

  • 정의: 두 개의 테이블을 합쳐서 하나의 테이블로 만드는 연산으로, 두 테이블은 같은 속성을 가져야 한다.

    Ex. 테이블 R과 S를 Union시킴.

    1. 두 Table의 Attribute의 개수가 같아야 하며, 의미 또한 같아야 한다. (Union Compatibility)

Difference (-) - 차집합 연산

  • 정의: 한 테이블에 존재하고 다른 테이블에 없는 행들을 반환하는 연산

    테이블 R에서 S를 뺌

Intersection (∩) - 교집합 연산

  • 정의: 두 테이블에 모두 존재하는 행들을 반환하는 연산

    테이블 R과 S에 공통으로 존재하는 행을 반환

Cartesian Product (×) - 카티션 곱 연산

  • 정의: 두 테이블의 모든 가능한 행 조합을 생성하는 연산

    테이블 R과 S를 카티션 곱

Cartesian Product (×) - 카티션 곱 연산 Naming Issue

Cartesian Product 수행 후, 테이블 r과 s 모두 A라는 동일한 속성(열)을 가지고 있을 때, 어떤 테이블의 A인지 구별하기 위해 r.A s.A로 속성을 구분.

Rename (ρ) - 이름 변경 연산

  • 정의: 테이블의 속성 이름을 변경하는 연산.

    테이블 R을 s라는 이름으로 변경하여 반환하는 연산

Join (⋈) - 조인 연산 (Natural Join)

  • 정의: 두 테이블을 특정 조건에 따라 결합하여 새로운 테이블을 만드는 연산.

    테이블 r과 테이블 s의 공통속성 A를 기준으로 묶어 r.A = s.A라면, 각 테이블 튜플끼리 결합하여 새로운 테이블을 만듬.

    연산 식으로 표현하면 다음과 같다.

    1. r × s: 테이블 r과 s의 카티션 곱을 수행하여 모든 가능한 튜플 조합을 생성.
    2. σ_{r.A=s.A}: 생성된 조합 중에서 r.A와 s.A의 값이 같은 튜플만 선택.
    3. Π_{A,B,D,E}: 선택된 튜플에서 필요한 속성(A, B, D, E)만을 남겨 최종 결과 테이블을 생성.

Join (⋈) - 조인 연산 (Theta Join)

연산식은 다음과 같다.
r과 s는 각각 두 개의 테이블이며, θ는 조인 조건을 의미한다.
조인 조건 θ는 두 테이블의 속성 간의 관계를 정의하며, 조건이 맞는 튜플들만 결합한다.

Natural Join과 Theta Join의 차이점

조인 조건의 설정 방식

Natural Join:

  • 조건 자동 설정: 공통 속성(열)들을 기준으로 자동으로 조인 조건이 설정된다.
    즉, 동일한 이름의 속성을 가진 두 테이블의 값이 동일한 경우에만 튜플이 결합.

  • 사용자 정의 조건 불가능: Natural Join에서는 특정 조건을 직접 설정할 수 없다.
    속성 중복 제거: 조인 후 중복된 공통 속성은 하나로 묶인다.

Theta Join:

  • 조건 수동 설정: 사용자가 지정한 임의의 조건(예: =, <, >, != 등)에 따라 두 테이블을 결합한다.

  • 다양한 조건 사용 가능: 두 테이블 간의 속성 비교 조건을 자유롭게 설정할 수 있다.

  • 속성 중복 허용: Theta Join은 단순히 조건에 맞는 튜플을 결합하기 때문에, 결과에서 중복된 속성이 그대로 유지가 된다.

profile
하고 싶은 개발을 지향하는 삶을 추구합니다:D

0개의 댓글