관계형 데이터베이스(1)-Logical Table

데이터 모델링에 이어 관계형 데이터베이스의 테이블에 대해 알아보겠습니다.
먼저 이번 시간에는 논리적 테이블(Logical Table)의 개념과 논리적 테이블의 컬럼 도메인(Column Domain),  컬럼 룰(Column Rule)에 대해 살펴보겠습니다.

  1. 논리적 테이블(Logical Table)

    Logical Table은 말 그대로 ‘실제’ 테이블이 아니라 우리가 머리 속에서 그리는 논리적인 테이블입니다. 실제 데이터는 어떤 식으로 저장되어 있든 우리가 이해하기 쉬운 2차원 도표로 표시한 것이 바로 Logical Table입니다.
    사실 우리는 Logical Table만 알아도 되죠. 실제 데이터가 디스크에 어떻게 저장되는지는 우리가 생각하지 않아도 DBMS가 알아서 저장을 할테니까요.

    보다 사전적으로 표현하자면,

    • 관계형 데이터베이스에서 데이터를 열(Column)과 행(Row)으로 표현한 2차원 도표를 Logical Table이라고 합니다.
    • 이러한 테이블의 행(Row)은 Entity의 Occurrence에 해당됩니다.
      이미 제13강에서 다음과 같은 그림을 보았죠? (기억이 가물가물하다면 여기를 클릭해서 제13강으로 돌아가서 확인하고 오세요..)

    • 테이블의 열(Column)은 레코드에서 연관 있는 필드(Field)에 해당됩니다.
    • 결국 Record=Row=Occurrence가 모두 비슷한 개념이고, Field=Column=Attribute가 모두 비슷한 뜻이 됩니다.
    • 나중에 다루겠지만 Column Qualifier라는 것이 있는데, 이것은 Column이 속해 있는 테이블의 소속을 명시하는 것입니다. 예를 들어 EMPLOYEE 테이블의 NUMBER는 EMPLOYEE.NUMBER와 같은 식으로 표시하는 것이죠.

    아래 그림을 보시면 왼쪽의 노란색으로 표시된 것이 Table Column에 해당되겠죠. 오른쪽의 주황색 표시는 Table Row에 해당되구요. 여기까지는 그리 어렵지 않죠?

  2. 논리 테이블의 컬럼 도메인(Column Domain)

    컬럼 도메인이란 특정 컬럼에 유효한 값들의 모음을 말합니다.
    아래 테이블을 보면 Employee Number는 101, 102.. 등과 같이 음수가 아닌 양의 정수만 사용하였죠. 그리고 Emplyee Name은 모든 문자를 사용하였으며 Hire Date와 Retire Date에는 날짜가 쓰였습니다.


    이렇듯 특정한 컬럼(필드)에서 사용할 수 있는 값들의 모음 컬럼 도메인이라고 합니다.
    따라서 모든 논리 테이블의 컬럼은 도메인을 갖습니다.
    도메인이 필요한 이유는 데이터의 무결성(Integrity)를 강화하기 위함이죠. 무결성(Integrity) 아시죠? 만약에 날짜를 입력하는 란에 문자를 입력된다든가, 양의 정수를 입력해아하는데 음수를 입력된다든가 했을 경우에 데이터를 믿을 수 없겠죠?

    이렇게 데이터의 무결성을 보다 강화하기 위해서는 컬럼 도메인에 한번 더 제한을 둘 필요가 있는데 이를 컬럼 규칙(Rule)이라고 합니다.

  3. 컬럼 규칙(Column Rule)

    위에서 설명했듯이 컬럼 룰이 필요한 이유는 컬럼에 입력할 수 있는 값들에 한번 더 제한을 두어 데이터의 무결성을 강화하기 위해서이죠.

    아래 그림을 보죠.

    Employee Number에 NN, ND가 표시되어 있습니다. No(Not) Null, No Duplicate라는 뜻입니다.
    위에서 Employee Number의 컬럼 도메인은 양의 정수라고 말했죠. 양의 정수가 올 수 있되, 값을 입력하지 않거나(Null), 다른 레코드와 동일한 값(Duplicate)이 와서는 안된다는 것입니다.
    이처럼 컬럼 도메인에 한번 더 규칙을 가한 것을 컬럼 룰이라고 부릅니다.

    컬럼 룰에는 다음과 같은 것들이 있습니다.

    • NN (No Null)
      컬럼에 Null 값(=아무 것도 입력하지 않은 것)이 올 수 없다는 뜻입니다.

    • ND(No Duplicate)
      컬럼의 값이 테이블 내의 다른 행(Row,레코드)의 값과 같아서는 안된다는 뜻입니다. 즉 그 값은 유일(Unique)해야 한다는 것이죠.

    • DD(Derived Data)
      Derive는 ‘~에서 유래하다. 파생하다’라는 뜻입니다. 즉 다른 컬럼에 의해 유추될 수 있는 컬럼을 말합니다. 예를 들어 사원 테이블에 특정 사원이 입사한 날과 퇴사한 날이 기록되어 있다면 그 사원의 재직 기간을 유추할 수 있죠. 이럴 때 사원 테이블에서 재직기간이라는 컬럼이 있다면 이 컬럼은 DD가 되는 것입니다.

이번 강좌 내용은 비교적 이해하기 쉬웠을 것입니다.
다음 시간에는 테이블 키(Key)에 대해 알아보겠습니다. 이미 우리가 Primary Key, Foreign Key 등에 대해 들은 바가 있기 때문에 그리 어렵지 않을 것입니다.

이상 일요일이 다가고 있는 시간, 동주아빠 손병목이었습니다.

위로 스크롤