大規模なシードされたデータベースでエラーを修正するより健全な方法を探しています。解決策は大歓迎です。正気であれば問題ありません (ジョブのツール、つまりリレーショナル データベースについて質問してください)。データを切り捨ててすべての値を再シードする余裕はありません。特にデータの整合性が重要になる場合。これは、エラーを説明するために再シード全体を実行する必要なく、開発者のエラーに対して十分に堅牢である必要があります。移行/MySQL/リレーショナル DB は、シードされたデータセットに対して十分な柔軟性を持っていないようです。私の知識が欠けているところです。
シナリオ:
移行クラスでシード (JSON) を使用する Laravel プロジェクトについては、[Laravel : Migrations & Seeding for production data][1] を参照してください。
- 名前、体重、身長、チーム、生年月日などの 10 個の値を含む、フットボール選手を表す MySQL データベース 10k JSON オブジェクト。オブジェクトは繰り返し処理され、AI ID を使用して DB に挿入されます。
問題: MySQL の「高さ」列は、開発者のエラーにより、元々 int 型で float 型ではなかったため、すべての高さが 2m に丸められました。
移行により、タイプをフロートに変更しましたが、すべての高さの値は、まだすべて 2m (たとえば、1.76 ではない) であるため、再シードによって変更する必要があります。JSON からのオブジェクトには MySQL 挿入で一意の ID が割り当てられるため、データの整合性を維持しながら列の値を変更するには、何千もの JSON オブジェクトを MySQL に再シードする必要があり、時間とコストについて考える必要があります。
明確にするために、シード元の ID のない JSON オブジェクトがあります。それぞれのサッカー リーグ用にいくつかの JSON ファイルがあるので、これらをモジュラー方式でシードします。つまり、新しいプレーヤーを挿入するときです。変更を加える必要がある場合、JSON 内のオブジェクトとデータベース内のオブジェクトの間に整合性がありません。複合キーを作成するために必要な値を操作することを考えましたが (?)、それでもデータが非常に壊れやすく、開発者のエラーが発生しやすいように感じます、これを適切に管理する方法が必要です。特に、タイムスタンプ値に基づいて移行を実行することによってのみ制限されているため、Laravel の移行/シードが提供するとは思わない (実行した特定の移行ファイルをロールバックするように指定することはできません)ついさっき)。データベースの「ソース管理」が存在する場合は、おそらく良い考えです。投稿にはdatabase-theoryおよびdata-integrityというタグが付けられていることに注意してください。再シードできることはわかっていますが、これには数時間かかる場合があります。
乾杯。