본문 바로가기
정리

기본키(Primary key)와 외래키(Foreign key)

by HTT 2023. 5. 4.
Keys

 

: 키(key)는 DB에서 조건을 만족하는 레코드를 찾거나 순서대로 정렬할 때 레코드를 서로 구분할 수 있는 기준이 되는 속성을 뜻한다.

 

키(key)란 특정 튜플을 식별할 때 사용하는 속성 혹은 속성의 집합을 말하며, 키의 종류는 기본키, 슈퍼키, 후보키, 대체키, 외래키 등으로 나뉜다.

 

 

 

키의 종류

 

  • Super key (수퍼키)
  • Candidate key (후보키)
  • Primary key (기본키)
  • Alternate key (대체키)
  • Foreign key (외래키)
  • Composite key (복합키)

 

 

 

기본 키(Primary key)

 

기본 키(Primary key)는 유일성과 최소성을 가지며(후보키), 해당 레코드를 식별할때 기준이 되는 반드시 필요한 키이다.

 

- 테이블은 하나의 기본 키 제약 조건만 포함할 수 있다.
- 값의 변동이 잦은 후보키는 기본키로 부적절하다.

- NULL값을 가질수 있는 속성이 포함된 후보키는 부적절하다.
- 후보키 중 단순한 키를 기본키로 선택한다.
- 기본 키는 16개 열을 초과할 수 없으며 총 키 길이가 900바이트를 넘을 수 없다.
- 기본 키 제약 조건 내에서 정의된 모든 열은 NOT NULL로 정의되어야 한다. NULL 허용 여부를 지정하지 않은 경우에는 기본 키 제약 조건에 참여하는 모든 열의 NULL 허용 여부가 NOT NULL로 설정된다.

 

 

 

외래 키(Foreign key)

 

외래 키(Foreign key)는 테이블간의 관계를 나타낼때 사용하며, 다른 테이블의 기본키를 참조해 외래키로 사용한다. 즉, 한 테이블의 외래키는 연결되어있는 다른 테이블의 기본키중 하나다.

 

- 관계 데이터 모델의 릴레이션 간의 관계를 표현한다.
- 다른 릴레이션의 기본키를 참조한다.
- 참조되는 값(기본키)이 변경하면 참조하는 값(외래키)도 변경된다.
- 참조되고 있는 값은 기본키에서 삭제할 수 없다(참조하지 않은 값은 삭제 가능).
- NULL 값과 중복 값이 허용된다.
- 다른 릴레이션의 기본키를 참조하지 않고 자신의 기본키를 참조하는 외래키도 사용 가능하다.

 

외래 키 설정을 따로 하는 이유는 데이터의 무결성 때문이다.

* 무결성 : 신뢰할 수 있는 서비스 제공을 위해서 의도하지 않은 요인에 의해 데이터, 소프트웨어, 시스템 등이 변경되거나 손상되지 않고 완전성, 정확성, 일관성을 유지함을 보장하는 특성.

 

 

 

 

 

 

 

참고 및 출처

https://learn.microsoft.com/ko-kr/sql/relational-databases/tables/primary-and-foreign-key-constraints?view=sql-server-ver16

https://change-words.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4DB-%EA%B8%B0%EB%B3%B8%ED%82%A4%EC%99%80-%EC%99%B8%EB%9E%98%ED%82%A4%EC%9D%98-%EA%B4%80%EA%B3%84

https://velog.io/@kon6443/DB-%EA%B8%B0%EB%B3%B8%ED%82%A4-%EC%99%B8%EB%9E%98%ED%82%A4-%ED%9B%84%EB%B3%B4%ED%82%A4-%EB%B3%B5%ED%95%A9%ED%82%A4-%EA%B0%9C%EB%85%90-4x1bgz5w#span-stylecolorrgb12217389-%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80-%ED%82%A4key%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%ED%95%B4-span

'정리' 카테고리의 다른 글

서블릿(Servlet)이란?  (0) 2023.05.14
ERD(Entity Relationship Diagram)  (0) 2023.05.08
MVC1, MVC2 차이점  (0) 2023.05.01
동기와 비동기의 차이  (0) 2023.04.21
MySQL  (0) 2023.04.19

댓글