0

変更をインポートするモデルがあります。

人には固定属性がある - 名前、目の色 変化する属性 : 身長、体重、年齢

私はこれらの変化に対する最善の解決策を見つけようとしています。

解決策 1:

Table1: Person , Columns: Name,EyeColour
Table2: WeightChange: PersonId(FK), ChangeDate, FromWeight, ToWeight
Table3: OtherChange: PersonId(FK), ChangeDate, ChangeType(height or age), FinalState

解決策 2:

Table1: Person , Columns: Name,EyeColour
Table2: WeightChange: PersonId(FK), ChangeDate, FromWeight, ToWeight
Table3: HeightChange: PersonId(FK), ChangeDate, FinalState
Table4: AgeChange: PersonId(FK), ChangeDate, FinalState

可能であれば、どの方法がより良いか、または他の代替アプローチについて説明してもらえますか?

ありがとう

4

2 に答える 2

0

「from」列を削除し、「Change」テーブルを 1 つだけ使用して、次のような「ChangeType」を持つ外部テーブルにリンクします。

Table1: Person , Columns: Name,EyeColour
Table2: Change: PersonId(FK), Type(FK) ChangeDate, Value
Table3: ChangeType: TypeDescription

過去の方法で値を取得する必要がある場合は、「ChangeDate」列を使用してクエリを実行し、それらを並べ替えて、それに応じて出力を処理するだけです。

于 2013-07-08T00:28:22.940 に答える
0

First of all, you should just store the birth date rather than 1 entry per year on the person's birthday. If for some reason you do not have this value available, then solution 2 would be preferred. No need to combine them in one table. Or you could have a single table with all changes. Your first suggestion is between these two options.

You need to minimize the risk of inconsistency in your data. It is very easy to end up in a situation where today you have a weight from 80kg to 82kg, and tomorrow from 81kg to 83kg. This does not make much sense. You should just store each individual data point (toWeight). If you graph this data, you should interpolate between your data points to get a continous function.

于 2013-07-08T00:29:52.790 に答える