스키마에 외래 키 순환이 있을 때 Postgres 시드하기
데이터베이스 시딩에서 흔히 발생하는 문제는 순환 외래 키 종속성을 만나는 것입니다. 이는 삽입이 진행되기 전에 두 테이블이 서로의 존재를 필요로 할 때 발생합니다. 예를 들어, "users" 테이블은 "organizations" 테이블을 참조하는 "organization_id"를 필요로 할 수 있으며, "organizations" 테이블은 "users" 테이블을 참조하는 "owner_user_id"를 필요로 할 수 있습니다. 일반적인 INSERT 문은 각 삽입이 외래 키 제약 조건을 위반하기 때문에 이 문제를 해결할 수 없습니다. 기존 조직 없이는 "users" 테이블을 채울 수 없고, 기존 사용자 없이는 "organizations" 테이블을 채울 수 없습니다. 이는 어느 테이블도 먼저 시딩할 수 없는 "닭과 달걀" 문제를 야기합니다. 이를 극복하기 위해 이러한 외래 키 순환을 가진 Postgres 데이터베이스를 시딩하기 위한 대안적인 전략이 필요합니다. 이 글은 이러한 시딩 문제를 처리하는 세 가지 효과적인 방법을 제시하는 것을 목표로 합니다. 또한 주어진 상황에 가장 적합한 전략을 선택하는 데 대한 지침도 제공할 것입니다. 제공된 예시는 Postgres 18을 사용하지만, 개념은 다른 버전 및 RDBMS에도 대부분 적용 가능합니다.