2012-07-23 3 views
1

이런 종류의 것이 효과가 있는지 궁금합니다.MySQL 양방향 외래 키?

두 테이블이 있다고합시다 : 회사와 주소. 각 회사는 하나의 주소 만 가질 수 있습니다. 단순화 된 스키마는 다음과 같습니다. UPDATE CASCADE ON DELETE SET NULL의 ON> ADDRESSES.id -

COMPANIES 
id 
address_id 
name 
(...) 

ADDRESSES 
id 
first_name 
street 
(...) 

지금, 나는 COMPANIES.address_id에 외래 키를 추가 할. 하지만 회사가 삭제되면 주소도 삭제되기를 원합니다. 따라서 다른 방법은 ADDRESSES.id -> COMPANIES.address_id ON DELETE CASCADE입니다. 이것이 안전하고 가능합니까?

+2

주소를 삭제하면 회사를 삭제 하시겠습니까? 하나를 제거하고 새 것을 추가하면 어떨까요? 반대로 회사를 삭제하면 동의하지 않습니다. – Joe

+0

각 회사가 하나의 주소를 가질 수 있다면 왜 그냥 하나의 테이블을 가지고 있지 않습니까? – Mark

+0

@Joe 제가 아는 바로는이 경우 주소가 삭제되면 회사가 삭제되지 않을 것입니다. address_id 만 NULL입니다. 회사가 삭제되면 주소가 삭제되기를 원합니다. –

답변

2

아마도 외래 키 대신 트리거를 사용하면 문제를 해결할 수 있습니다.

create trigger addr_delete 
after delete on companies for each row 
begin 
    delete from addresses where id=old.address_id 
end