관계 데이터 모델
관계 데이터 모델의 정의
- 관계 데이터 모델은 테이터를 2차원 테이블 형태인 릴레이션으로 표현함
- 릴레이션에 대한 제약조건과 관계 연산을 위한 관계대수를 정의함
릴레이션
릴레이션: 행과 열로 구성된 테이블
속성(Attribute): 세로 값으로 열(Column)이라고도 한다.
튜플(Tuple): 가로 값으로 행(Row)이라고도 한다.
차수: 속성의 수
도메인: 하나의 속성이 가질 수 있는 값들의 범위
널: 정보의 부재를 나타내는 특수한 데이터 값
카디날리티: 튜플의 수
인스턴스: 정의된 스키마에 따라 테이블에 실제 저장된 데이터의 집합
스키마: 릴레이션이 어떻게 구성되는지, 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의(첫 행 헤더)
릴레이션의 특징
- 속성은 단일 값을 가진다
- 속성은 서로 다른 이름을 가진다
- 한 속성의 값은 모두 같은 도메인 값을 가진다
- 속성의 순서는 상관이 없다
- 릴레이션 내의 중복된 튜플은 허용하지 않는다
- 튜플의 순서는 상관없다
릴레이션 스키마
릴레이션의 이름과 도메인(Domain)에 정의된 값들을 가진 애트리뷰트(Attribute)들의 집합
릴레이션 스키마의 요소
- 속성(Attribute) : 릴레이션 스키마의 열
- 도메인(Domain) : 속성이 가질 수 있는 값의 집합
- 차수(Degree) : 속성의 개수
일반적으로 릴레이션이름(속성이름1, 속성이름2, ... , 속성이름n)'과 같은 형태로 표현
릴레이션 인스턴스(relation instance)
릴레이션 스키마에 정의된 값들의 집합인 튜플(Tuple)들의 집합
릴레이션 인스턴스의 요소
- 튜플(Tuple) : 릴레이션의 행
- 카디날리티(Cadinality) : 튜플의 개수
관계(Relationship)
릴레이션 내에서 생성되는 관계 : 릴레이션 내 데이터들의 관계
릴레이션 간에 생성되는 관계 : 릴레이션간의 관계
키, 무결성 제약조건
키(Key)
특정 튜플을 식별할 때 사용하는 속성 또는 속성의 집합
릴레이션은 중복된 튜플을 허용하지 않음
- 각각의 튜플에 포함된 속성들 중 어느 하나이상은 값이 달라야 함
- 키가 되는 속성은 반드시 값이 달라서 튜플들을 서로 구별할 수 있어야함
키는 릴레이션 간의 관계를 맺는 데도 사용됨
슈퍼키(super key), 후보키(candidate key), 기본키(primary key), 대체키(alternate key), 외래키(foreign key)가 존재
슈퍼키
슈퍼키는 유일성(uniqueness)의 특성을 만족하는 속성 또는 속성들의 집합
유일성은 키가 갖추어야 하는 기본 특성이며, 하나의 릴레이션에서 키로 지정된 속성 값은 투플마다 달라야 한다는 의미 > 키 값이 같은 투플은 존재할 수 없다
후보키
후보키는 유일성과 최소성(minimality)을 만족하는 속성 또는 속성들의 집합
최소성은 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성이며, 하나의 속성으로 구성된 키는 최소성을 만족
슈퍼키 중에서 최소성을 만족하는 것이 후보키가 됨
후보키가 되기 위해 만족해야 하는 유일성과 최소성의 특성은 새로운 투플이 삽입되거나 기존 투플의 속성 값이 바뀌어도 유지되어야 함
현재의 릴레이션 내용, 즉 릴레이션 인스턴스만 보고 유일성과 최소성을 판단해서는 안됨
데이터베이스가 사용될 현실 세계의 환경까지 염두에 두고 속성의 본래 의미를 정확히 이해한 후 슈퍼키와 후보키를 선별해야 함
기본키
데이터베이스 설계자나 관리자가 여러 후보키 중에서 기본적으로 사용할 키를 선택한 것
후보키가 여러 개일 경우 데이터베이스 사용 환경을 고려하여 적합한 것을 기본키로 선택
기본키 선택 고려 사항
- 릴레이션 내 튜플을 식별할 수 있는 고유한 값을 가져야 함
- 널 값을 가질 수 있는 속성이 포함된 후보키는 부적합
- 값이 자주 변경될 수 있는 속성이 포함된 후보키는 부적합
- 최대한 적은 수의 속성을 가진 것 -> 단순한 후보키 선택
대리키
기본키가 보안을 요하거나, 마따한 기본키가 없을 때는 일련번호 같은 가상의 속성을 만들어 기본키로 삼는 경우가 있음
이러한 키를 대리키나 인조키 라고 함
대리키는 DBMS나 관련 소프트웨어에서 임의로 생성하는 값으로 사용자가 직관적으로 값의 의미를 알 수 없음
대체키
기본키로 선택되지 못한 후보키
외래키
다른 릴레이션의 기본키를 그대로 참조하는 속성
외래키는 릴레이션들 사이의 관계를 표현
참조하는 릴레이션과 참조되는 릴레이션이 같을 수도 있음 (자기 참조)
외래키는 기본키를 참조하지만 기본키가 아니기 때문에 널 값을 가질 수 있고, 서로 다른 투플이 같은 값을 가질 수 있음