DB | 5. 관계 데이터 모델 (part 1)

ja_efan·2024년 1월 26일
0

DB

목록 보기
7/8
post-thumbnail

01 관계 데이터 모델의 개념


1.기본 용어

일반적으로 관계 데이터 모델에서는 하나의 개체에 관한 데이터를 릴레이션(Relation) 하나에 담아 데이터베이스에 저장한다. 즉, 릴레이션이란 관계형 데이터 모델에서 정보를 구분하여 저장하는 기본 단위이며, 2차원 테이블 형태로 표현한다..

1-1. 속성(attribute)
릴레이션의 열(column)에 해당하며, 각 속성은 서로 다른 이름을 이용해 구별한다.

1-2. 튜플(tuple)
릴레이션의 행(row) 해당하며, 각 튜플은 유일한 개체이다.

1-3. 도메인(domain)
하나의 속성이 가질 수 있는 모든 값의 집합을 해당 속성의 도메인이라고 한다.
관계 데이터 모델에서는 속성 값으로 더는 분해할 수 없는 원자 값만 사용할 수 있다.
가능한 값을 일일이 나열하여 도메인을 정의하기에는 한계가 있기 때문에 일반적으로 속성에 적합한 데이터 타입을 도메인으로 정의하는 경우가 많다.

1-4. 널(null)
릴레이션에 있는 속성의 값을 모르거나, 적합한 값이 없는 경우에 널이라는 특별한 값을 사용할 수 있다. 널은 특정 속성에 해당하는 값이 없음을 나타내므로 숫자 0이나 공백과는 전혀 다른 값이다.

1-5. 차수(degree)
하나의 릴레이션에서 속성의 개수를 해당 릴레이션의 차수라고 한다.

1-6. 카디널리티(cardinality)
하나의 릴레이션에서 튜플의 개수를 해당 릴레이션의 카디널리티라고 한다.

2.릴레이션과 데이터베이스의 구성

2-1. 릴레이션 스키마(relation schema)
릴레이션 스키마는 릴레이션의 이름과 속성들로 정의하는 릴레이션의 논리적 구조이다.
일반적으로 아래와 같은 형태로 표현한다.

릴레이션_이름(속성1, 속성2, ..., 속성 n)

이렇게 표현된 릴레이션 스키마를 보면 릴레이션의 이름이 무엇이고, 어떤 속성들로 구성되어 있는지 전체 구조를 쉽게 파악할 수 있다.

2-2. 릴레이션 인스턴스(relation instance)
릴레이션 인스턴스는 어느 한 시점에 릴레이션에 존재하는 튜플들의 집합이다.
DBMS가 내부적으로 데이터 조작어를 이용하여 릴레이션 인스턴스의 튜플을 검색하거나, 새로운 튜플의 삽입과 기존 튜플의 삭제 및 수정을 진행한다.

2-3. 데이터베이스 스키마와 데이터베이스 인스턴스
일반적으로 데이터베이스는 여러 개의 릴레이션으로 구성된다. 예를 들면, 학교 운영을 위한 데이터베이스는 학생 릴레이션, 교사 릴레이션, 강의 릴레이션 등으로 구성할 수 있다.

데이터베이스의 전체 구조를 의미하는 데이터베이스 스키마는 데이터베이스를 구성하는 릴레이션 스키마의 집합이다. 즉, 특정 데이터베이스 스키마를 설계한다는 것은 해당 데이터베이스에 필요한 릴레이션들의 스키마를 정의하는 것과 같은 의미이다.

데이터베이스 인스턴스는 어느 한 시점에 데이터베이스에 존재하는 데이터 내용의 전체 집합을 의미한다. 즉, 데이터베이스를 구성하는 모든 릴레이션의 인스턴스를 모아놓은 것이다.


3. 릴레이션의 특성

