데이터베이스 시스템

[데이터베이스] 관계 데이터베이스(Relational database)

LimeCoding 2023. 3. 28. 00:24

1. 관계 데이터베이스란?

 

 관계 데이터베이스(relational DB)는 관계 데이터 모델(relational Data Model)을 기반으로 만들어진 데이터베이스를 말한다. IBM의 E. F. Codd에 의해 처음 제안되었다. 관계 데이터 모델은 수학에서 사용하는 릴레이션이라는 개념을 이용하는데 이를 데이터베이스에서 표현할 때는 표(table)형태로 표현한다. 

 

릴레이션의 구조

릴레이션을 구성하는 요소에는 도메인, 튜플, 애트리뷰트가 있다.

  • 릴레이션(Relation): 관계형 모델에서 테이블의 형태로 나타내어지는 것(엄밀히 말하면 테이블과 릴레이션은 다르다.)
  • 애트리뷰트(Attribute): column에 해당하는 부분으로 개체의 속성을 나타냄
  • 튜플(tuple): row에 해당하는 부분으로 애트리뷰트 값으로 이루어진 행을 가리킴
  • 도메인(Domain): 도메인은 애트리뷰트의 데이터 타입을 의미한다.

릴레이션의 특성은 다음과 같다.

  • 튜플의 유일성(한 릴레이션 안에 튜플은 모두 다르다.)
  • 튜플의 무순서성(릴레이션은 집합이기 때문에 그 원소인 튜플에는 순서가 없음)
  • 애트리뷰트의 무순서성(릴레이션의 스키마가 애트르뷰트의 집합으로 정의되기 때문이다)
  • 모든 애트리뷰트는 원자값(atomic value)을 갖는다.

2. 데이터베이스 키

 

 한 릴레이션안에 존재하는 튜플은 모두 다르다. 그러면 우리는 특별한 방법을 이용해 원하는 튜플 1개를 특정할 수 있는데 그 방법이 바로 키이다. 키(key)는 튜플을 유일하게 식별할 수 있는 애트리뷰트의 집합을 말한다. 키에는 다음과 같이 다양한 종류가 있다.

 

  • 후보 키(candidate key)
  • 슈퍼 키(super key)
  • 기본 키(primary key)
  • 대체 키(alternate key)
  • 외래 키(foreign key)

2.1. 후보 키

 후보 키는 다음과 같은 성질을 만족하는 애트리뷰트의 집합을 의미한다.

  • 유일성(uniqueness): 릴레이션에 있는 모든 튜플에 대해 키의 값이 모두 다르면서 유일하다.
  • 최소성(minimality): 키는 모든 튜플들을 유일하게 식별하는 데 꼭 필요한 최소한의 애트리뷰트들로 구성된다.

 예시를 들어보면 사원을 구분할 때에는 사원 번호만 가지고 구분할 수 있으며(최소성), 사원 번호는 사원의 고유한 번호이다.(유일성) 그러면 사원 번호는 후보 키가 될 수 있는 것이다. 하지만 사원을 사원 번호와 이름으로 구분하면 사원 번호와 이름으로 구분할 수 있지만(유일성)  사원 번호와 이름에서 이름은 꼭 필요하지는 않기 때문에(최소성) 후보 키가 될 수 없다.

 

2.2 슈퍼 키

 앞서 유일성만 만족하고 최소성을 만족하지 못한 {사원 번호, 이름} 애트리뷰트 집합을 슈퍼 키라고 한다. 후보 키는 슈퍼 키가 될 수 있지만 슈퍼 키는 후보 키가 될 수 없다.

 

2.3 기본 키

 기본 키는 튜플을 유일하게 식별할 수 있는 후보 키들 가운데 설계자가 직접 지정한 후보 키를 기본키라고 한다. 이 기본 키는 실제 데이터베이스를 사용할 때 튜플을 식별하는데 쓰인다.

 

2.4 대체 키

 대체 키는 후보 키들 가운데서 기본 키를 제외한 나머지 키를 말한다.

 

2.5 외래 키

 외래 키는 두 릴레이션 사이에서 나오는 키로 릴레이션 A에서 릴레이션 B를 참조할 때 필요한 B의 기본 키를 릴레이션 A의 외래 키라고 한다. 이때 릴레이션 A를 참조 릴레이션(referancing relation)이라하고 릴레이션 B를 피참조 릴레이션(referanced relation)이라고 한다.

 

3. 무결성 제약

 관계 데이터베이스는 관계 데이터 모델을 사용하기에 데이터 모델에서 사용하는 특별한 제약조건을 가지는데 바로 무결성 제약(integrity constraint)이다. 무결성 제약에는 참조 무결성과 개체 무결성이 있다.

 

개체 무결성 제약(entity integirity constraint)

 개체 무결성 제약이란 기본 키에 속해 있는 애트리뷰트는 언제 어느 때고 널 값을 가질 수 없다는 것이다. 튜플은 유일하게 식별할 수 있는 식별자를 가져야하는데 이를 기본 키가 해주고 있다. 그런데 기본 키가 널 값을 가지게 되면 튜플을 식별할 수 없게 되고 이는 개체 정의의 모순을 가져온다.(튜플이 곧 개체이다.)

 

참조 무결성 제약(referential integrity constraint)

 참조 무결성 제약이란 릴레이션은 참조할 수 없는 외래 키 값을 가져서는 안된다는 것을 말한다. 만약 참조 릴레이션에는 널이 아닌 외래 키가 존재하는데 피참조 릴레이션에는 해당하는 키가 없다면 이는 존재하지 않는 튜플을 참조하고 있기에 문제가 발생한다. 외래 키가 널을 가질 수도 있는데 이는 참조하고 릴레이션이 없다는 의미이다.