1

あなたの知恵が必要です。私は、従来の asp から mvc へのシステムの大規模なオーバーホールを行っている最中であり、その過程で、SQL Server 2008 r2 の主要なテーブル (MAIN と呼びます) をリファクタリングしています。このテーブルには 100 を超える列があり (私はこれについて責任を負いません)、パフォーマンス、柔軟性、および保守性のために構造を 7 つのテーブルに移動しています。ただし、新しいコードと古いコードは、多くの古いページと新しいページで MAIN テーブルを参照します。新しいテーブルへスムーズに、そして徐々に移行したいと考えており、アクティブなビジネスのコア サイトです。私を助けてください。

既存のデータを移行したら、

私は考えました:

1.) MAIN テーブルと 7 つの NEW テーブルの両方で、標準の挿入、更新、および削除トリガーを使用します。無限トリガー ループのキャッチ (http://stackoverflow.com/questions/2237499/sql-server-trigger-loop) を含める必要があります。

2.) NEW テーブルを参照して、MAIN テーブルをエミュレートするビューを作成します。ビューで INSTEAD OF トリガーを使用して、ビューを介してテーブルを挿入および更新します。これにより、MAIN テーブルをすぐに削除できます。

どちらがより理にかなっていますか? どちらかが非常に愚かですか?両方?私は間違いなくデータベース管理者ではありませんが、これを最初から正しく行う必要があります。

ありがとうございました。

4

1 に答える 1

0

アプリがデータベース テーブルに直接アクセスしているように思えますが、これはお勧めできません。

データベース設計を抽象化する CRUD 操作を処理するストアド プロシージャを作成することを検討していますか? 次に、ストアド プロシージャをアプリから呼び出して、すべてのデータをパラメーターとして渡すことができます。ストアド プロシージャはすべての新しいテーブルを更新するすべての作業を行い (もちろんトランザクションを使用する必要があります)、古いテーブルの使用をすぐに停止できます。

これは、複雑なビューを作成しようとするよりも簡単であり、トリガーを使用するよりも確実に可視性が高くなると思います。

于 2012-07-04T22:50:14.070 に答える