MySQL은 관계형 데이터로, 어떤 테이블의 값이 다른 테이블의 값을 참조하도록 설정해주기 위해서는 외래키(foreign key)를 사용해 두 테이블을 연결해주어야 한다.
현재 진행하는 프로젝트의 경우 로그인을 하고 글을 쓰거나 일정을 등록할 경우, 그 데이터들이 유저 정보와 연결되어 저장되어야 하기 때문에 다이어리 테이블과 일정 테이블을 멤버 테이블과 연결해주었다.
(MySQL 워크벤치 사용)
테이블을 만들고 난 후 왼쪽의 테이블 목록에서 외래키를 생성하고자 하는 테이블 위에 커서를 올리면 이렇게 수정 버튼이 나타난다.
그러면 테이블을 수정할 수 있는 설정 페이지가 뜨는데, 아래쪽에서 'Foreign Keys' 탭으로 들어간다.
외래키를 구별할 수 있도록 이름을 적어주고, 참조할 테이블을 설정한다.
마지막으로 다른 값을 참조할 현재 테이블의 속성을 참조될 다른 테이블의 속성과 연결시켜주면 끝!
근데 사실 이 글을 쓴 이유는 따로 있다. 프로젝트 배포 후 CORS 에러까지 처리를 완료했는데.. 회원 탈퇴 기능만 CORS 에러가 해결이 되지 않은 것이다.
뭔가 느낌상 CORS 에러가 아닌 것 같았다. 다른 delete 메서드를 포함한 모든 요청들이 멀쩡히 잘되는데 이것만 안되는 이유가 CORS일리 없었기 때문..
서버나 데이터베이스 상에서 오류가 생긴것 같아서 찾아보던 중, 팀원분께서 해답을 찾아주셨다.
"외래키 설정 때문에 오류가 난 것 아닌가요?"
다른 테이블에서 외래키 설정을 해 줄 때 On Delete 설정을 NO ACTION으로 해놓아서, 해당 값을 삭제하려하니 오류가 발생된 것이었다.
*ON ACTION 설정은 외래키로 참조하고 있는 값이 삭제되려고 할 때, 오류를 발생시키고 delete 요청을 취소한다.
유저 정보가 삭제될 때, 해당 유저 정보를 참조하고 있는 데이터들도 같이 삭제될 수 있도록 On Delete 설정을 CASCADE로 바꾸어 주었더니 문제가 해결되었다.