집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 외래 키는 고유하지 않은 인덱스를 참조할 수 있으며 그 의미는 무엇입니까?
MySQL 외래 키가 고유하지 않은 인덱스를 참조합니다
기존 데이터베이스 이론과 달리 MySQL에서는 외래 키 제약 조건이 참조된 테이블의 고유하지 않은 키를 참조하도록 허용합니다. 이로 인해 특히 "ON DELETE CASCADE" 동작을 처리할 때 제약 조건 실행이 모호해질 수 있습니다.
외래 키 제약 조건 이해
외래 키 제약 조건은 하위 테이블(Table1)의 행이 상위 테이블(Table2)의 유효한 데이터 행을 참조하도록 보장합니다. 일반적으로 이 제약 조건에는 참조된 열(두 테이블의 열 2) 간에 일대일 관계가 필요합니다.
MySQL 고유하지 않은 인덱스 참조
그러나 MySQL에서는 외래 키가 고유하지 않은 열(표 2의 열 2)을 참조할 수 있습니다. 이를 통해 기존의 일대일 요구 사항이 완화되어 여러 하위 테이블 행이 상위 열의 동일한 값을 참조할 수 있습니다. 여러 행에 존재할 수 있는 값을 검색할 때 쿼리 성능을 향상시키기 위해 고유하지 않은 인덱스가 존재합니다.
실용적 고려사항
MySQL은 이 동작을 지원하지만 실제적인 이유로 고유하지 않은 열을 참조하는 외래 키는 피해야 합니다. "ON DELETE CASCADE" 동작을 사용할 때 상위 테이블(Table2)에서 행을 삭제하면 하위 테이블(Table1)에서 여러 행이 연속 삭제되어 의도하지 않은 결과가 발생할 수 있습니다.
MySQL 문서 가이드
MySQL 문서에서는 고유하지 않은 키나 null 허용 키를 참조하는 외래 키를 사용하지 말 것을 명시적으로 권고합니다. 잘 정의된 동작을 얻으려면 고유하고 null이 아닌 키만 참조하도록 외래 키를 제한하는 것이 좋습니다.
위 내용은 MySQL 외래 키는 고유하지 않은 인덱스를 참조할 수 있으며 그 의미는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!