私は開発中のアプリケーションのデータベース設計を行うためにMySQLワークベンチのEERツールを使用しています。 DB上のデータ変更を追跡することは非常に重要なので、私は受け入れられた答えを多く意味する投稿thisをフォローしていました。問題は私が主キーをよく理解していないということです。変更が行われるたびに同じIDで挿入された別の行が存在するため、DBが許可しないため、これがどのように機能するかについて少し混乱しますそれは正しい?私は外部キーのためにプライマリキーを使用する必要があります。myqlの変更を追跡する最善の方法
答えて
(非常に)擬似コードマイ通常 "パターン":
- 表A a_history_id(PK)、A_ID(FKがA.a_idを参照) 、VALID_FROM、VALID_TO、上
トリガーa_stuff:インサートで
- :今= VALID_FROMとA_historyに値を挿入し、VA lid_to = null。
- 更新時:a_idの最終履歴レコードに対してvalid_to = nowを設定します。その行の更新された値を使用して「オン・インサート」トリガーから同じインサートを実行します。
- 削除時:a_idの最終履歴レコードに対してvalid_to = nowを設定します。このシナリオでは
、あなたは「X> = <へからおよびX」で歴史を照会したい(ない BETWEEN値「から」前のレコードの次の「値」へと一致している必要があります)。
a_idは最後の状態または開始状態を反映していますか? –
a_idはテーブルAの単一の行を参照します。テーブルA_historyの行がAの行の状態であることを示しています(valid_toがnullでない場合は直前の状態)。テーブルAは現在の状態のみを保持します。 – Uueerdo
ありがとう、私は別のテーブルを持っているほうがいいかもしれないと思うのですが、クエリのパフォーマンスを助けるかもしれませんね? –
- 1. 移動中の車内でAndroid携帯を追跡する最善の方法
- 2. 順序付けられたsmalldatetime列を追跡する最善の方法
- 3. ソフトウェアプロジェクトの潜在的な将来の変化/改善を追跡する方法?
- 4. ブルートゥースソケットで方向変更を処理する最善の方法
- 5. UIView以外のUIViewControllerを変更する最善の方法
- 6. ソリッドカラーブラシの色を変更する最善の方法
- 7. エンティティ変更のバージョンを追跡/記録する方法
- 8. JSP JSF1.2でWebページの変更を追跡する方法
- 9. 配列とcollectionview.reloaddata()の変更を追跡する方法
- 10. データベーステーブルのデータ変更を追跡する方法
- 11. クライアントでシェフ・ソロランタイムの変更を追跡する方法は?
- 12. HTMLページの変更を追跡する方法
- 13. 定期的にネットワークの変更を追跡する方法
- 14. MS SQL Server 2008の変更を追跡する方法
- 15. ドメイン名を変更する最善の方法
- 16. WebAPI ODataを変更する最善の方法QueryOptions.Filter
- 17. UIViewControllerビューを変更する最善の方法NIBプログラムで
- 18. SQLレコードの最新の変更を追跡するには?
- 19. WPF:DataGridコンテンツの変更に対応する最善の方法は?
- 20. リンクツールバーの変更をユーザーに許可する最善の方法(注文の変更、追加、削除)
- 21. 変更を追跡
- 22. 不定期のオブジェクトを追加して追跡する最善の方法は何ですか?
- 23. ファイルを変更データと同期させる最善の方法
- 24. CoreDataエンティティの変更を追跡する
- 25. ウェブページの変更を追跡するプログラム
- 26. UIViewの変更を追跡する
- 27. Webアプリケーションの変更を追跡する
- 28. ページの更新方法を追跡する方法
- 29. vb.netで変更する前の以前の値を追跡する方法
- 30. ActiveRecordのi18n検証メッセージを追跡する最善の方法は何ですか?
あなたが参照する答えは複合PKを使用しますが、valid_fromおよび/またはvalid_untilが異なる限り、顧客IDを繰り返すことができます。そのようなPKはすべてのフィールドを同一性のために使用します。 (私が知っている問題の1つは、トリガーを使用することを指しているが、トリガーは「ON」のテーブルを変更できないということです)。私は、 "現在の"テーブルのトリガによって更新され投入される "履歴"テーブルを含むソリューションを好む。 – Uueerdo
@Uueerdoオハイオ州、私はそれがnullrightすることができますので、主キーとしてvalid_untilをひそむに間違って参照してください?私が観察している別のことは、EERはプライマリキーは、外部キーを参照する列は、 –
NULL値は、主キーと一意のインデックスの一部になります。 (どちらか2つのNULLはお互いに「ユニーク」です)。その答えは、PKのIDだけでなくなりました。 (id、from、to)は、(0,1,4)と(0,2,5)のようなデータが同時に存在するのを防ぐわけではありません。 – Uueerdo