[데이터베이스] 2.1 관계형 데이터 모델

2 분 소요

‘데이터베이스의 이해’를 읽고 정리한 글입니다.

릴레이션의 개념

관계형 데이터 모델 (relational data model)

  • 테이블을 이용하여 데이터들을 정의하고 설명한 모델
이 름 전화번호 주소 생일
홍길동 010-1234-5678 NULL NULL
이건우 010-2132-2345 서울 8월 23일
이몽룡 010-3245-4368 부산 12월 14일


✓ 관계형 데이터 모델에서는 테이블을 릴레이션이라고 한다.

  • 속성 (attribute) : 릴레이션을 구성하는 각 열
  • 튜플 (tuple) : 릴레이션을 구성하는 각 행

✓ 최근에는 릴레이션이라는 용어 대신에 단순히 테이블이라는 용어를 사용한다.

  • 필드 (field), 컬럼 (column) : 테이블을 구성하는 각 열
  • 레코드 (record), 행 (row) : 테이블을 구성하는 각 행

✓ 각 필드에는 입력 가능한 값들의 범위를 미리 정해놓아야 한다.
➜ 도메인(domain)
한 필드가 가질 수 있는 모든 값들의 집합

도메인의 각 값은 더 이상 분리할 수 없는 원자값(atomic value)이어야 한다.

✓ 널(null)

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

테이블 스키마와 테이블 인스턴스

테이블 스키마 (table schema)

  • 테이블의 정의에 따라 만들어진 데이터 구조
  • 데이터 구조는 테이블명과 그 내부에 정의된 필드들로 나타낸다.
신인생(학번, 주민등록번호, 이름, 주소, 학과명)
  • 신입생은 테이블명이며 5개의 필드를 가지고 있다.

테이블 인스턴스 (table instance)

  • 테이블 스키마에 현실 세계의 데이터를 레코드로 저장항 형태
  • 레코드들의 집합
이 름 전화번호 주소 생일
홍길동 010-1234-5678 NULL NULL
이건우 010-2132-2345 서울 8월 23일
이몽룡 010-3245-4368 부산 12월 14일


✓ 차수 (degree)

  • 필드의 수 (열)
    단항 테이블 - 차수가 1
    이항 테이블 - 차수가 2
    n항 테이블 - 차수가 n

✓기수 (cardinality)

  • 레코드의 수 (행)

테이블의 특성

  • 중복된 레코드가 존재하지 않는다.
  • 레코드 간의 순서는 의미가 없다.
  • 레코드 내에서 필드의 순서는 의미가 없다.
  • 모든 필드는 원자값을 갖는다.

키는 관계형 데이터 모델에서 매우 중요한 역할을 한다.
키가 관계형 데이터 모델에서 특정 레코드를 구별하거나 탐색하기 위한 유일한 방법을 제공하기 때문이다.

학생 (학번, 주민등록번호, 이름, 주소, 학년, 학과명)


✓ 복합키 (composite key)

  • 두 개 이상의 필드로 구성된 키

슈퍼키 (super key)

  • 아무런 제약 조건 없이 레코드들을 식별할 수 있는 필드의 집합
  • 모든 테이블은 적어도 하나의 슈퍼키를 갖고 있다.
  • 슈퍼키에는 레코드들을 구별하는데 필요 없는 필드도 포함될 수 있다.
    예) (주민등록번호), (학번, 주민등록번호), (주민등록번호, 이름) 등..
    모든 필드의 집합인 (학번, 주민등록번호, 이름, 주소, 학년, 학과번호)도 키가 된다.


후보키 (candidate key)

  • 최소한의 필드만으로 구성된 키
    (학번, 주민등록번호)에서 (주민등록번호)를 제외하더라도 (학번)만으로 키를 구성할 수 있다.
  • 레코드들을 식별할 수 있어야 하며 이 중 어떠한 필드라도 제외하면 키가 될 수 없는 집합
    (이름, 주소)의 경우 이 중에서 어느 하나의 필드를 빼면 식별자의 역할을 할 수 없다.
    이름, 주소 각각 중복이 될 가능성이 있기 때문이다.
    따라서, (이름, 주소)는 후보키가 된다.


기본키 (primary key)

  • 후보키 중에서 식별자로 정의할 수 있는 키
  • 하나의 필드 또는 최소의 필드를 갖는 후보키를 기본키로 정하는 것이 좋다.

    후보키 중에서 기본키를 결정하는 특별한 규칙은 없다.
    이는 전적으로 테이블을 설계하는 설계자의 몫이다.

✓ 키가 널이 될 수 있나?

기본키는 식별자의 역할을 한다.
만약 기본키로 정의된 필드가 널을 갖게 되면 이러한 식별 기능을 상실하게 된다.
따라서 기본키는 널이 될 수 없다.

외래키

슈퍼키, 후보키, 기본키들은 하나의 테이블 내에서 정의된다.
그러나 외래키는 두 테이블 간의 관계로부터 정의되는 개념이다.

학생 (학번, 주민등록번호, 이름, 주소, 학년, 학과번호)
학과 (학과번호, 학과명, 과사무실)
밑줄은 기본키를 구성하는 필드를 나타낸다.

여기서 학생 테이블의 학과번호 필드에 주목하자.
학생 테이블의 학과번호에 나타나는 값은 학과 테이블의 학과번호에 존재해야 그 의미를 갖는다.
여기서 학생 테이블의 학과번호 필드는 학생 테이블과 학과 테이블을 연결시켜주는 역할을 한다.

➜ 이러한 필드를 외래키 (foreign key)라고 한다.

  • 외래키를 갖고 있는 테이블 = 참조하는 테이블 (referencing table)
  • 외래키가 참조하는 기본키를 갖는 테이블 = 참조되는 테이블 (referenced table)

태그:

카테고리:

업데이트:

댓글남기기