PreNote:別名手洗い; これはブラウンフィールドプロジェクトで行われている作業です
次のような「ProductLine」テーブルがあります
| ProductLineID(pk)| ProductID(fk)| ResellerID(fk)| その他のもの| | -------------------- | ---------------- | ----------- ------ | ------------- | | 1 | 28 | 298818 | -|
現在のシステムには、製品テンプレートラインのテーブルがあり、新しいリセラーが作成されるたびに、そのリセラーにリンクされた一連の製品ラインが作成されます。そのリセラーが組織の製品を編集したい場合は、アカウントに基づいて表示されるという考えです。
これらの製品ラインは、販売テーブル(カートテーブルにリンクされている)にリンクされている販売ラインテーブルで使用されます。
さまざまな理由で製品ラインに接続されたテーブルがいくつかあります。
私が見ていたのは、製品ラインの重複排除コピーを作成し、一部のデータを削除して、再販業者が変更を加えた場合にのみ新しいラインが作成されるようにすることでした。したがって、ページが124,000行を超えて69行に減少します(5年間でこの機能を使用した人はいません)。
次に、古いProductLineテーブルを参照として使用し、既存のデータ(販売ラインテーブルのProductLineId )を変更して、元の行ProductIDを読み取り、新しい一致するLineID(製品ごとに1つ)を見つけて、新しいProductLineIDを指すようにします。。
これを行うための最良の方法は何だろうと思っていました。カーソルが頭に浮かびますが、ピッチフォークを使用してDBAを広範囲から引き出す傾向があります。おそらく、SQLの苦痛が少ないほど、いくつかのテーブルで同様のクエリを実行する必要があります。
視覚化を少し簡単にするために、販売ラインは次のようになります
| SaleLineId(pk)| SaleID(fk)| ProductLineId(fk)| 価格| | ----------------- | ------------- | ----------------- --- | ------- | | 1992 | 29 | 10283 | 9.00 |
追加
古いProductLineテーブルの名前をLegacyProductLineに変更する予定です。次に、重複排除して、そこから製品ラインをクリーンなProductLineTableに挿入します。
次に、SalesLine(およびその他)のProductLineIdを新しいProductLineIdに置き換える必要があります。
LegacyProductLineは、ProductLineTableのProductLineIDが何であるかを認識しません。したがって、他に一致するパラメーターがないため、それらを一致させる方法としてProductIDを検討していました。
+ ----------------- + + ----------------- + + ----------- ------- + | LegacyProductLine | | ProductLine | | セールライン| | ----------------- | | ----------------- | | ------------------ | | ProductLineId PK | | ProductLineID PK | | SaleLineId PK | |製品名| | ProductName | | ProductLineId FK | |...いくつかのもの| | ...いくつかのもの| | 料金| | ResellerID FK | | | | | | ProductID FK | | ProductId | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + ------------------ + | | | | | | | | | | | | | | | | + ----------------- + + ----------------- + 200K行26行 主に重複データを複製します
レガシーテーブルは参照用に一時的なものであり、削除されます。SaleLineテーブルのProductLineIDを変更する必要があります。
現在、SaleLineテーブルには、レガシーテーブルのProductLineIdが含まれています。これらは、ProductLineテーブルのProductLineIdを使用するために更新する必要があります。