관계 데이터 모델(Relational data model)
개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델이다.
하나의 개체에 대한 데이터를 하나의 릴레이션(테이블)에 저장한다.
바탕이 되는 데이터 구조로서 간단한 릴레이션(테이블)을 사용한다. 이는 곧 중첩된 복잡한 구조가 없다는 뜻이고 다른 데이터 모델에 비해 이해가 쉽다.
다른 데이터 모델에 비해 이론적인 토대가 잘 만들어져 있고, 실제 적용한 사례가 매우 풍부하여 안정적이고 좋은 성능을 보인다.
용어
릴레이션(relation)
행과 열로 구성된 테이블
행(row)
튜플(tuple)
열(column)
속성(attribute, 애트리뷰트)
도메인(domain)
하나의 속성이 가질 수 있는 모든 값의 집합으로, 속성 값을 입력 및 수정할 때 적합성의 판단 기준이 된다.
일반적으로 속성의 특성을 고려한 데이터 타입으로 정의된다.
차수(degree)
한 릴레이션에 들어있는 속성의 개수로 유효한 릴레이션의 최소 차수는 1이다.
자주 바뀌지 않는다.
카디널리티(cardinality)
릴레이션의 튜플 수이다. 유효한 릴레이션의 최소 카디널리티 수는 0이다.
시간이 지남에 따라 계속해서 변할 수 있다.
INT, VARCHAR2와 같은 것들이 도메인이다.
열, 칼럼, 속성, 애트리뷰트, 필드 모두 동일한 것이고 행, 튜플, 레코드 또한 모두 동일한 것이다.
위 고객 테이블의 차수는 6이고, 카디널리티는 3이다.
릴레이션 스키마
릴레이션의 논리적 구조로 릴레이션 이름과 속성 이름으로 정의한다.
릴레이션의 틀이므로 자주 바뀌지 않는다.
릴레이션 인스턴스
릴레이션에 실제 저장되는 데이터의 집합이다.
어느 한 시점에서 릴레이션에 포함되어 있는 튜플들의 집합으로, 시간이 지남에 따라 계속해서 변할 수 있다.
릴레이션 특성
튜플의 유일성
1개의 테이블에는 동일한 튜플이 존재할 수 없다. 테이블은 서로 다른 튜플들의 집합과도 같다.
키(key)가 존재한다. 이때 키는 각 튜플을 고유하게 식별할 수 있는 하나 이상의 속성들의 모임이다.
속성의 원자성
한 튜플의 각 속성은 단일 값(원자 값, atomic value)을 가지며 속성 값은 분해할 수 없다.
만약 앞서 살펴보았던 고객 릴레이션에서 고객번호 10001 홍길동 고객의 주소 값이 (서울 ~, 안양 ~)으로 되어있다면 단일 값이 아니게 되므로 주소 속성은 허용되지 않는다.
튜플의 무순서, 속성의 무순서
튜플들의 순서와 속성들의 순서는 무의미하다.
한 속성 값은 모두 같은 도메인 값을 가짐
한 속성에 속한 데이터 값은 모두 그 속성에서 정의한 도메인 값만 가질 수 있다.
예를 들어 사원 정보 테이블의 나이 속성에서 도메인 값을 숫자로 정의하였을 때, 숫자형이 아닌 값은 허용되지 않는다.
속성은 서로 다른 이름을 가짐
한 테이블에서 속성은 서로 다른 이름을 가져야만 한다.
서로 다른 테이블 간에는 같은 이름을 가진 속성이 있어도 된다.
키(Key)
테이블에서 튜플을 유일하게 식별할 수 있는 속성 혹은 속성들의 집합이다.
테이블은 중복된 튜플을 허용하지 않기 때문에 각각의 튜플에 포함된 속성들 중 어느 하나(혹은 하나 이상)는 값이 달라야 한다. 즉, 키가 되는 속성(혹은 속성의 집합)은 반드시 값이 달라서 튜플들을 서로 구별할 수 있어야 한다.
슈퍼 키(Super Key)
튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성들의 집합이다.
튜플들을 고유하게 식별하는데 꼭 필요하지 않은 속성들을 포함할 수 있어 1개 이상 존재할 수 있다.
예를 들어 고객(고객번호, 이름, 주민번호, 주소, 핸드폰 번호) 릴레이션이 있다고 가정할 때 슈퍼 키는 (고객번호), (주민번호, 이름, 주소), (고객번호, 이름, 주소, 핸드폰번호) 등이 될 수 있다. 속성 값이 많아질수록 만들어질 수 있는 슈퍼키는 점점 많아진다.
후보 키(Condidate Key)
튜플을 유일하게 식별할 수 있는 속성들의 최소 집합이다.
모든 릴레이션에는 최소한 1개 이상의 후보 키가 존재하고, 후보 키도 2개 이상의 속성으로 이루어질 수 있다.
(고객번호)는 슈퍼 키와 후보 키 모두 될 수 있지만, (주민번호, 이름, 주소)와 같은 경우는 슈퍼 키는 될 수 있으나 후보 키는 될 수 없다.
예를 들어 주문(고객번호, 도서번호, 판매 가격, 주문 일자) 릴레이션에서 후보 키는 (고객번호, 도서번호) 이다. 해당 속성 집합이 튜플을 유일하게 식별할 수 있는 최소 집합이기 때문이다.
기본 키(Primary Key)
여러 후보키 중 하나를 선정하여 대표로 삼는 키로, 릴레이션당 기본 키는 1개만 존재한다.
후보 키가 여러 개인 경우 릴레이션의 특성을 가장 잘 반영하는 1개의 키를 선택하는 게 좋다.
속성 값으로 널 값은 허용하지 않고, 속성 값의 변동이 일어나지 않을수록 좋으며 최대한 적은 수의 속성을 가질수록 좋다.
릴레이션 스키마를 표현할 때 기본키는 보통 밑줄을 그어 명시해준다.