質問

この問題に関するスキーマで見つけることが私のその他のご質問 こちらです。 基本的には自分のデータベースとステレオフォーンジャッ利用者所、センサーも上がっていません。これらすべてのものが編集可能なシステムのユーザー deletable.

しかし、項目を編集削除したい店舗は、古いデータがあることが、データに変化します。

も編集可能な項目のデータベースなどの"読み".そのログします。読みログインに対し、センサーがその特定のセンサーです。

い成果報告書を読みながらプレーする必要がありますので何の属性のロケーションまたはセンサー 時を読む.

基本的に私は再構築することができ、データます。

現在、私はこんなものが追加により以下のカラム毎に編集可能なテーブル:

valid_from
valid_to
edited_by

まvalid_to=9999-12-31 23:59:59その現します。まvalid_to equals valid_from、その記録が削除されています。

しかし、私はしたいのは嬉しいトリガーのための利用を徹底外部キーの一貫性を追求します。

できますが避けトリガー用拡張子を"PostgreSQL"データベースです。このカラムタイプという"期間"を保存できる時間と二日後、できるチェックインを行う制約の防止を重ねます。ることがございます。

私がる場合もあります。

私は見る人にも専用の歴史のテーブルがなさんの思いをmaintainling2つの表を用いることにより、ほぼすべての1テーブル(あることは明るい材料ですが、なれる可能性).

かも削減することが可能になり自分でも初期の実装でまぁいいんじゃないか確認を一貫性の記録はいない"現在"-するみわざわざチェックの制約記録にvalid_toは9999-12-31 23:59:59である。る利用者の歴史のテーブルのない制約チェックは、これらのテーブル(なまえに必要なトリガー).

いて考える。

PS-タイトルにも記載監査可能なデータベースです。前システム、あるいはその前にedited_byます。これによりすべての変更を追跡できたものの、常に参照者を変更します。なんか違う。

感謝。

役に立ちましたか?

解決

改訂01月11日

Ok、あなたのギャップといっ達には全監査可能なデータベース;おいて、特定の要件のう)や場所に制約がありません座:に基づくご質問にび、現在注目を集めています。ただろうにコメントをいただく予定です。この位置から始める.

  • 提供することが要件が必要ありませんで:トリガ;大量複製;折れの完全性など。

  • これはクラシックの時間的要件は、 必要 ための期間"の能力で ができ.

  • ValidFrom ValidToは正常化エラー:のValidToはデータと簡単に得られたValidTo任意の列が重複して、ValidFromの次の行;いて更新を行異常(更新したときに一列に一行は、またして更新するその他のカラムは次の列);ただし、使用のダミーの値が"現在".

    • すべての不必要な、利用ValidFromみのdb清5NF.

    • の点に注意する場合PostgreSQLできないサブクエリを実行に陥ることなく、ヒープ(ala Oracleし、kep ValidTo.

これらすべてのものが編集可能なシステムのユーザー deletable.

でもno.ではデータベースの保持に重要な情報と参照整合性ではなく、スクラッチパッドは、ユーザーまで徒歩でおよび"delete"。では矛盾が同じユーザー要件の維持のための歴史的データの読み;警;Ack;クラシックダウンロード).

  • カスケードを削除はできません。その機能はチェックボックスにチェックを外データベースの、MSアクセスす。実データベースに制約の停止の子から削除されています。

  • 主キーできない)を変更します。例えば.UserId;LocationId;NetworkSlaveCode変更できません;覚えていてくれ 識別子.特徴の一つであり、PKsするのは、それらは安定しています。

  • を追加できる新しいユーザに変更することができ 現在の ユーザーの名前です;ものを削除することはできません、ユーザーにエントリにダウンロードし、承認、アクション.

基本的な編集可能ですの歴史(除く読み、アラート).

は除外:ダウンロード;謝辞;行動します。

の参照テーブル:SensorType;AlertType;ActionType.

の新しい歴史のテーブル:し込み、それを更新することはできませんまたは削除されます。

