DZone.com Feed 日本語
フォロー
スキーマに外部キーの循環がある場合のPostgresへのシード
データベースのシーディングでよくある問題は、循環的な外部キー依存に遭遇することです。これは、挿入処理を進める前に、2つのテーブルがお互いの存在を必要とする場合に発生します。例えば、「users」テーブルは「organizations」テーブルを参照する「organization_id」を必要とするかもしれませんが、「organizations」テーブルは「users」テーブルを参照する「owner_user_id」を必要とするかもしれません。通常のINSERT文では、各挿入が外部キー制約に違反するため、この問題を解決できません。「users」テーブルは既存の組織なしではデータを投入できず、「organizations」テーブルは既存のユーザーなしではデータを投入できません。これにより、どちらのテーブルも最初にシーディングできない「鶏と卵」の問題が発生します。これを克服するには、このような外部キーのサイクルを持つPostgresデータベースのシーディングには、代替戦略が必要です。この記事では、これらのシーディングの課題に対処するための3つの効果的な方法を紹介します。また、特定の状況に最も適した戦略を選択するためのガイダンスも提供します。提供される例はPostgres 18を使用していますが、これらの概念は他のバージョンやRDBMSにも広く適用可能です。