Home 관계 데이터 모델
Post
Cancel

관계 데이터 모델

관계 데이터 모델

관계 데이터 모델의 용어

관계 데이터 모델에서는 데이터를 행과 열로 구성된 2차원 테이블인 릴레이션에 담아 데이터베이스에 저장한다.

relation

  • 속성 : 릴레이션의 열을 속성 혹은 애튜리뷰트라 부른다. 위의 그림에서 속성은 5개이다.
  • 튜플 : 릴레이션의 행을 튜플이라 부른다. 위의 그림에서 튜플은 5개이다.
  • 도메인 : 속성 하나가 가질 수 있는 모든 값의 집합을 말함. 도메인을 정의해두면 속성값이 입력될 때 적합성을 판단하여 이외의 값은 허용하지 않음으로 일정한 값을 유지할 수 있다. 또한 도메인 값은 미리 나열하기 어렵기 때문에 일반적으로 데이터 타입으로 정의한다.
  • 널값 : 릴레이션속 튜플의 특정 속성의 값을 모르거나 적합한 값이 없는 경우 널을 사용할 수 있다.
  • 차수 : 한 릴레이션의 속성전체 개수를 차수라고 표현한다. 위의 그림의 차수는 5이며 모든 릴레이션은 최소 1개 이상의 차수가 존재해야 한다.
  • 카디널리티 : 튜플의 전체 개수를 뜻한다. 위의 그림의 카디널리티는 5이다.

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

관계 데이터 모델에서 릴레이션은 릴레이션 스키마릴레이션 인스턴스로 구성되어 있다. 위의 그림으로 따지면 속성값을 가진 행이 릴레이션 스키마 각 튜플들의 행이 릴레이션 인스턴스라고 볼 수 있다.

릴레이션 스키마

릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의하는 릴레이션의 논리적 구조로

1
릴레이션이름 (속성이름1, 속성이름2, 속성이름3)

의 형태로 나타낸다. 위의 그림을 릴레이션 스키마로 나타낸다면 회원정보(번호, 이름, 주소, 직업, 생년월일)로 표현할 수 있다. 릴레이션 내포(relation intension)라고도 부르기도 한다.

릴레이션 인스턴스

어느 한 시점에 존재하는 튜플들의 집합이다. 릴레이션이라 부르거나 릴레이션 외연(relation extension)이라고도 부른다.

데이터베이스 스키마

일반적으로 데이터베이스는 여러개의 릴레이션으로 구성되는데, 게시판 서비스의 경우 회원 릴레이션, 게시글 릴레이션, 댓글 릴레이션이 존재할 수 있다. 이 데이터베이스의 전체 구조를 의미하는 것이 데이터베이스 스키마로 데이터베이스를 구성하는데 필요한 릴레이션 스키마를 모아놓은 것이다.

데이터베이스 스키마

어느 한 시점에서 데이터베이스에 저장된 데이터의 전체 집합을 의미하며 데이터베이스를 구성하는 모든 릴레이션 인스턴스를 모아놓은 것이다.

릴레이션의 특성

  • 튜플의 유일성
    • 한 릴레이션에는 동일한 튜플이 존재할 수 없으므로 구별되는 유일한 특성이 존재해야 한다.
  • 튜플의 무순서
    • 한 릴레이션에서 튜플들 간의 순서는 무의미하다. 순서가 바뀌어도 내용이 같으며 위치가 아닌 내용으로 검색을 하기때문에 튜플간의 순서가 없다.
  • 속성의 무순서
    • 한 릴레이션에서 튜플과 마찬가지로 속성역시 순서는 무의미하다.
  • 속성의 원자성
    • 모든 속성의 값은 더는 분해할 수 없는 원자값만 가질 수 있다. 즉 다중값을 허용하지 않는다.

키의 종류

키란 릴레이션에서 튜플을 유일하게 구별하는 속성 또는 속성의 집합이다.

슈퍼키

