2011-10-20 10 views
2

私のクライアントは長期賃貸代理店です。 は、だから我々は、このようななどを修理していると他のステータスをとることができるほかの在庫 テーブルの派生ステータスフィールド?

Goods 
    pk modelId 

Stock 
    pk stockId, fk modelId 

Rentals (rented stock) 
    pk rentalId fk stockId 

を持っており、一度に複数の状態を有することができます。

これは私の人生を在庫表に置くことをより簡単にしますが、最終的には他の表から推測できるデータを導出します。 例として、在庫数量が0の在庫を含む在庫品(賃貸されていない品目)の合計数が見つかりました。 はI借り

  • 追加、在庫表にonRepairなどのステータスフィールド
  • は手フィールド
  • 上の在庫を維持する必要がありますたびに、それを見て?ステータスや他の属性が由来することができる場合、私はなど

答えて

1

株式すなわちメーカーのタイプのために、ここで説明しているよりも、より複雑な分類があるとして株式や商品テーブルが別々である

PS他のテーブルでは、実装するのが簡単なオプションは、それをそのままにして「毎回参照する」ことです。あなたのテーブルは正規化されたままです。トリガーなどの複雑なソリューションで派生した値を維持する必要はありません。

いつ別のオプションについて考える必要がありますか?クエリを最適化したとしても、上記のアプローチが遅くなっているとき。株価や株価などの平均値を10年以上に渡って計算しなければならない場合、クエリは速やかに計算されるほど速くはありません。

したがって、必要な集計データまたはその他の派生データを含むテーブルまたはフィールドを最初に追加できます。インデックス付きビュー(ほとんどのRDBMSにはその機能があります)または集計データ用の追加テーブルを使用できます。これは、前日/月/年からの株価の統計データの例をこれ以上変更できない場合にうまく機能します。日/月/年が終了すると、計算が完了し(1回)、テーブルが更新されます。次に、古いデータの場合はそのテーブルを高速でseacrhし、新しいデータの場合は「アクティブな」テーブルをseacrhすることができます。

より複雑な状況のその他のオプションには、派生値を維持するトリガーが含まれます。私はこれを最後のリソースとして使用しますが、私はこの問題に関して反対意見があると確信しています。

+0

ありがとうございました。私はビューを使用することを考えていませんでした。 – SuprF1y

関連する問題