0

タイトルがわかりにくいので、以下に説明します。

小売取引を扱うシステムを構築しています。意味 - 購入。各製品にはIDがあり、POSシステムにも認識されている製品のデータベースがあります。顧客が購入すると、データは解析のためにバックエンドに送信され、保存されます。私のクライアントは、購入されたときの製品の名前を見たいと思っているので、製品名に変更があるまで、すべてがうまくいきます.

このデータを保存しながら、適切な標準形式のデータベースを維持するにはどうすればよいですか?

私が考えることができる解決策は次のとおりです。

  • 受信データをデータベース内の情報と相関させ、ID ではなく最終的なテキスト値のみを保存する非正規化。
  • すべての製品の複数のバージョンを保持し、入荷時に製品バージョンの ID を使用してトランザクションを保存するバージョン管理。これに関する問題は、小売店チェーンが成長するにつれて、ますます多くの変更が加えられることです。製品に発生すると、製品全体の複雑さが大幅に増加します。

これについて何か考えはありますか?

4

2 に答える 2

1

これを緩やかに変化するディメンションと呼びます。

あなたが言及したいずれかのソリューションが機能します。私の好みは 2 番目のバージョン管理です。レコードにeffdateandを持つ製品テーブルがあります。現在のレコード ( ) または任意の時点のレコードをenddate簡単に見つけることができます。where enddate is null

最初の方法は、いつもより「手っ取り早い」と思いますが、うまくいきます。追跡しようとしているフィールドやオブジェクトが増えると、面倒になります。ただし、一般的には、パフォーマンスに勝っています。

于 2013-06-01T15:24:15.553 に答える
0

名前を元の名前のままにしなければならない場合、最も簡単で最も信頼できる方法は、製品の名前を請求書の明細レコードに保存することです。

もちろん、ProductID を使用して製品にリンクする必要があります。

名前の変更の履歴を保持したい場合は、必要に応じて別のテーブルで行うことができます。

ProductNameID
ProductID
Date
Description

そして、請求書の品目とともに ProductNameID を保存します。

于 2013-06-01T15:23:37.593 に答える