>데이터 베이스 >MySQL 튜토리얼 >MySQL 외래 키는 고유하지 않은 인덱스를 참조할 수 있으며 그 의미는 무엇입니까?

MySQL 외래 키는 고유하지 않은 인덱스를 참조할 수 있으며 그 의미는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-08 09:01:42408검색

Can MySQL Foreign Keys Reference Non-Unique Indices, and What are the Implications?

MySQL 외래 키가 고유하지 않은 인덱스를 참조합니다

기존 데이터베이스 이론과 달리 MySQL에서는 외래 키 제약 조건이 참조된 테이블의 고유하지 않은 키를 참조하도록 허용합니다. 이로 인해 특히 "ON DELETE CASCADE" 동작을 처리할 때 제약 조건 실행이 모호해질 수 있습니다.

외래 키 제약 조건 이해

외래 키 제약 조건은 하위 테이블(Table1)의 행이 상위 테이블(Table2)의 유효한 데이터 행을 참조하도록 보장합니다. 일반적으로 이 제약 조건에는 참조된 열(두 테이블의 열 2) 간에 일대일 관계가 필요합니다.

MySQL 고유하지 않은 인덱스 참조

그러나 MySQL에서는 외래 키가 고유하지 않은 열(표 2의 열 2)을 참조할 수 있습니다. 이를 통해 기존의 일대일 요구 사항이 완화되어 여러 하위 테이블 행이 상위 열의 동일한 값을 참조할 수 있습니다. 여러 행에 존재할 수 있는 값을 검색할 때 쿼리 성능을 향상시키기 위해 고유하지 않은 인덱스가 존재합니다.

실용적 고려사항

MySQL은 이 동작을 지원하지만 실제적인 이유로 고유하지 않은 열을 참조하는 외래 키는 피해야 합니다. "ON DELETE CASCADE" 동작을 사용할 때 상위 테이블(Table2)에서 행을 삭제하면 하위 테이블(Table1)에서 여러 행이 연속 삭제되어 의도하지 않은 결과가 발생할 수 있습니다.

MySQL 문서 가이드

MySQL 문서에서는 고유하지 않은 키나 null 허용 키를 참조하는 외래 키를 사용하지 말 것을 명시적으로 권고합니다. 잘 정의된 동작을 얻으려면 고유하고 null이 아닌 키만 참조하도록 외래 키를 제한하는 것이 좋습니다.

위 내용은 MySQL 외래 키는 고유하지 않은 인덱스를 참조할 수 있으며 그 의미는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.