관계 데이터 모델
관계 데이터 모델의 용어
관계 데이터 모델에서는 데이터를 행과 열로 구성된 2차원 테이블인 릴레이션
에 담아 데이터베이스에 저장한다.
- 속성 : 릴레이션의 열을 속성 혹은 애튜리뷰트라 부른다. 위의 그림에서 속성은 5개이다.
- 튜플 : 릴레이션의 행을 튜플이라 부른다. 위의 그림에서 튜플은 5개이다.
- 도메인 : 속성 하나가 가질 수 있는 모든 값의 집합을 말함. 도메인을 정의해두면 속성값이 입력될 때 적합성을 판단하여 이외의 값은 허용하지 않음으로 일정한 값을 유지할 수 있다. 또한 도메인 값은 미리 나열하기 어렵기 때문에 일반적으로 데이터 타입으로 정의한다.
- 널값 : 릴레이션속 튜플의 특정 속성의 값을 모르거나 적합한 값이 없는 경우 널을 사용할 수 있다.
- 차수 : 한 릴레이션의 속성전체 개수를 차수라고 표현한다. 위의 그림의 차수는 5이며 모든 릴레이션은 최소 1개 이상의 차수가 존재해야 한다.
- 카디널리티 : 튜플의 전체 개수를 뜻한다. 위의 그림의 카디널리티는 5이다.
릴레이션과 데이터베이스의 구성
관계 데이터 모델에서 릴레이션은 릴레이션 스키마
와 릴레이션 인스턴스
로 구성되어 있다. 위의 그림으로 따지면 속성값을 가진 행이 릴레이션 스키마 각 튜플들의 행이 릴레이션 인스턴스라고 볼 수 있다.
릴레이션 스키마
릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의하는 릴레이션의 논리적 구조로
1
릴레이션이름 (속성이름1, 속성이름2, 속성이름3)
의 형태로 나타낸다. 위의 그림을 릴레이션 스키마로 나타낸다면 회원정보(번호, 이름, 주소, 직업, 생년월일)로 표현할 수 있다. 릴레이션 내포(relation intension)라고도 부르기도 한다.
릴레이션 인스턴스
어느 한 시점에 존재하는 튜플들의 집합이다. 릴레이션이라 부르거나 릴레이션 외연(relation extension)이라고도 부른다.
데이터베이스 스키마
일반적으로 데이터베이스는 여러개의 릴레이션으로 구성되는데, 게시판 서비스의 경우 회원 릴레이션, 게시글 릴레이션, 댓글 릴레이션이 존재할 수 있다. 이 데이터베이스의 전체 구조를 의미하는 것이 데이터베이스 스키마로 데이터베이스를 구성하는데 필요한 릴레이션 스키마를 모아놓은 것이다.
데이터베이스 스키마
어느 한 시점에서 데이터베이스에 저장된 데이터의 전체 집합을 의미하며 데이터베이스를 구성하는 모든 릴레이션 인스턴스를 모아놓은 것이다.
릴레이션의 특성
- 튜플의 유일성
- 한 릴레이션에는 동일한 튜플이 존재할 수 없으므로 구별되는 유일한 특성이 존재해야 한다.
- 튜플의 무순서
- 한 릴레이션에서 튜플들 간의 순서는 무의미하다. 순서가 바뀌어도 내용이 같으며 위치가 아닌 내용으로 검색을 하기때문에 튜플간의 순서가 없다.
- 속성의 무순서
- 한 릴레이션에서 튜플과 마찬가지로 속성역시 순서는 무의미하다.
- 속성의 원자성
- 모든 속성의 값은 더는 분해할 수 없는 원자값만 가질 수 있다. 즉 다중값을 허용하지 않는다.
키의 종류
키란 릴레이션에서 튜플을 유일하게 구별하는 속성 또는 속성의 집합이다.
슈퍼키
유일성의 특성을 만족하는 속성 또는 속성들의 집합이다. 이때의 유일성은 키가 갖추야하는 기본 특성으로 한 릴레이션에서 키로 지정된 속성의 값은 튜플마다 달라야 한다.
후보키
유일성과 최소성을 만족하는 속성 또는 속성들의 집합이다. 이때의 최소성은 키를 꼭 필요한 최소한의 속성들로만 구성하는 특성이다. 따라서 하나의 속성으로 구성된 키는 최소성을 만족한다.
후보키는 슈퍼키 중 최소성을 만족하는 것이 후보키가 되며 후보키가 되기 위해선 새로운 튜플이 삽입되거나 기존 튜플이 수정되어도 최소성이 유지되어야 한다.
기본키
데이터베이스 설계자나 관리자가 여러 후보키 중 기본적으로 사용할 키를 말한다. 기본키는 속성이름에 밑줄을 그어 표현한다.
- 기본키 선택기준
- 널 값을 가질 수 없는 키를 선택한다.
- 값이 자주 변경되지 않는 키를 선택한다.
- 일반사용자와 값 처리를 위해 단순한 후보키를 선택한다.
대체키
기본키로 선택되지 못한 후보키들이다.
외래키
한 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키이다. 참조하는 릴레이션과 참조되는 릴레이션이 같을 수 도 있다. 또한 외래키는 기본키를 참조하지만 기본키가 아니므로 널값을 가질 수 있으며 두 튜플이 같은 값을 가질 수 도 있다.
관계 데이터 모델의 제약
무결성 제약조건
데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지하기 위한 규칙으로 이때의 무결성은 데이터를 결함이 없는 상태로 유지하는 것이다. 이 무결성 제약조건에는 개체 무결성 제약조건과 참조 무결성 계약조건이 존재하는데 데이터베이스의 상태를 일관적으로 유지하기 위해선 두가지 조건이 모두 만족해야 한다.
개체 무결성 제약조건
기본키를 구성하는 모든 속성은 널값을 가질 수 없다는 규칙으로 이 조건을 만족시키려면 튜플을 삽입, 수정하는 연산에서 널값을 거부해야하며, 이를 위해 릴레이션을 생성할 때 기본키를 어떤 속성들로 구성할 것인지 DBMS에 가르쳐주면 된다.
참조 무결성 제약조건
외래키에 대한 규칙으로 연관된 릴레이션들에 적용하는 조건으로 외래키는 참조할 수 없는 값을 가질 수 없는 규칙이다. 만약 외래키가 참조하는 릴레이션의 기본키와 상관없는 키를 가지면 릴레이션을 연결할 수 없으므로 외래키의 의미가 사라진다. 이때 외래키는 참조 가능한 값만 가져야 하지만 널 값이라고 제약조건을 벗어난 것은 아니다.
만약 게시판 서비스에서 회원 릴레이션의 A가 댓글 릴레이션에 댓글을 작성하면 외래키로 A의 아이디가 넘어가고, A가 회원탈퇴를 하는 경우에는 이 제약조건을 유지하기 위해 3가지 방법을 사용할 수 있다.
- 회원탈퇴 연산을 막는다.
- 연관된 댓글도 함께 삭제한다.
- 댓글 릴레이션의 튜플을 널이나 기본값으로 지정한다.
여기의 3번 방법으로 널 값을 가질 수 있기 때문에 제약조건을 벗어난 것이라 할 순 없다.
데이터베이스의 데이터가 자주 변경되는 경우 이 제약조건을 계속 만족하기 어렵기 때문에 DBMS가 자동으로 수행해준다. 이를 위해 릴레이션을 생성할 때마다 어떤 속성이 외래키이며 어떤 속성을 참조하는지, 만약 제약조건을 위반하는 경우 어떤 처리를 원하는지를 설정하면 된다.