관계 데이터 모델의 릴레이션에는 4가지 중요한 특성이 있다.
이 4가지 특성을 모두 만족하는 테이블만이 릴레이션으로 인정받을 수 있다.

  1. 튜플의 유일성 : 하나의 릴레이션에는 동일한 튜플이 존재할 수 없다. 즉, 튜플의 중복이 불가하다.
    -> 튜플마다 고유한 값을 갖는 속성을 키(Key)로 두어 각 튜플을 구분한다.
  2. 튜플의 무순서 : 하나의 릴레이션에서 튜플의 순서는 무의미하다.
  3. 속성의 무순서 : 하나의 릴레이션에서 속성의 순서는 무의미하다.
  4. 속성의 원자성 : 릴레이션의 속성 값으로 원자 값만 사용할 수 있다.

4. 키의 종류

키(Key) : 릴레이션의 튜플들을 유일하게 구별해주는 역할을 하며, 속성 또는 속성들의 집합으로 구성된다.

키의 특성

  • 유일성(uniqueness) : 키가 갖추어야 하는 기본 특성으로, 하나의 릴레이션에서 키로 지정된 속성 값은 튜플마다 달라야 한다는 특성이다. 즉, 키 값이 같은 튜플은 존재할 수 없다는 것이다.
  • 최소성(minimality) : 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성이다.

4.1 슈퍼키(super key)

유일성을 만족하는 속성 또는 속성 집합.
즉, 튜플을 구분할 수 있는 하나의 속성 또는 속성 집합은 모두 슈퍼키이다.

4.2 후보키(candidate key)

유일성과 최소성을 모두 만족하는 속성 또는 속성 집합.
후보키는 튜플을 유일하게 구별하기 위해 꼭 필요한 최소한의 속성들로만 이루어지므로 슈퍼키 중에서 최소성을 만족하는 것이 후보키가 된다.
후보키가 되기위해 만족해야 하는 유일성과 최소성의 특성은 새로운 튜플이 삽입되거나 기존 튜플의 속성 값이 변경되어도 유지되어야 한다.

4.3 기본키(primary key)

릴레이션에서 튜플을 구별하기 위해 여러 개의 후보키를 모두 사용할 필요는 없다.
따라서 여러 후보키 중에서 기본적으로 사용할 키를 선택하는데, 그 키가 기본키이다.
각 튜플을 유일하게 구분하는 기본키인 만큼, 선택할 때 고려할만한 기준도 있다.

  1. 널 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
  2. 값이 자주 변경되는 속성이 포함된 후보키는 기본키로 부적합하다.
  3. 단순한 후보키를 기본키로 선택한다.

즉, non-nullable하고 값에 변화가 적으며 단순한 후보키를 기본키로 선택하는 것이 데이터베이스 사용에 있어 편리할 것이다.

4.4 대체키(alternate key)

여러 후보키 중 기본키를 제외한 나머지 후보키를 대체키라고 한다.

4.5 외래키(foreign key)

외래키는 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키이다.
다시 말해 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래키이다.
이러한 외래키는 릴레이션 간의 관계를 올바르게 표현하기 위해 필요하다.

이때, 다른 릴레이션의 기본키를 외래키로 가지고 있는 릴레이션을 '참조하는 릴레이션'이라 하고,
기본키를 가진 릴레이션을 '참조되는 릴레이션'이라고 한다.

이러한 릴레이션 간의 관계에서 참조되는 릴레이션과 참조하는 릴레이션이 동일할 수도 있다. 즉, 외래키가 자신이 속한 릴레이션의 기본키를 참조하도록 정의할 수도 있는 것이다.

예를 들어보자면, 쇼핑몰의 '고객 릴레이션'에서 '고객 아이디'를 기본키로 갖고, '고객 아이디'를 참조하는 '추천고객'을 외래키로 갖는다면 참조되는 릴레이션도 '고객 릴레이션'이 되고 참조하는 릴레이션도 '고객 릴레이션'이 된다.

또한 외래키는 기본키를 참조하지만 기본키는 아니므로 널 값을 가질 수 있다.
위의 예에서 '추천고객'필드는 의무사항이 아니므로(기본키가 아니므로) 널 값을 가질 수 있다.

reference. 데이터베이스개론 2판, 김연희, 한빛아카데미

profile
이것저것.

0개의 댓글