2011-08-05 18 views
0

私は、皆が持っている:firstname、lastName。 誰もがパラメータを持っています:[車の数、貨の数、牛の数] 時にはこのパラメータが変化しています。 私は、過去のパラメータ数と統計量の現在のパラメータ数を取得したいと思います。 DB構造をどのように構築する必要がありますか?時間のデータベース構造

マイバージョン:

  • [PeopleID(PK):氏名、姓]
  • [СhangesID(PK):PeopleID(FK)、ChangesDate]
  • [ParameterID(PK)、changesID( FK)、DayOfBirth、CarCount、Adress、MoneyCount、CowCount ...]

答えて

1

これは履歴ログパターンの一種です。

[PeopleID(PK):氏名、姓、DayOfBirth、住所、CarCount、MoneyCount、CowCount ...] [ChangesID(PK):PeopleID(FK)、カラムID、OldValueプロパティ、ChangesDate]

ColumnIDのCarCountのColumnId = 1、MoneyCountのColumnId = 2、CowCountの列Id = 3

私のアイデアは人だけのもので、人だけではテーブルを作成しないでください。&姓、 DayOfBirthなどもこの表(People)に含める必要があります。また、パラメータの場合、CarCount、MoneyCountまたはCowCountは常に現在の値を格納します。 CarCountのaからbへの変更がある場合はいつでも、Peopleテーブルの対応する行を更新し、CarCountをbに設定し、ColumnId = 1およびOldValue = aのChangesテーブルに新しいレコードを作成します。他のパラメータと同様です。

この方法では、人物表の情報を使用して、常に各人物の最新のパラメータをすぐに取得できます。また、ユーザーが各パラメーターの以前の値を知りたい場合は、ChangesDateによるChangesテーブルの降順でのクエリを実行します。

これが役に立ちます。

+0

どのタイプのOldValue?(文字列、数字...) – GLeBaTi

+0

cowCount =数値(整数)、Address =文字列 – GLeBaTi

+0

@GLeBati後で文字列と見なして変換を行うことができます。 – longbkit

関連する問題