관계 데이터 모델(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개의 키를 선택하는 게 좋다.
속성 값으로 널 값은 허용하지 않고, 속성 값의 변동이 일어나지 않을수록 좋으며 최대한 적은 수의 속성을 가질수록 좋다.
릴레이션 스키마를 표현할 때 기본키는 보통 밑줄을 그어 명시해준다.
관계 데이터 모델(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개의 키를 선택하는 게 좋다.
속성 값으로 널 값은 허용하지 않고, 속성 값의 변동이 일어나지 않을수록 좋으며 최대한 적은 수의 속성을 가질수록 좋다.
릴레이션 스키마를 표현할 때 기본키는 보통 밑줄을 그어 명시해준다.