유일성의 특성을 만족하는 속성 또는 속성들의 집합이다. 이때의 유일성은 키가 갖추야하는 기본 특성으로 한 릴레이션에서 키로 지정된 속성의 값은 튜플마다 달라야 한다.

후보키

유일성과 최소성을 만족하는 속성 또는 속성들의 집합이다. 이때의 최소성은 키를 꼭 필요한 최소한의 속성들로만 구성하는 특성이다. 따라서 하나의 속성으로 구성된 키는 최소성을 만족한다.

후보키는 슈퍼키 중 최소성을 만족하는 것이 후보키가 되며 후보키가 되기 위해선 새로운 튜플이 삽입되거나 기존 튜플이 수정되어도 최소성이 유지되어야 한다.

기본키

데이터베이스 설계자나 관리자가 여러 후보키 중 기본적으로 사용할 키를 말한다. 기본키는 속성이름에 밑줄을 그어 표현한다.

  • 기본키 선택기준
    • 널 값을 가질 수 없는 키를 선택한다.
    • 값이 자주 변경되지 않는 키를 선택한다.
    • 일반사용자와 값 처리를 위해 단순한 후보키를 선택한다.

대체키

기본키로 선택되지 못한 후보키들이다.

외래키

한 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키이다. 참조하는 릴레이션과 참조되는 릴레이션이 같을 수 도 있다. 또한 외래키는 기본키를 참조하지만 기본키가 아니므로 널값을 가질 수 있으며 두 튜플이 같은 값을 가질 수 도 있다.

관계 데이터 모델의 제약

무결성 제약조건

데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지하기 위한 규칙으로 이때의 무결성은 데이터를 결함이 없는 상태로 유지하는 것이다. 이 무결성 제약조건에는 개체 무결성 제약조건과 참조 무결성 계약조건이 존재하는데 데이터베이스의 상태를 일관적으로 유지하기 위해선 두가지 조건이 모두 만족해야 한다.

개체 무결성 제약조건

기본키를 구성하는 모든 속성은 널값을 가질 수 없다는 규칙으로 이 조건을 만족시키려면 튜플을 삽입, 수정하는 연산에서 널값을 거부해야하며, 이를 위해 릴레이션을 생성할 때 기본키를 어떤 속성들로 구성할 것인지 DBMS에 가르쳐주면 된다.

참조 무결성 제약조건

외래키에 대한 규칙으로 연관된 릴레이션들에 적용하는 조건으로 외래키는 참조할 수 없는 값을 가질 수 없는 규칙이다. 만약 외래키가 참조하는 릴레이션의 기본키와 상관없는 키를 가지면 릴레이션을 연결할 수 없으므로 외래키의 의미가 사라진다. 이때 외래키는 참조 가능한 값만 가져야 하지만 널 값이라고 제약조건을 벗어난 것은 아니다.

만약 게시판 서비스에서 회원 릴레이션의 A가 댓글 릴레이션에 댓글을 작성하면 외래키로 A의 아이디가 넘어가고, A가 회원탈퇴를 하는 경우에는 이 제약조건을 유지하기 위해 3가지 방법을 사용할 수 있다.

  1. 회원탈퇴 연산을 막는다.
  2. 연관된 댓글도 함께 삭제한다.
  3. 댓글 릴레이션의 튜플을 널이나 기본값으로 지정한다.

여기의 3번 방법으로 널 값을 가질 수 있기 때문에 제약조건을 벗어난 것이라 할 순 없다.

데이터베이스의 데이터가 자주 변경되는 경우 이 제약조건을 계속 만족하기 어렵기 때문에 DBMS가 자동으로 수행해준다. 이를 위해 릴레이션을 생성할 때마다 어떤 속성이 외래키이며 어떤 속성을 참조하는지, 만약 제약조건을 위반하는 경우 어떤 처리를 원하는지를 설정하면 된다.

This post is licensed under CC BY 4.0 by the author.

데이터 모델링

관계 데이터 연산