2

「元に戻す」または「ロールバック」タイプのシナリオをコーディングしようとしています。私の一部は、これを複雑にしすぎていると考えており、以前に解決されたに違いありません。

背景: 私は製品 (例: 本) を持っています。製品には 20 のフィールドがあります。製品にはメディア タイプ (PDF、ハードコピー、EPUB) があり、各メディア タイプには複数の価格 (価格、場所、つまりヨーロッパ、アジア、アメリカ) があります。

以前の質問を見ると、memento パターンが最も近いようですが、マルチ レベルを行う方法がわかりません。

例:変更 1 - 製品「Coding for Dummies」を作成します。これはハードコピーで入手でき、ヨーロッパでは 100 ドル、アジアでは 75 ドルで入手できます。

変更 2 - ヨーロッパのハードコピーの価格を $90 に変更します。PDF を追加すると、ヨーロッパで 90 ドル、アジアで 75 ドルかかります

変更 3 - ハードコピー レコードを削除する

変更 3 は間違いでした。変更 2 にロールバックしたいと思います。

以前の質問を見るMementoパターンが最も近いようですが、非常に多くのデータを複製します。つまり、変更 2 と 3 では、製品、メディア、および価格を繰り返しています。

私が使用しているデータセットには、ほぼ 1,000,000 個の製品があります。(上記の例は単純化されています)実際には、Product には約 50 フィールド、Media Type には約 15 フィールドがあります。

より良い方法はありますか?

4

2 に答える 2

1

テーブルに日付フィールドを実装します。

このようにして、価格が 2011 年 3 月 1 日か何かで 21 から 30 に変更されたという事実を入力することになり、古い値を強打するだけではありません。そうすれば、最新の変更だけでなく、日付を操作するだけで古い価格設定に戻すことができます。

于 2010-07-20T22:52:31.000 に答える
0

複数のレベルが何を意味するのか、投稿でデータベースが言及されている理由はよくわかりませんが、一般的に、オブジェクト指向プログラムで元に戻したりやり直したりするには、コマンドまたはメメントの両方が適切なオプションです。どちらの方法でも大丈夫です。

データを複製するとはどういう意味ですか? 製品の状態の変更を覚えているだけです。後で元に戻したい場合は、他に方法はありません...

于 2010-07-20T22:44:23.223 に答える