기본키 외래키 예제
2 agosto, 2019또한 다음 섹션에서 배울 외래 키 제약 조건에 외래 키가 정의되어 있는 경우 해당 열에는 FK가 있습니다. 이러한 동그라미는 위의 다이어그램에서 녹색으로 표시됩니다. 참고: 실제로 외래 키는 다른 테이블의 고유 열(반드시 기본 키일 필요는 아님)을 가리키는 경우 다른 테이블의 기본 키 태그와는 아무 관련이 없습니다. 따라서 외래 키의 올바른 정의는 외래 키가 다른 테이블의 후보 키를 가리키는 테이블의 열입니다. 아래에서ORDERS 테이블을 만들 때 외래 키를 지정하는 방법에 대한 예제를 보여 줍니다. 다음 두 표를 살펴보십시오: 다른 흥미로운 외국 주요 예제는 여기에서 찾을 수 있습니다. 외래 키를 설명하는 첫 번째 예로 계정 데이터베이스에 송장이 있는 테이블이 있고 각 송장이 특정 공급자와 연결되어 있다고 가정합니다. 공급업체 세부 정보(예: 이름 및 주소)는 별도의 테이블에 보관됩니다. 각 공급업체에 `공급업체 번호`가 부여되어 이를 식별할 수 있습니다. 각 송장 레코드에는 해당 송장에 대한 공급자 번호가 포함된 특성이 있습니다.
그런 다음 `공급업체 번호`가 공급업체 테이블의 기본 키입니다. 송장 테이블의 외래 키는 해당 기본 키를 가리킵니다. 관계형 스키마는 다음과 같은 것입니다. 기본 키는 굵게 표시되고 외래 키는 기울임꼴로 표시됩니다. 마지막으로 SET NULL 명령은 부모 테이블에서 행을 삭제하거나 업데이트하고 자식 테이블의 외래 키 열(또는 열)을 NULL로 설정합니다. 이 작업은 상위 테이블 행이 제거될 때 하위 테이블의 행을 삭제하지 않아야 하는 경우에 유용할 수 있습니다. 다음은 테이블을 변경하여 외래 키를 지정하는 예제입니다. 이것은 ORDERS 테이블이 만들어졌고 외래 키가 아직 지정되지 않았다고 가정합니다.
부모 테이블에 없기 때문에 어떻게 외국 키가 될 수 있습니까? 외래 키의 목적은 참조된 테이블의 특정 행을 식별하는 것이므로 일반적으로 외래 키가 기본 테이블의 일부 행의 후보 키와 같거나 다른 값(NULL 값)이 없는 것이 필요합니다.] 2]). 이 규칙을 두 테이블 간의 참조 무결성 제약 조건이라고 합니다. [5] 이러한 제약 조건의 위반은 많은 데이터베이스 문제의 원인이 될 수 있으므로 대부분의 데이터베이스 관리 시스템은 null이 아닌 모든 외래 키가 참조된 테이블의 행에 해당하는지 확인하는 메커니즘을 제공합니다. [6] [7] [8] 두 테이블을 조인하기 위해 외래 키 제약 조건이 필요하지 않습니다. InnoDB 이외의 저장소 엔진의 경우 실제 효과가 없는 REFERENCES tbl_name(col_name) 절을 사용하도록 열을 정의할 때 현재 정의하고 있는 열이 다른 테이블의 열을 참조하십시오. 이 구문을 사용할 때 는 매우 중요합니다: 해당 페이지에서 “product_order” 테이블에 다른 두 테이블에 대한 외래 키가 있는 예제가 있습니다. 하나의 외래 키는 “제품” 테이블에서 두 열 인덱스를 참조합니다. 다른 하나는 “고객” 테이블의 단일 열 인덱스를 참조합니다. 인덱스는 외래 키에 대해 자동으로 생성되지 않습니다. 그러나 DBA로 정의할 수 있습니다.