관계형 데이터베이스(2)-Table Keys

이미 앞에서 PK(Primary Key), FK(Foreign Key)와 같은 것을 봤습니다. 지금까지 차근차근 살펴보셨다면 대충 어떠한 것인지 느낌은 오겠지만 이번 시간에는 보다 구체적으로 예를 들어 설명을 하겠습니다.

  1. 테이블의 키(Key)

    테이블에서 키(Key)는 어떤 행(Row,레코드)을 다른 행과 구분되게 하는 컬럼 또는 컬럼들의 집합을 말합니다.
    이 중에서 그 행을 유일하게 구분해 주는 키를 Primary Key라 하고, 여러 테이블간의 상호 관계(Relationship)을 위한 키를 Foreign Key라고 합니다.
    이렇게 말로만 하면 잘 이해가 안되니까 예를 들어 설명드리겠습니다.

  2. Primary Key
    특정 행을 다른 행과 유일하게 구분할 수 있는 컬럼 또는 컬럼’들’을 말합니다.
    아래의 두 테이블을 보겠습니다.


    사원 테이블에서는 사원 번호가 Primary Key가 되고, 부서 테이블에서는 부서 번호가 Primary Key가 됩니다. 왜 그런지는 설명 안해도 아실 것 같고…
    이러한 Primary Key의 특징은,

    • 절대로 Null 값을 가질 수 없습니다.
      당연하겠죠. 유일하게 구분할 수 있는 값을 입력하지 않으면 어쩌겠다는 겁니까.

    • 다른 행과 중복된 값을 가질 수 없습니다.
      중복된 값을 가진다면 그것이 Primary Key가 안되는 건 당연하죠. 주민등록번호가 같은 사람이 둘 이상이라는 것과 같으니까요.

    • 값을 변경할 수 없습니다.
      인터넷 사이트에 회원 가입을 하면 왜 ID만은 바꿀 수 없을까요. 바로 ID가 Primary Key로 설정되어 있기 때문이죠.

    • Primary Key의 속성은 NN, ND입니다.

    위에서 이미 설명했네요.
    이상 Primary Key의 특징은 설명된 것 같고

    • Primary Key는 PK로 표시하고,
    • 테이블에서 세로로 두 줄을 긋는다는 것

    까지 알아두면 완벽하겠네요. 위의 그림을 보면 노란색 컬럼의 오른쪽이 두줄로 표시되어 있습니다. 바로 세로 두줄 표시된 부분까지가 Primary Key라는 것을 나타내는 것이죠.

  3. Composite Key

    Composite는 ‘혼합’이라는 뜻입니다. 혼합한 키라는 것이 무얼까요?
    바로 몇 개의 컬럼이 모여서 하나의 Primary Key를 이룰 때 이런 말을 씁니다.
    Primary Key는 하나라고 했는데 무슨 말이냐?고 되물으실 분도 계시겠지만 다음 그림을 보시죠.


    왼쪽의 EMPLOYEE 테이블은 이미 우리가 알듯이 Primary Key가 하나인 지극히 평범한 테이블입니다.
    그런데 오른쪽의 EMPLOYEE SKILL 테이블은 어떻습니까?
    두 개의 컬럼에 모두 PK라고 표시하고 두개의 컬럼 다음에 세로 두줄을 표시하여 두 개 모두 Primary Key라고 나타내고 있습니다. 어찌된 일일까요?

    우리가 여러 개의 테이블을 구성하다 보면 위와 같이 하나의 컬럼만으로는 해당 행(레코드)를 유일하게 식별할 수 없을 경우가 생깁니다. 위의 예를 보면, Employee Number가 중복이 되고 Skill Number도 중복이 되지만 두 컬럼을 합쳐서 하나로 보았을 때는 유일한 구분을 할 수 있게 됩니다. 즉 101은 두 개가 있지만 101-CS101과 101-ENG101는 서로 구분 가능합니다. 마찬가지로 103도 103-ENG101과 103-PSY101과 같이 했을 경우에는 비록 103이 중복되더라도 Skill Number와 혼합하여 하나의 Key로 인식했을 경우에는 하나의 Primary Key 역할을 할 수 있습니다.
    이와 같이 두 개 이상의 컬럼 조합으로 이루어진 Primary Key를 Composite Key라고 합니다.
    따라서 Composite Key 전체는 다른 행과 중복되어서는 안되지만 그 일부 컬럼은 중복되어도 됩니다. 즉 Composite Key 전체의 유일성(Unique)만 유지하면 된다는 말이죠.

  4. Foreign Key

    Foreign Key는 그 이름에서도 드러나듯이 외부와의 연관을 고려한 키입니다. 즉 다른 테이블과 연결 고리를 하는 역할을 합니다.

    아래 그림을 보죠.

    EMPLOYEE 테이블과 EMPLOYEE SKILL 테이블 사이에 동일한 컬럼이 있습니다. Employee 컬럼이 동일하죠. 이때 EMPLOYEE 테이블과 EMPLOYEE SKILL 테이블에서 Employee Number는 Primary Key입니다. 그러면서 EMPLOYEE SKILL의 Employee Number는 EMPLOYEE 테이블을 연결해주는 역할을 합니다. 그래서 Foreign Key가 되는 것입니다.

    EMPLOYEE 테이블과 DEPARTMENT 테이블을 연결시키는 공통 컬럼은 Department Number입니다. Deplartment Number는 EMPLOYEE 테이블에서는 DEPARTMENT 테이블과 연결시켜주는 Foregin Key 역할을 하지만 DEPARTMENT 테이블에서는 Primary Key 역할을 합니다.

    말로 풀자니 더 헤깔릴 것 같네요. 위의 그림을 자세히 보시면 충분히 이해가 될 것입니다.

    위의 그림에서 화살표의 방향으로 보았을 때, 화살표가 가리키고 있는 테이블이 Dependent 테이블이 되고 그 반대가 Parente 테이블이 됩니다. 즉 Foreign Key가 있는 테이블이 Dependent 테이블이 됩니다.

이상 동주아빠 손병목이었습니다.

위로 스크롤