만쥬의 개발일기
article thumbnail

key는 데이터베이스의 가장 중요한 개념이다.

key는 데이터베이스(혹은 릴레이션) 내에서 특정 레코드(tuple)를 고유하게 식별하기 위해 사용되는

필드 또는 속성(attribute)을 의미하고, 그 종류로는 후보키, 기본키, 대체키, 슈퍼키,외래키 등이 있다.


예시 릴레이션 

학생 TABLE

강의 TABLE

후보키 (Candidate Key)

후보 키(Candidate Key)는 데이터베이스 테이블에서 각 튜플을 유일하게별하는 데 사용할 수 있는 

키들의 부분집합이다. 

 

  • 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야한다.
  •  릴레이션에 있는 모든 튜플에 대해서유일성과 최소성을 만족시켜야한다.

 

유일성을 만족한다는 것은, 예를들어 학생 릴레이션의 경우, 후보키만으로도 한 튜플을 특정지을 수 있는 것이다.

'학번'은 여러 학생이 같은 값을 중복하여 가질 수 없으므로, '학번' 키는 유일성을 만족한다.

 

최소성을 만족한다는 것은, 예를들어 학생 릴레이션의 경우, 학번만으로도 각 학생을 구분할 수 있기 때문에

'학번'은 후보키가 될 수 있지만, ('학번' , '이름')은 후보키가 될 수 없다.

중복이 없이 구분 가능한 '전화번호' 또한 후보키가 될 수 있다.

 


하지만 강의 테이블 처럼 '학번' 과 '강의명' 모두 유일성을 만족하지 못하는 경우,
('학번', '강의명') 이 후보키가 되고 2개의 키의 집합이 최소성을 만족하는 것이된다.

 

기본키 (Primary Key)

  • 후보키 중에서 선택한 주키(Main Key)이다.
  • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성으로서, Null 값을 가질 수 없다.                     (개체 무결성의 첫번째 조건)
  • 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.                                                             (개체 무결성의 두번째 조건)
     
    ex) <학생> 릴레이션에서 '학번'을 기본키로 정의하면 이미 입력된 '1001'은 다른 튜플의 '학번' 속성 값으로 입력할 수 없다. (후보키의 특징 중 유일성을 만족하기 위해)

대체키 (Alternate Key)

후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들
 
ex) <학생> 릴레이션에서 '학번'을 기본키로 정의하면 '주민번호'는 대체키가 된다.

슈퍼키 (Super Key)

슈퍼키는 한 릴레이션 내에 있는 속성들의 부분집합으로 구성된 키로서 유일성을 만족시키지만,

최소성은 만족시키지 못하는 키들이다.
 
ex) <학생> 릴레이션에서 '학번', '주민번호', '학번'+'주민번호', '학번'+'주민번호'+'성명' 등은 모두 슈퍼키가 될 수 있다. 

 

 외래키 (Foreign Key)

  • 외래키는 한 릴레이션의 속성이 참조하는 릴레이션의 기본키와 대응되어 릴레이션 간의 참조 관계를 표현하는데 사용된다.
  • 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없습니다. (참조 무결성 조건)

ex) <수강> 릴레이션이 <학생> 릴레이션을 참조하고 있으므로 <학생> 릴레이션의 '학번'은 기본키이고, <수강> 릴레이션의 '학번'은 외래키가 된다. 즉 각 릴레이션의 입장에서 속성은 기본키가 되기도하고, 외래키가 되기도 한다.
ex) <수강> 릴레이션의 '학번'에는 <학생> 릴레이션의 '학번'에 없는 값은 입력할 수 없다.

 

 

출처 : https://valuefactory.tistory.com/704

profile

만쥬의 개발일기

@KangManJoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!