티스토리 뷰

반응형
데이터베이스 키 완벽 정리 (슈퍼키, 후보키, 기본키 등)

🔷 키란 무엇인가?

데이터베이스에서 "키(Key)"란 테이블 안의 각 행(row)을 유일하게 식별하거나 테이블 간 관계를 연결하기 위해 사용되는 컬럼 또는 컬럼들의 조합을 뜻합니다.


키는 다음과 같은 기능을 수행합니다:


  • 데이터를 유일하게 식별
  • 중복을 방지
  • 테이블 간 무결성을 유지
  • 데이터 검색 속도를 높임



🔷 슈퍼키(Super Key)

✅ 정의

슈퍼키(Super Key)테이블의 각 행을 유일하게 식별할 수 있는 컬럼 또는 컬럼 조합입니다. 유일성만 만족하면 되며, 최소성은 필요 없습니다.


✅ 예시

학번(student_id) 이름(name) 전화번호(phone)
2024001 김민수 010-1111-2222
2024002 이수정 010-3333-4444

슈퍼키 가능한 조합:


  • (학번)
  • (전화번호)
  • (학번, 이름)
  • (학번, 전화번호)



✅ 공통점과 차이

  • 공통점: 모든 슈퍼키는 유일하게 행을 식별할 수 있습니다.

  • 차이점: 불필요한 컬럼이 포함되어 있어도 무방합니다.



🔷 후보키(Candidate Key)

✅ 정의

후보키(Candidate Key)슈퍼키 중에서 최소성(Minimality)을 만족하는 키를 의미합니다. 즉, 유일성뿐만 아니라 더 이상 뺄 수 없는 꼭 필요한 컬럼 조합이어야 합니다.


✅ 예시

학생 테이블에서:


  • (학번) → 유일성 + 최소성 만족 → 후보키
  • (전화번호) → 유일성 + 최소성 만족 → 후보키
  • (학번, 이름) → 학번 하나만으로 유일성 확보 가능 → 후보키 아님



✅ 공통점과 차이

  • 공통점: 후보키도 유일하게 행을 식별할 수 있습니다.

  • 차이점: 슈퍼키는 최소성을 요구하지 않지만, 후보키는 반드시 최소성을 만족해야 합니다.



🔷 기본키(Primary Key)

✅ 정의

기본키(Primary Key)후보키 중에서 하나를 선택하여 테이블의 대표 식별자로 지정한 키를 의미합니다. - 반드시 값이 있어야 하고 (NOT NULL) - 절대로 중복될 수 없습니다 (UNIQUE)


✅ 예시

학생 테이블:


  • (학번)을 기본키로 선택 → 모든 학생은 고유한 학번을 가져야 하며, NULL이 허용되지 않습니다.



✅ 공통점과 차이

  • 공통점: 기본키도 유일하게 행을 식별합니다.

  • 차이점: 후보키 중 하나만 기본키로 선택되며, NULL이 절대 허용되지 않습니다.



🔷 대체키(Alternate Key)

✅ 정의

대체키(Alternate Key)후보키 중 기본키로 선택되지 않은 나머지 키를 의미합니다. 대체키는 유일성은 유지하지만 테이블의 대표 키는 아닙니다.


✅ 예시

학생 테이블:


  • (전화번호)가 기본키로 선택되지 않고 남는다면 → 대체키가 됩니다.



✅ 공통점과 차이

  • 공통점: 대체키도 유일하게 행을 식별할 수 있습니다.

  • 차이점: 기본키는 대표 식별자로 지정되지만, 대체키는 보조 식별자로 남습니다.



🔷 외래키(Foreign Key)

✅ 정의

외래키(Foreign Key)다른 테이블의 기본키를 참조하는 키를 의미합니다. 외래키는 테이블 간 관계를 설정하고, 참조 무결성(Referential Integrity)을 보장합니다.


✅ 예시

수강 테이블:


  • (학생ID)는 학생 테이블의 (학번)을 참조 → 외래키



✅ 공통점과 차이

  • 공통점: 외래키도 데이터 무결성을 유지하는 데 기여합니다.

  • 차이점: 외래키는 본 테이블 안에서 유일성은 요구되지 않지만, 참조하는 키는 반드시 유일해야 합니다.



🔷 복합키(Composite Key)

✅ 정의

복합키(Composite Key)둘 이상의 컬럼을 조합하여 하나의 키처럼 사용하는 것을 의미합니다. 각각의 컬럼만으로는 유일성 확보가 불가능하지만, 함께 조합하면 유일성을 보장할 수 있습니다.


✅ 예시

수강 테이블:


  • (학생ID, 과목ID)를 조합하여 하나의 복합키로 설정 → 각각 단독으로는 중복될 수 있지만, 두 컬럼을 함께 사용하면 중복이 없습니다.



✅ 공통점과 차이

  • 공통점: 복합키도 유일성을 보장합니다.

  • 차이점: 하나의 컬럼이 아니라, 여러 컬럼을 함께 묶어야만 유일성을 만족할 수 있습니다.



🔷 유니크키(Unique Key)

✅ 정의

유니크키(Unique Key)중복은 허용하지 않지만 NULL 값은 허용할 수 있는 키를 의미합니다. 기본키와 비슷하지만, NULL이 허용된다는 점이 다릅니다.


✅ 예시

학생 테이블:


  • 이메일 컬럼에 유니크 제약을 설정 → 같은 이메일은 불가하지만, 이메일이 없는 학생은 존재할 수 있습니다.



✅ 공통점과 차이

  • 공통점: 유니크키도 유일성을 보장합니다.

  • 차이점: 기본키는 NULL을 절대 허용하지 않지만, 유니크키는 NULL을 허용할 수 있습니다.



🔷 키 전체 요약 정리

키 종류 핵심 특징
슈퍼키 유일성만 만족, 최소성 필요 없음
후보키 슈퍼키 중 최소성 만족
기본키 후보키 중 하나 선택, NULL 불가, 중복 불가
대체키 후보키 중 기본키로 선택되지 않은 키
외래키 다른 테이블의 기본키 참조
복합키 둘 이상의 컬럼을 조합해 유일성 확보
유니크키 유일성 보장, NULL 허용 가능



반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함
반응형