Coffee Chat Brewing AI Knowledge

eng kor

데이터베이스 2: 릴레이션과 키, 관계 대수

관계형 데이터베이스와 릴레이션

관계형 데이터베이스 (Relational DataBase)

데이터를 테이블 형태로 저장하고 관리하는 DB 시스템.

  • 각 테이블은 데이터 구조와 데이터 저장 방식에 대해 정의된 고정된 스키마를 따름.
  • SQL(Structured Query Language)을 사용하여 데이터의 삽입, 수정, 삭제, 조회 등의 작업을 수행.

릴레이션 (Relation)

관계형 데이터베이스에서 사용하는 기본 구조로, 흔히 테이블(table)이라고 함.

  • 행과 열로 구성되며, 각 행은 하나의 데이터 항목(tuple, record)을, 각 열은 데이터 속성(attribute, field)을 나타냄.
  • 수학적 개념의 관계(relation)에서 유래하며, 집합론에서의 관계와 비슷한 개념.

릴레이션의 구조

erd

  • 릴레이션 스키마 (Relation Schema): 릴레이션의 구조.
  • 릴레이션 인스턴스 (Relation Instance): 속성의 데이터 타입에 맞게 구체적인 데이터 값을 가진 데이터 개체.
  • 튜플 (Tuple): 릴레이션을 구성하는 각각의 행. 속성의 모임.
    • 카디널리티 (Cardinality; 기수, 대응수): 튜플의 수.
  • 속성 (Attribute): DB를 구성하는 가장 작은 논리적 단위. 개체의 특성을 기술.
    • 데이터 항목 또는 데이터 필드에 해당함.
    • 디그리 (Degree; 차수): 속성의 수.
  • 도메인 (Domain): 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합.
    • 시스템이 속성값의 합법 여부를 검사하는 데 사용. (e.g. ‘Gender’의 도메인은 ‘Male’, ‘Female’로 그 외 값은 입력할 수 없다.)


키 (Key)

DB에서 조건에 맞는 튜플을 찾거나 정렬할 때 기준이 되는 속성.

유일성과 최소성

  • 유일성 (Unique): 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있는 성질.
  • 최소성 (Minimality): 튜플을 식별하는 데 필요한 최소한의 속성으로 구성된 것.

키의 종류

  • 후보키 (Candidate Key): 속성 중 튜플을 유일하게 식별하기 위해 사용되는 속성의 집합.
    • 기본키의 후보가 되는 속성.
    • 조건: 유일성과 최소성을 모두 만족함.
  • 기본키 (Primary Key; 주키 (Main Key)): 후보키 중 특별히 선정된 키.
    • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성.
    • 조건: 중복된 값을 가질 수 없음, NULL값을 가질 수 없음.
    • 외래키로 참조될 수 있음.
  • 대체키 (Alternate Key; 보조키): 기본키를 제외한 나머지 후보키.
  • 슈퍼키 (Super Key): 속성의 집합으로 구성된 키.
    • 릴레이션 내 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음.
    • 조건: 유일성은 만족, 최소성은 만족하지 않음.
  • 외래키 (Foreign Key): 다른 릴레이션으 기본키를 참조하는 속성 또는 속성의 집합.
    • 조건: 참조 릴레이션의 기본키에 없는 값은 외래키가 될 수 없음.

무결성 (Integrity)

DB에 저장된 데이터 값과 현실 세계의 실제 값이 일치하는 정확성.

  • 개체 무결성: 기본키를 구성하는 어떤 속성도 NULL이나 중복값을 가질 수 없다는 규정.
  • 참조 무결성: 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정. 외래키의 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 함.

인덱스 (Index)

데이터 레코드(튜플)에 빠르게 접근하기 위해 <키, 포인터> 쌍으로 구성된 데이터 구조.

  • 레코드가 저장된 물리적 구조에 접근하는 방법을 제공. 빠른 액세스 가능.
  • 기본키 인덱스: 기본키를 위한 인덱스. 대부분의 관계형 DBMS에서는 모든 기본키에 대해 기본키 인덱스를 자동 생성함.
  • 트리 기반, 함수 기반, 비트맵, 비트맵 조인 인덱스 등이 있음.


관계 대수와 관계 해석

관계 대수 (Relational Algebra)

관계형 DB에서 원하는 정보와 그것을 어떻게 유도하는지를 기술하는 절차적 언어. 릴레이션 조작을 위한 연산의 집합.

  • 릴레이션 처리를 위한 연산자와 연산 규칙을 제공. 피연산자와 연산 결과가 모두 릴레이션.
  • 해를 구하기 위한 연산의 순서를 명시.

순수 관계 연산자

  • Select: 튜플 중 선택 조건을 만족하는 튜플의 부분집합을 구해 새로운 릴레이션을 만드는 연산.
    • 튜플을 구하는 것이므로 ‘수평 연산자’라고도 함.
    • 기호: $\sigma$
  • Project: 속성 리스트(Attribute list)에 제시된 속성만을 추출해 새로운 릴레이션을 만드는 연산.
    • 속성을 추출하는 것이므로 ‘수직 연산자’라고도 함.
    • 기호: $\pi$
  • Join: 공통 속성을 중심으로 두 릴레이션을 합쳐 새로운 릴레이션을 만드는 연산.
    • Cartesian Product(교차곱) → Select 수행과 결과가 같음.
    • 기호: $\Join$
  • Division: $X\supset Y$인 두 릴레이션 $R(X)$와 $S(Y)$가 있을 때, S의 속성값을 모두 가진 R의 속성에서 S의 속성을 제외한 속성만 반환하는 연산.
    • 기호: $\div$

    erd

일반 집합 연산자

  • Union: 두 릴레이션 내 튜플의 합집함을 구하되, 중복되는 튜플은 제거하는 연산.
    • 합집합의 카디널리티는 두 릴레이션의 카디널리티 합보다 작거나 같다.
    • 기호: $\cup$
  • Intersection: 두 릴레이션 내 튜플의 교집합을 구하는 연산.
    • 교집합의 카디널리티는 두 릴레이션의 카디널리티 중 작은 값보다 크지 않다.
    • 기호: $\cap$
  • Difference: 두 릴레이션 내 튜플의 차집합을 구하는 연산 ($R-S$).
    • 차집합의 카디널리티는 $R$의 카디널리티보다 크지 않다.
    • 기호: $-$
  • Cartesian Product: 두 릴레이션 내 튜플의 순서쌍을 구하는 연산.
    • 교차곱의 디그리는 두 릴레이션의 디그리를 더한 것과 같다.
    • 교차곱의 카디널리티는 두 릴레이션의 카디널리티를 곱한 것과 같다.
    • 기호: $\time$

관계 해석 (Relational Calculus)

관계 데이터의 연산을 표현하는 방법. 관계 데이터 모델을 제안한 E. F. Codd가 수학의 술어 해석(Predicate Caculus)에 기반을 두고 관계 DB를 위해 제안함.

  • 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 가지며, 원하는 정보를 정의할 때는 수식을 사용함.
  • 튜플 관계 해석과 도메인 관계 해석으로 구분됨.