기본 키와 외래 키의 차이점
기본 키와 외래 키의 주요 차이점
- 기본 키 제약 조건은 관계형 데이터베이스 관리 시스템의 테이블에 있는 모든 행을 고유하게 식별하는 열이고, 외래 키는 두 테이블 간의 관계를 생성하는 열입니다.
- 기본 키는 null 값을 허용하지 않지만 외래 키는 여러 null 값을 허용할 수 있습니다.
- 테이블에는 기본 키가 하나만 있을 수 있지만, 외래 키는 여러 개가 있을 수 있습니다.
- 기본 키 값은 상위 테이블에서 제거할 수 없지만 외래 키 값은 하위 테이블에서 제거할 수 있습니다.
- 두 행은 기본 키에 대해 동일한 값을 가질 수 없습니다. 반면에 외래 키에는 중복된 값이 포함될 수 있습니다.
- 외래 키 테이블에 값을 삽입하는 동안 테이블 열에 값을 삽입하는 데에는 제한이 없습니다. 해당 값이 기본 키 열에 있는지 확인하세요.

여기에서는 기본키와 외래키의 차이점을 분석하고 장단점을 종합적으로 평가해보겠습니다.
기본 키란 무엇입니까?
기본 키 제약 조건은 관계형 데이터베이스 관리 시스템의 테이블에 있는 모든 행을 고유하게 식별하는 열 또는 열 그룹입니다. 중복될 수 없습니다. 즉, 동일한 값이 테이블에 두 번 이상 표시되어서는 안 됩니다.
테이블에는 기본 키가 두 개 이상 있을 수 없습니다. 그만큼 기본 키 열 또는 테이블 수준에서 정의할 수 있습니다. 복합 기본 키를 생성하는 경우 테이블 수준에서 정의해야 합니다.
기본 키의 예
구문 :
다음은 기본 키의 구문입니다.
CREATE TABLE <Table-Name> ( Column1 datatype, Column2 datatype, PRIMARY KEY (Column-Name) . );
여기
- Table_Name은 생성해야 하는 테이블의 이름입니다.
- Column_Name은 기본 키가 있는 열의 이름입니다.
예:
StudID | 롤 아니오 | 이름 | 성 | 이메일 |
---|---|---|---|---|
1 | 11 | 남자 이름 | 가격 | abc@gmail.com |
2 | 12 | Nick | 라이트 | xyz@gmail.com |
3 | 13 | 다나 | 나단 | mno@yahoo.com |
위의 예에서 우리는 StudID, Roll No., First Name, Last Name, Email과 같은 열이 있는 학생 테이블을 만들었습니다. StudID는 테이블의 다른 행을 고유하게 식별할 수 있기 때문에 기본 키로 선택되었습니다.
기본 키를 사용하는 이유는 무엇입니까?
수년 동안 데이터베이스 시스템을 다루면서 기본 키를 사용할 때 다음과 같은 단점과 이점을 언급했습니다.
- 기본 키의 주요 목적은 데이터베이스 테이블의 모든 레코드를 식별하는 것입니다.
- 다른 사람이 Null 값을 입력하는 것을 허용하지 않을 때 기본 키를 사용할 수 있습니다.
- 귀하가 기록을 삭제하거나 업데이트하는 경우 데이터 무결성을 보장하기 위해 귀하가 지정한 조치가 취해질 것입니다.
- 부모 테이블에 대한 삭제 또는 업데이트 작업을 거부하려면 제한 작업을 수행합니다.
- DBMS 테이블을 물리적으로 구성할 때마다 데이터는 일련의 클러스터형 인덱스로 구성됩니다.
외래 키란 무엇입니까?
외래 키는 두 테이블 간의 관계를 생성하는 열입니다. 외래 키의 목적은 데이터 무결성을 유지하고 엔터티의 서로 다른 두 인스턴스 간 탐색을 허용하는 것입니다. 이는 다른 테이블의 기본 키를 참조하므로 두 테이블 간의 상호 참조 역할을 합니다. 데이터베이스의 모든 관계는 외래 키로 지원되어야 합니다.
외래 키의 예
구문 :
다음은 외래 키의 구문입니다.
CREATE TABLE <Table Name>( column1 datatype, column2 datatype, constraint (name of constraint) FOREIGN KEY [column1, column2...] REFERENCES [primary key table name] (List of primary key table column) ...);
여기
- Table Name 매개변수는 생성하려는 테이블의 이름을 나타냅니다.
- 매개변수 컬럼1, 컬럼2...는 테이블에 추가해야 하는 열을 나타냅니다.
- 제약조건은 생성 중인 제약조건의 이름을 나타냅니다.
- 참조는 기본 키가 있는 테이블을 나타냅니다.
예:
부서 코드 | 부서명 |
---|---|
001 | 과학 |
002 | 영어 |
005 | 컴퓨터 |
교사 ID | F이름 | 이름 |
---|---|---|
B002 | 데이비드 | Warner |
B017 | 사라 | 조셉 |
B009 | 마이크 | 브런턴 |
위의 예에는 교사와 학교의 부서라는 두 개의 테이블이 있습니다. 그러나 어느 부서에서 어떤 검색이 작동하는지 확인할 방법이 없습니다.
이 테이블에서는 Deptcode의 외래 키를 교사 이름에 추가하여 두 테이블 간의 관계를 만들 수 있습니다.
교사 ID | 부서 코드 | F이름 | 이름 |
---|---|---|---|
B002 | 002 | 데이비드 | Warner |
B017 | 002 | 사라 | 조셉 |
B009 | 001 | 마이크 | 브런턴 |
이 개념은 참조 무결성이라고도 합니다.
외래 키를 사용하는 이유는 무엇입니까?
내가 본 바에 따르면 외래 키를 구현하는 중요한 이유는 다음과 같습니다.
- 외래 키는 상위 테이블의 기본 키를 사용하여 엔터티를 마이그레이션하는 데 도움이 됩니다.
- A 외래 키 두 개 이상의 테이블을 함께 연결할 수 있습니다.
- 이는 데이터베이스 데이터를 일관되게 만듭니다.
- 외래 키를 사용하면 열 또는 열 조합을 상위 테이블의 기본 키와 일치시킬 수 있습니다.
- SQL 외래 키 제약 조건은 데이터 부모의 참조 무결성이 자식 테이블의 값과 일치하는지 확인하는 데 사용됩니다.
기본 키와 외래 키의 차이점
개인적으로 경험한 것처럼 기본 키와 외래 키의 중요한 차이점을 공유하겠습니다.
비교 기준 | 기본 키 | 외래 키 |
---|---|---|
정의 | 기본 키 제약 조건은 테이블의 모든 행을 고유하게 식별하는 열 또는 열 그룹입니다. 관계형 데이터베이스 관리 시스템. | 외래 키는 두 테이블 간의 관계를 생성하는 열입니다. |
Basic | 이는 테이블의 레코드를 고유하게 식별하는 데 도움이 됩니다. | 다른 테이블의 기본 키인 테이블의 필드입니다. |
NULL | 기본 키는 null 값을 허용하지 않습니다. | 외래 키는 여러 개의 null 값을 허용할 수 있습니다. |
색인 | 기본 키는 클러스터형 인덱스이며, DBMS 테이블의 데이터는 물리적으로 클러스터형 인덱스의 시퀀스에 따라 구성됩니다. | 외래 키는 클러스터형 인덱스나 비클러스터형 인덱스를 자동으로 생성할 수 없습니다. |
카운트 | 테이블에는 단일 기본 키가 있을 수 있습니다. | 한 테이블에 여러 개의 외래 키를 가질 수 있습니다. |
삭제 | 기본 키 값은 상위 테이블에서 제거할 수 없습니다. | 외래 키 값은 하위 테이블에서 제거될 수 있습니다. |
임시 테이블 | 임시 테이블에 기본 키를 암시적으로 정의할 수 있습니다. | 로컬 또는 전역 임시 테이블에는 외래 키를 정의할 수 없습니다. |
관계 | 기본 키는 클러스터형 인덱스입니다. | 기본적으로 클러스터형 인덱스가 아닙니다. |
복사 | 두 행은 기본 키에 대해 동일한 값을 가질 수 없습니다. | 외래 키에는 중복된 값이 포함될 수 있습니다. |
삽입 | 테이블 열에 값을 삽입하는 데에는 제한이 없습니다. | 외래 키 테이블에 값을 삽입하는 동안 해당 값이 기본 키 열에 있는지 확인하세요. |
기본 키와 외래 키 중에서 선택하는 방법
우리가 살펴본 바에 따르면 기본 키는 테이블 항목을 고유하게 식별하고 외래 키는 테이블 전체에서 이러한 항목을 연결합니다. 둘 다 데이터 무결성을 유지하고 효율적인 데이터 검색을 촉진하는 데 중요합니다.