관계형 데이터베이스는 Table의 형태로 Data들을 관리하고,
여러 Table을 Join하여 수많은 작업을 처리하기 때문에
Table 관리가 무엇보다도 중요합니다.

이러한 Table 관리에 가장 핵심이 되는 것이 바로 키(Key)입니다.
이번에도 임의의 학생 테이블을 가져와 Key를 설명해보도록 하겠습니다.
설명 중에 ‘학생 테이블’이 언급되면 다음 테이블을 같이 보시면 되겠습니다.

  • ex. 학생 테이블
  • ID Name Dept Year
    1 Kevin History 4
    2 Kyle Comp.Sci. 3
    3 Lee Mathematics 2
    4 Albert Music 1

속성

  1. 유일성
    • 하나의 키값으로 tuple을 유일하게 식별할 수 있는 특성
  2. 최소성
    • 키를 구성하는 속성들 중에서 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성

Key의 개념에 대하여

  1. Super Key 슈퍼키
    • 테이블에서 각 tuple을 unique하게 식별할 수 있는 ‘하나 혹은 그 이상’의 속성들의 집합
    • ex. 학생 테이블에서 {ID}, {ID, Name} 둘 다 Superkey입니다.
    • 유일성 O, 최소성 X
  2. Candidate Key 후보키
    • 테이블에서 각 tuple을 유일하게 식별할 수 있는 ‘최소한’의 속성들의 집합
    • 어떤 SuperKey K가 ‘minimal’하다면 Candidate Key입니다.
    • 유일성 O, 최소성 O
  3. Primary key 기본키
    • 후보키 중에서 특별히 선정된 ‘하나’의 키
    • 테이블에서 기본키는 오직 1개
    • 기본키는 null 값을 절대 가질 수 없고, 중복된 값도 가져서는 안됩니다.
  4. Foreign Key 외래키
    • 다른 테이블의 기본키를 ‘참조’하는 속성의 집합
    • 테이블 간의 참조관계를 표현합니다.
    • 참조되는 테이블의 필드는 반드시 unique나 Primary Key가 설정되어 있어야 합니다.
    • 중복 데이터 제거를 위해서 테이블을 분리할 때 필요합니다.
  5. Alternate Key 대체키
    • 후보키가 2개 이상인 경우 그 중에서 어느 하나를 기본키로 하고 남은 후보키들을 대체키라고 합니다.

이제 각각의 Key가 무엇을 의미하는지는 알게 되었습니다.
그런데 왜 이런 Key들이 필요한 것일까요?
DB에서 중요한 것 중 하나가 바로 데이터 무결성 이었습니다.
위에서 설명한 Key는 바로 무결성 제약 조건 을 지키기 위해 필요한 것들입니다.

무결성 제약 조건

:pencil2: 데이터베이스에 저장된 데이터들의 정확성, 일관성, 유효성 등을 보장하기 위해
무언가 변경이 일어날 때 이를 제약하기 위한 조건

무결성 제약 조건은 크게 다음과 같이 분류할 수 있습니다.

  • 개체 무결성 : primary key는 not null이어야 합니다
  • 참조 무결성 : foreign Key 값은 null이거나 참조하는 테이블의 primary key 값과 동일해야 합니다
    • Primary key와 Foreign Key 사이의 관계가 항상 유지되도록 보장합니다.
    • cascade
      • on delete cascade, on update cascade 등 참조 무결성이 깨지는 걸 허용하면서 데이터 변경을 가능하게 해주는 Keyword입니다.
  • 도메인 무결성 : 특정 속성의 값이, 그 속성이 정의된 도메인에 속한 값이어야 합니다
  • 고유 무결성 : 특정 속성에 삽입되는 데이터는 고유한 값을 가져야 합니다
  • 키 무결성 : 하나의 테이블에는 적어도 하나의 키가 존재해야 합니다
  • null 무결성 : 테이블의 특정 속성 값이 Null이 될 수 없도록 하는 규정입니다

이번 포스팅에서는 DB에서 가장 중요한 요소 중 하나인 데이터 무결성을 지키기 위한 조건들과
그때 사용되는 Key 개념까지 살펴보았습니다.