Study/SQL

관계형 데이터 모델: 릴레이션, 키

찬 주 2023. 10. 21. 20:30

데이터 모델

  • 물리적 혹은 추상적으로 존재하는 현실 세계를 단순화되고 정형화된 형태로 표현하는 하나의 방식 또는 규범이다
  • 실제 데이터가 갖는 특성을 살리면서, 목적에 맞게 관심있는 정보만을 단순화 하여 표현하는 방식이다. 이때, 데이터에 대한 조작이 가능해야 한다.

 

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

  • 테이블 형식을 이용하여 데이터들을 정의하고 설명한 모델이다
  • 실세계의 데이터를 누구나 직관적으로 이해할 수 있는 형태로 기술할 수 있는 간단한 방식이다.
  • 테이블을 릴레이션이라고 부른다.

표 형식으로 나타낸 주소록

 

릴레이션(Relation)

  • 수학적으로 두 개 이상의 집합으로부터 각 집합을 구성하는 원소들의 순서쌍에 대한 집합을 의미한다.
  • 테이블이라고 표현할 수 있다.
이름 = {김짱구, 이철수, 박맹구}
주소 = {서울, 대전, 대구, 부산}

순서쌍 = {김짱구, 서울}, {이철수, 서울}, {박맹구, 부산}

 

릴레이션의 요소

속성(attribute)

  • 릴레이션을 구성하는 각 열(column)의 이름
  • 예를 들어, '주소록 릴레이션'을 구성하는 속성은 이름, 전화번호, 주소, 생일이 있다.
  • 필드(field), 컬럼(column)이라고 표현할 수 있다.

튜플(tuple)

  • 릴레이션의 각 행
  • 예를 들어, '주소록 릴레이션'의 한 튜플은 {홍길동, 010-1234-1234, 서울, 3월 15일}이다.
  • 레코드(record), 행(row)이라고 표현할 수 있다.

도메인(domain)

  • 각 필드에 입력 가능한 값들의 범위이다. 즉, 각 필드가 가질 수 있는 모든 값들의 집합이다.
  • 더 이상 분리되지 않는 원자값(atomic value)이어야 한다.

널(null)

  • 특정 필드에 대한 값을 알지 못하거나 아직 정해지지 않아 입력하지 못한 경우의 필드의 값
  • 0이나 공백 문자와는 다르다.


테이블 스키마(Table Schema)

  • 테이블 정의에 따라 만들어진 데이터 구조
  • 예를 들어, 신입생(학번, 주민등록번호, 이름, 주소, 학과명)으로 나타낼 수 있다.
    • 신입생: 테이블의 이름 / 나머지: 필드의 이름
  • 테이블 스키마에 정의된 필드의 수를 차수(degree)라고 한다.

 

테이블 인스턴트(Table Instance)

  • 테이블 스키마에 현실 세계의 데이터를 레코드로 저장한 형태
  • 스키마는 한번 정의하면 거의 변함이 없지만, 인스턴스는 수시로 바뀔 수 있다.
  • 테이블 인스턴스의 레코드 수를 기수(cardinality)라고 한다.

 

테이블의 특성

  • 중복된 레코드가 존재하지 않는다.
  • 레코드 간의 순서는 의미가 없다.
    • '첫번째 레코드', '두번째 레코드'라는 표현은 의미 없다.
  • 레코드 내에서 필드의 순서는 의미가 없다.
    • '첫번째 필드', '두번째 필드'란 표현은 의미 없다.
  • 모든 필드는 원자값을 가진다.

키(Key)

  • 필드들의 일부로 각 레코드를 유일하게 식별해낼 수 있는 식별자
  • 일반적으로 하나의 필드를 지정하여 키로 지정하나, 여러 개의 필드들로 키를 구성할 수 있다. 이를 복합키라고 한다.
  • 관계형 데이터 모델에서 특정 레코드를 구별하거나 탐색하기 위한 유일한 방법이다.
  • null 값을 가지게 되면 식별 기능을 상실하므로, 기본키는 null이 될 수 없다.

 

키의 종류

수퍼키(super key)

  • 아무런 제약 조건 없이 레코드들을 식별할 수 있는 필드의 집합
  • (주민등록번호), (학번, 주민등록번호), (주민등록번호, 이름), (이름, 주소)...

후보키(condidate key)

  • 최소한의 필드만으로 구성된 키
  • (학번), (주민등록번호), (이름, 주소)...

기본키(primary key)

  • 후보키 중에서 식별자로 정의한 하나의 키
  • 되도록 하나의 필드로 구성된 후보키를 선정하는 것이 유리하다.

외래키(foreign key)

  • 다른 테이블의 기본키를 참조하는 필드 집합
  • 두 테이블 스키마 R1, R2에 대해 R1의 어떤 필드 집합 FK가 다음 두 조건을 만족하면 FK는 R2의 기본키인 PK를 참조하는 R1의 외래키이다.
    • FK의 필드들은 테이블 스키마 R2의 기본키 PK와 동일한 도메인을 가진다.
    • R1의 각 레코드들의 FK 값은 R2의 레코드 중 하나의 PK값과 일치하거나 널이 된다. 널이 된다는 것은 알지 못하거나 아직 결정되지 않았다는 것을 의미한다
    • R1: 참조하는 테이블(referencing table) / R2: 참조되는 테이블(referenced table)