데이터베이스 관련 책을 읽다보면 Relation과 Table을 같은 용어로 이야기하는 경우가 있다.
어떤 책의 경우 "릴레이션이 테이블이다." 라고 되어있다. 하지만 사실상 릴레이션은 테이블과는 약간 다르다. 결론적으로 말하자면 릴레이션은 모두 테이블이지만 모든 테이블이 다 릴레이션은 아니라는 이야기다.

Codd, E.F의 "A Reational Model of Data for Larger Shared Databanks"의 논문에 보면 릴레이션의 특징을 정의하였다.

  • 행은 개체에 대한  데이터를 포함한다.
  • 열은 개체의 속성에 대한 데이터를 포함한다.
  • 한 열의 모든 항목은 동일한 종류다.
  • 각 열은 유일한 이름을 가진다.
  • 테이블의 셀은 단일 값을 포함한다.
  • 열의 순서는 중요하지 않다.
  • 행의 순서는 중요하지 않다.
  • 어떤 두개의 행도 동일하지 않다.

아래는 DAVID M. KROENKE의  DATABASE PROCESSING이라는 책에서 나온 해설이다.

테이블이 릴레이션이 되기 위해서는 테이블의 행들이 개체에 대한 데이터를 저장해야하고, 테이블들의 열이 그 개체들의 특성에 대한 데이터를 저장해야 한다. 릴레이션은 한 열의 모든 값들이 동일한 종류여야 한다.
예를 들어 어떤 릴레이션의 첫번째 행의 두번째 열이 FirstName을 가진다면 그 릴레이션의 모든 행의 두번째 열도 FistName을 가져야 한다. 또한 열의 이름은 유일해야 한다. 즉 동일 릴레이션에 속한 두 열은 같은 이름을 가질 수 없다.
릴레이션의 각 Cell은 단일한 값 또는 항목만 가진다. 다중 항목은 허용되지 않는다. (제 1 정규화)
마지막으로 주어진 테이블이 릴레이션이 되기 위해서는 동일한 행이 존재하면 안된다.


간단한 예를 들면

사용자 삽입 이미지
위의 표는 테이블이지만 릴레이션은 아니다.
사원번호 300의 오돌이가 복수로 테이블 안에 저장되어 있기 때문이다.
릴레이션 특성에서 "어떤 두개의 행도 동일하지 않다."를 위반했다.

또 하나의 예를 들면
사용자 삽입 이미지
 이 표도 역시 테이블이지만 릴레이션은 아니다.
릴레이션의 특성에서 "테이블의 셀은 단일 값을 포함한다."를 위반하였다.

Posted by 서오석
,