この問題を見たいのisObseleteフラグが..う変更した場合には、位置センサの外部キーは今後、ポイントは、obselete実績、そして重複したセンサーです。この問題が指数関数的に悪化していhierachyです。

  • Ok、どうやったらいついてご理解いただけたでしょ LocationId (FK) Sensor 変わりません;ありませんの大量複製などが有ります。問題はありませんのであるか予約開始です!!) 取得する指数関数的に悪化となります。

  • IsObsolete けでは不十分であります。 参照下)

  • UpdatedDtm 任意の実行(Reading, など)を識別し、親会(FKを Sensor 歴史列(その AuditedDtm と有効になった時です。

  • 全関係能力、コRefential完全性等

  • を維持するIDEF1X、関係概念の強い識別子...が現在の親会社列(例.所在地

  • 当行の歴史を画像は、現在の行の前にさかの変更に記 AuditedDtm.現在の列(履歴)は、一昨UpdatedDtmの場合、行が変更されました。

  • AuditedDtm を示す全体シリーズ UpdatedDtms 任意指定された鍵;としています"パーティショニング"のセキュリティーキーの時間です。

すべてのことが必要である歴史の表に変更可能。提供していただき、Hiistoryテーブル用の特定のテーブル:場所センサNetworkSlave;およびユーザーです。

本書をお読みください理解のための 監査可能な会計感.

データモデル

リンク センサーのデータモデルの歴史 (2ページの履歴テーブルやコンテキスト.

読者に慣れていないの関係をモデル化ることができるので、探し IDEF1X表記 便利です。

応答コメント

(1) 私の最初の問題は、その参照整合性の歴史のあるデータは、なんなのかが問があればいいただけます。例えば、SensoryHistoryできなかったが、追加することを記録したUpdatedDtmを示す日付時間の場所そのものは存在した場合、参照したいとおもいますているかどうかを実際に問題なんなのかを制するものです。

(上げますので同様の問題の質問です。) っているのかもしれませんのdbsきなかった実際に参照整合性位この関係を線のあり、文書化のりった"実施したアプリのコード"になりますが、クラスを明確化するものである。

これはISO/IEC/ANSI標準のSQLデータベースです。この宣言的判断の参考ます。べての関係線として実施され、PK::FKを参考に、実際の制約を宣言しています。例:

CREATE TABLE Location
    ...
    CONSTRAINT UC_PK
        PRIMARY KEY (LocationId)
    ...
CREATE TABLE Sensor
    ...
    CONSTRAINT UC_PK
        PRIMARY KEY (LocationId, SensorNo)
    CONSTRAINT Location_Sensor_fk
        FOREIGN KEY (LocationId)
        REEFERENCES Location(LocationId)
    ...
CREATE TABLE SensorHistory
    ...
    CONSTRAINT UC_PK
        PRIMARY KEY (LocationId, SensorNo, UpdatedDtm))
    CONSTRAINT Sensor_SensorHistory_fk
        FOREIGN KEY (LocationId, SensorNo)
        REEFERENCES Sensor (LocationId, SensorNo)
    ...
その宣言された制約の施行により、サーバ;あるのではないトリガ;ないアプリのコードです。そ:

  • A SensorLocationId が存在しない Location を挿入することはできません
  • A LocationIdLocation は行 Sensor 削除できません
  • A SensorHistoryLocationId+SensorNo が存在しない Sensor を挿入することはできません
  • A LocationId+SensorNoSensor は行 SensorHistory 削除できません。

(1.1) すべての 列のすべての規則や制約をチェックプロジェクトへの協賛を始めその範囲の値です。そのほかに、そのすべての挿入/更新-削除はプ内に格納されprocsため、事故のないようなことが起こせ内には、データベースのコマンドを実行する技術を開発しているので(excepts選択).

一般的にかな場所には近づかないでくださいをトリガーとする。ご利用の場合は保存procs、通常のアクセス権が、その本:

にSensoryHistoryできなかったが、追加することを記録したUpdatedDtmを示す日付時間の場所そのものは存在した場合、この

を防止します。そこで挿入SensorHistoryとUpdatedDtmのセンサーそのものです。がprocsのない宣言。しかしい味(だって二重に挿入しますすべてを介して,直接コマンドによるユーザーしか使えてトリガが発生します。私にとっては、である。

(2) どんな表示を削除?私だけで追加フラグの歴史のテーブルによるものだと考えられます。

どうなるでしょうか。例えば.いを受けることが Sensor て削除され、最終的...(あり、歴史が維持され...そして新しい Sensor に追加され Location, ここにお集まりの新しい SensorNo ...ありません Sensor ている論理的に更新し、またはずのギャップ間に合うのか?

からエンドユーザー視点でのソフトウェアできるの追加、編集、削除をセンサでと制限はありません。があり、一度に削除で削除できませんundeleted.あのスピードを停止して再度追加センサー以降でも同じパラメータ。

および"delete" Locations, NetworkSlaves, は、 Users しています。

Ok。その後、新たな Sensor 同じパラメータは、新しい SensorNo, とは独立した"前の論理 Sensor.当社ブログにアクセスいただき、 IsObsolete BOOLEANの特定のテーブル;それとして十分です。の削除はソフト削除します。

(2.1)のための NetworkSensorLoggerSensor, では、実際に依存両親彼らは廃止されている場合のいずれかの両親は廃止されています。あなたのポイント付与されてい IsObsolete カラムでは、二重の意味、由来のものから適用します。

(2.2)を明らかにし、ユーザーは、削除できません当行から他の取引履歴テーブルですよね?

(3) アップデートされる際には、テーブルのどの方法がベストを挿入する新しい列のテーブルの更新のトラスト-ホールディングス?だけで通常のSQLステートメント内の取引かもね?

そうです。このクラシックの利用取引によって、酸性では、原子;でのいずれかに成功totoまたは失敗した、toto(再試行時以降の問題は、固定).

(4)参照される予

決定版と独創性に富んだテキスト 時間データとの関係モデル C J日H Darwen、N、Lorentzos.として、人を取り入れRM知の拡張子や、必要なのは後継のRM;よりその他の方法です。

参照される書籍はひどいもので、無料です。のではないPDF(no検索な割出).開放っMSとOracleがい;いくつかの良いビットcouchedに多くの毛羽.多くの侵.プライベートビーチがありへの対応の詳細(したい場合は適切に見直し、新しいい。

(4.1) ValidTo のほか、 ValidFrom.重大な過失として特定の私の答えすることになる書籍する;その後laboriouslyを解決す.を作成するのではありませんの失敗をしても解決する。私の理解では、消し方をトリガーとする。

(4.2)単純なルールを正常化と時間要します。まず、必要なものを深く理解の時間的要件および(b)のデータ型、訂正、利用、及び利用制限があります。い店舗:

  • 瞬間としてのDATETIMEので、例えば.UpdatedDtm

  • 間隔としての整数を、明確に特定のユニットの列の名前、例えば.IntervalSec

  • ます。により共はdisjunct.

    • のための共は、この要件は、(4.1)が適用されます。を使用したDATETIME;末期させることによって得られる期間の期首以後に来ます。
    • のためのdisjunct期間、ありが必要2x DATETIMEsは、例えば、 RentedFromRentedTo との差。

(4.3)な混乱の時間的主キー"は、より複雑にコードのほか、必要なトリガー制御の更新に異常).既に納入クリーン(試験)時間その有効なタイプを利用します。

(4.4)も堂とダミーの値、実質値、およびNullのための"します。んなどうしようもな改善に取り組んでいます。●ていないので、保存の複製 ValidTo, しない問題があります。

(4.5)がなぜ、528ページ"教科書"の利用は無料の貧しいPDFです。

(5) I[ユーザ]で静かな幸せを全て削除しLocationHistory行、(残って現在のバージョンの場所のテーブルも存在SensorHistory行する概念的には"所属"、前のバージョンの位置合意いたしました。

にとってあまり意味がありません、まだまだギャップに通してあります。く相互作用まで閉じられます。

  • 実際標準ISO/IEC/ANSI SQLデータベース、 ない 助成金の挿入/更新-削除を許可す。して助成を選択し、参考文献 のみ (選ばれたユーザーすべての挿入/更新-削除コードの取引は、格納されprocs.その助成EXEC各保存し,選択したユーザ(利用の役割削減。

    • そのためできませんの削除からのテーブル実行することなくproc.

    • なく,削除から歴史ます。これらの行は削除されます。この場合、不許可と非存在のコード に与えます。

    • 技術的には、履歴をすべての行が有効な期間に関自身です。最古のLocationHistory行の前-イメージの元の場所に行する前に変更しました。最年少LocationHistory行の前-イメージの現在地を行います。毎LocationHistory列の間にはthusly有効に適用される期間。

    • 必要な"プルーン"に数LocationHistory行する削除することができますのであるという理由で、申請期間使用されていない: 彼らはすべての使用.(隣はショッピングセンターで、歩する必要はなく、チェックのための他のマッピングの場所に子どもへのLocationHistory行(s)は、証明するとても感じが良かったです。

    • ボトムライン:ユーザーは、削除できませんから履歴(取引)。

    • いうもの異なる。

    • ご注意い(1.1)。

(6)修正一つ間違えるDMです。An Alert 表現の Reading, ない Sensor.

(7)を修正した事業規則その他の質問に答えることを反映;の新しい規則にさらされるこの質問です。

(8)いい/感謝し、そして完全にIDEF1X対応モデルの再 識別子:

  • 識別子あれば教えてください。全体のデータベースを維持す。例えば.が上場 Acknowledgements, いができませんので、直接 LocationSensor;テーブルとする必要はありません読めなければならないする場合 Id キーが使用されます。これは理由がある事実以下結合に必要なリレーショナルデータベース(以上参加必須でunnormalised)してご利用いただけます。

  • のサブタイプなど必要なナビゲーションとなる のみ その場合、特定のコンテキストが関係します。

他のヒント

私も以前にこの状況に遭遇しました。追跡しようとしているデータの量に応じて、気が遠くなる可能性があります。歴史的なテーブルは、歴史テーブルのレコードの「スナップショット」を取ることができ、生産テーブルで必要に応じて変更を加えることができるため、時には使いやすく使用できます。実装するのは非常に簡単ですが、データの量と変更頻度に応じて、非常に大きな履歴テーブルで終わる可能性があります。

別のオプションは、誰かが起こったことを「再生」して追跡できるすべての変更を記録することです。各変更は、2010年12月31日にIEに変更されたものを追跡するテーブルまたはフィールド(ニーズに応じて)にログインします。

通常、使用するシステムは、後でデータを保持/レビュー/使用する方法によって異なります。自動レポート、人によるレビュー、2つの組み合わせなど。

予算や環境に応じて、OracleのFlashbackアーカイブ機能の使用を検討することをお勧めします。

テーブル内の行の自動「アーカイブ」をオンにすることができ、次のようなものを使用してベーステーブルに関するステートメントを実行できます

SELECT *
FROM important_data
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '5' DAY)

Oracleは、別の(影の)テーブルで歴史を維持するのに役立ちます。任意のテーブルに対してこれを行うことができます。これにより、参加してクエリを実行できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top