1

이 상황에서 외래 키를 설정해야합니까? 나는 mysql에서 특히 데이터베이스 디자인이 약하다. 만약 내가 그들을 위해 외래 키를 설정하고 싶다면 내가 그들을 어떻게 설정해야 하는가? 사람들이 삭제 한 경우 ... people_id에 대한 모든 참조가 함께 삭제됩니다. 테이블이 너무 많을 때 설정할 수 있습니까? 응답MySQL 외래 키 : 내가 설정해야합니까?

enter image description here

답변

4

예에 대한 들으. 외래 키 제약 조건은 참조 무결성을 유지합니다. 이는 데이터가 안정적이고 높은 품질을 보장하도록하는 주요 교리입니다. 그렇지 않으면 people_address 테이블이 people 테이블에없는 people_id 값을 참조 할 수 있고 고아가 될 수 있습니다. 외래 키 제약 조건은 그러한 일이 일어나지 않도록 방지합니다.

그래서 해보십시오. 정말 좋은 이유가 없습니다. ;

CONSTRAINT FOREIGN KEY (people_id)를 추가 people_email 표는 DELETE CASCADE ON 사람들 (ID)를 참고 문헌 ALTER

:

같은하여 people_email 테이블에 다음과 같은 외래 키를 정의

이는 해당 테이블의 people_id가 people에 존재하지 않는 레코드를 people_email에 입력 할 수 없다는 것을 의미합니다. 또한 people의 부모 행을 삭제하면 people_email에서이를 참조하는 행이 자동으로 삭제됩니다.

개인적으로 하위 테이블에서 수동으로 모든 행을 삭제하고 계단식 삭제를 사용하지 않는 것이 좋습니다. 그것은 응용 프로그램 dev에 약간의 작업이지만, 그것은 나를 더 안전하게 느끼게하고 또한 잠금을 제어하고 쿼리가 가능한 한 효율적임을 보장합니다.

+0

내가 무엇을 설정해야할지 모르겠습니까? 예. people_id를 people_id로 만들고, 외래 키를 db.people.id에 연결하고 계단식으로 업데이트 및 삭제 하시겠습니까? 사람들이 지울 때 주소가 삭제되기를 원합니다. 사람들이 사람들을 업데이트 할 때 사람들이 주소를 편집하는 것 외에는 주소에 영향을 미치지 않을 것입니다 ... – 1myb

+1

@ spencer-lim 귀하의 질문에 따라 답변을 업데이트했습니다. – squawknull