본문 바로가기

CS

기본키(Primary Key), 외래키(Foreign Key)

Primary Key, Foreign Key에 대해 설명해주세요.

 

기본키(Primary Key)는 관계형 데이터베이스 관리 시스템 테이블에서 모든 행을 고유하게 식별하는 필드 또는 필드의 집합입니다. 데이터베이스 테이블 내에서 각 레코드는 오직 하나의 값만 존재해야하고 기본키를 구성하는 어떤 속성도 널 값을 가질 수 없는 개체 무결성 제약조건이 있습니다. 따라서 기록을 삭제하거나 업데이트 하는 경우 데이터 무결성을 확인하기 위해 지정한 조치가 수행됩니다. 기본키는 식별자 역할을 하며 빠른 검색을 가능하게 하며 상위 테이블에 대한 삭제 또는 업데이트 작업을 거부하려면 제한 작업이 수행됩니다. 외래키(Foreign Key)는 두 테이블 간의 관계를 생성하는 열입니다. 외래키는 참조 무결성 제약조건을 가지고 있어 데이터의 일관성을 보장합니다. 참조하는 티이블(자식 테이블)의 값이 참조되는 테이블(부모 테이블)의 칼럼의 값에 존재하면 되는 것으로 외래키는 NULL 값이거나 또는 부모 테이블의 기본키 or 고유 키 값과 동일해야 합니다.

 

데이터베이스 키(Key)

키는 관계(테이블)에서 행(튜플)을 식별하는데 도움이 되는 속성입니다. 이를 통해 두 테이블 간의 관계를 찾을 수 있다.

키를 사용하면 해당 테이블에 있는 하나 이상의 열을 조합하여 테이블의 행을 고유하게 식별할 수 있습니다. 데이터베이스 키는 테이블에서 고유한 레코드나 행을 찾는 데에도 유용하다.


기본키(Primary Key)

관계형 데이터베이스 관리 시스템의 테이블에 있는 모든 행을 고유하게 식별하는 필드 또는 필드의 집합이다.

 

개체 무결성 제약 조건 

  • 기본키를 구성하는 어떤 속성도 널 값을 가질 수 없으며, 오직 하나의 값만 존재해야 한다 ( UNIQUE + NOT NULL )
  • 기본키는 테이블에 저장된 행 데이터를 임의로 식별하기 위한 것이며, 하나의 테이블에 하나의 기본 키 제약을 정의할 수 있다.
  • 추가적으로 기본키 설정 시, 자동으로 기본 키에 해당하는 컬럼으로 인덱스가 생성된다.

 

  • 데이터베이스 테이블의 모든 레코드를 식별한다.
  • Primary Key는 테이블에서 기본적인 식별자 역할을 하며, 빠른 검색을 가능하게 합니다.
  • 기록을 삭제하거나 업데이트하는 경우 데이터 무결성을 확인하기 위해 지정한 조치가 수행된다.
  • 상위 테이블에 대한 삭제 또는 업데이트 작업을 거부하려면 제한 작업을 수행한다.
  • DBMS 테이블을 물리적으로 구성할 때마다 데이터는 클러스터형 인덱스의 순서로 구성된다.

외래키(Foreign key)

외래키는 두 테이블 간의 관계를 생성하는 열이다. 외래키의 목적은 데이터 무결성을 유지하고 엔티티의 서로 다른 두 인스턴스 간 탐색을 허용하는 것이다. 이는 다른 테이블의 기본키를 참조하므로 두 테이블 간의 상호 참조 역할을 합니다.

 

  • 외래키는 상위 테이블의 기본키를 사용하여 엔티티를 마이그레이션하는데 도움이 된다.
  • 외래키를 사용하면 두 개 이상의 테이블을 함께 연결 할 수 있다.
  • 데이터의 일관성을 보장한다.
  • 외래키는 상위 테이블의 기본키와 열 또는 열 조합을 일치시키는데 사용될 수 있다.
  • SQL 외래키 제약 조건은 데이터 상위의 참조 무결성이 하위 테이블의 값과 일치하는지 확인하는데 사용

참조 무결성 제약조건

  • 자식 릴레이션의 외래 키의 값은 참조된 부모 릴레이션의 기본 키 값과 같아야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 조건입니다.
  • RDBMS에서는 컬럼의 값에 따라 테이블끼리 연결하는데 값을 참조하는 쪽의 테이블을 자식 테이블, 값을 가진 컬럼을 외래 키 라고 합니다.
  • 참조되는 쪽의 테이블을 부모 테이블, 값을 가진 컬럼을 부모 키 라고 부르며 부모 키는 기본 키 또는 고유 키여야 합니다.
  • 즉, 참조하는 테이블 (자식 테이블)의 값이 참조되는 테이블 (부모 테이블)의 컬럼의 값에 존재하면 된다는 것입니다.
    (외래 키는 NULL 값이거나 또는 부모 테이블의 기본 키 or 고유 키 값과 동일해야 한다)


기본키 외래키
기본 키 제약 조건은 테이블의 모든 행을 고유하게 식별하는 열 또는 열 그룹
관계형 데이터베이스 관리 시스템
외래키는 두 테이블 간의 관계를 생성하는 열
테이블의 레코드를 고유하게 식별하는데 도움이 됩니다. 다른 테이블의 기본키인 테이블의 필드
기본키는 null 값을 허용하지 않습니다 외래키는 여러개의 null 값을 허용할 수 있습니다.
기본키는 클러스터형 인덱스이며, DBMS 테이블의 데이터는 클러스터형 인덱스의 순서에 따라 물리적으로 구성된다. 외래키는 클러스터형 또는 비클러스터형 인덱스를 자동으로 생성할 수 없다.
테이블에는 단일 기본키가 있을 수 있다. 한 테이블에 여러 개의 외래키를 가질 수 있다
기본 키 값은 상위 테이블에서 제거할 수 없다. 외래 키 값은 하위 테이블에서 제거될 수 있다.
임시 테이블에 기본 키를 암시적으로 정의할 수 있다. 로컬 또는 전역 임시 테이블에 외래 키를 정의할 수 없다.
기본 키는 클러스터형 인덱스 기본적으로 클러스터형 인덱스가 아니다
두 행은 기본키에 대해 동일한 값을 가질 수 없다 외래키에는 중복된 값이 포함될 수 있다.
테이블 열에 값을 삽입하는데 제한이 없다. 외래키 테이블에 값을 삽입하는 동안 해당 값이 기본키 열에 있는 지 확인해야 한다.

 

 

 

Reference


https://www.guru99.com/ko/difference-between-primary-key-and-foreign-key.html

https://shuu.tistory.com/68

 

'CS' 카테고리의 다른 글

CORS(Cross Origin Resource Sharing)  (1) 2024.01.02
NoSQL과 RDBMS의 특징과 장단점  (0) 2024.01.01
HTTP Method  (1) 2024.01.01
N+1문제의 발생이유와 해결방법  (0) 2023.12.27
SpringSecurity와 인증, 인가, JWT의 구조, 동작 과정  (1) 2023.12.27