2011-07-08 8 views
2

私は今までのいくつかのデータベースと、phryosophysでverryとは異なる作業を行っています。ビジネスアプリケーションでの歴史的なデータ

ビジネスアプリケーションで歴史的な目的のためにテーブルを複製することをお勧めしますか?・ビジネス・アプリケーションによって

私は意味: 「複製テーブル」私が意味することによって、彼のデータ

のすべてを管理するために、企業によって使用されるソフトウェア(例えば、請求書、顧客、株式[該当する場合]、など。): あなたの請求書が期限切れになった場合(1年後、請求書発行後に支払われた後、w/eなど)、履歴テーブルに保存して相談可能となりますが、変更する必要があります。同じことを何年も続けていないクライアント。

長所:それはあなたの実際に使用されたテーブルを小さくするため、歴史的なテーブルを使用して

が研究トラフ実際に使用されるデータを高速化することができます。あなたのデータベースに影響を与えることなく、歴史や実際のデータ

ハードメディアにそれを格納するデータベースからデータを削除する方が簡単の

良好な分離は、(データbeacauseより予測は、それがであったため使用されているの機会がなかったです歴史的なテーブル)。これは、未使用のデータがある10年後に起こることがよくあります。

短所:

は、データベースを作るには、最大2倍以上のテーブルを持っています。

あなたは時々テーブル量の2倍をインポートする必要があるため、レポートのためにあなたのプログラムをより複雑にする

データベースがより複雑にしてください。

答えて

1

アーカイブはエンタープライズアプリケーションの重要な側面ですが、実際に必要な場合を除き、一般的には反対です。

アーカイブとは、特定の日付より前の履歴データを取得できないこと、または「現在の」データと「履歴」データを管理するためのスキームを作成することのいずれかを意味します。あなたのソリューション(アーカイブテーブル)は、この問題の1つの解決策です。

どちらの解決策も素晴らしいことですが、アーカイブテーブルは重複したコード/データ、複雑なアーカイブ手順(特に外部キー関係がある)、エラーの可能性があります。

I do「時間」の概念は、ほとんどのビジネスアプリケーションのためのドメインとデータモデルと、変更可能性と一緒に考えなければならないと信じています。新しい注文に商品を追加できるはずです。あなたの長所については

:一般的に

、私はあなたが非常に、非常に大規模な企業の話をしている場合を除き、あなたがパフォーマンスへの影響に気づかないと思います。現代のSQLサーバーソリューションでは、10.000の顧客レコードや1.000.000の顧客レコードを照会する速度の差に気づくでしょう。

「歴史的」という定義は実際はやや難解です。ほとんどの企業は、しばしば何年もの間、規制上および税務上の目的で歴史を守っていなければなりません。彼らはおそらく、数年間の傾向を分析できるようにしたいと考えています。ビジネスが「過去5年間に1ヶ月に販売したウィジェットの数」を見たい場合、5年のデータを保存する必要があることを意味します何らかの形で(「未処理」または事前集約された)

はい、データを簡単に分離できます。今日の機能を構築する - あなたがアプリケーションを変更するたびに保守しなければならない - 10年後の報酬は、私にとっては貧しい投資のようです...

0

私は、変更ログのような各レコードの履歴バージョンを保存するための "重複"タイプのテーブルしか持っていません。変更ログでさえも、変更されたときに情報を持つ必要があるため、重複するものではありません。一般的な方法として、アクティブなテーブルから履歴テーブルに行を移行することはお勧めしません。 2つの場所でデータを検索するには、異なるバージョンのクエリを管理する必要があります。ステータスを使用して、データを変更できるかどうかを制御します。私は特定のアプリケーションのための特定の状況がある場合、それが行われる可能性があることがわかりました。外部キーの追加を開始すると、データを削除することが困難になります。真にエンタープライズビジネスアプリケーションがあり、請求書を削除しようとした場合、FKの他のテーブル、買掛金/未収入金、原材料費、営業利益、出荷情報などに関するあらゆる問題が発生します。

+0

//よく、私はalredyが使用したどこかで働いていました2年以上経過した請求書を記入するための歴史的なテーブル。私たちはこれらの請求書を見るスペシャルプログラムを持っていました。私たちは、これらの請求書のために特別なものを管理しなければなりませんでした。なぜなら、彼らは請求され、代金が支払われ、我々はいずれかの種類のForeignKeyを使用していませんでした。それはThoroughBred Basicアプリケーション – Gab

+0

@ Gabでしたが、Foreign Keysを使用しないデータベースアプリケーションは私を恐れています。アプリケーションが本当に小さい(10テーブル)場合は、ほんの少しで得ることができます。しかし、数百テーブル以上の大規模なエンタープライズアプリケーションでは、FKが必要です。私は個人的には、定義されたすべての関係を強制するためにFKを完全に補完することなく、データベースアプリケーションにテーブルを設計し追加することはありません。 –

関連する問題