0

これは本当にベストプラクティスに関する質問です。
私はいくつかの測定値 (HR と RR と呼びます) を収集し、これらの測定値の平均値を計算するシステムを開発しています。現在、ユーザー インターフェイスではこれらの平均値にのみ関心がありますが、後で詳細なデータ分析を行うには、すべての個々の測定値 (matlab にエクスポートするため) とすべての平均計算 (聞かないでください - ユーザー) が必要です。必要に応じて、個々の測定値を保存し、後で平均を計算します)。

平均計算などの詳細は次のとおりです。
- HR: 500 ~ 1500 ミリ秒 (可変) ごとに測定値を取得します。4 ~ 12 回の読み取りに基づいて平均を計算します (読み取り間の時間によって異なります)。
- RR: 3 ~ 17 秒 (可変) ごとに測定値を取得します。2 ~ 3 回の読み取りに基づいて平均を計算します (読み取り間の時間によって異なります)。

両方について保存します:
- 平均値 (10 進数) と、平均計算に使用される読み取り値からの最初の読み取りのタイムスタンプ。
- 個々の読み値 (10 進数) と、読み値が取得されたときのタイムスタンプ。

ご覧のとおり、データは平均計算と個々の測定値で同じです。
HR/RR と同じ-データは同じで、次のように表すことができます
。読書 |
- - - - - - - - - -
| タイムスタンプ |
| | 値 |
- - - - - - - - - -

異なる時間間隔などでデータを計算するため、HR + RR をデータベースに単一の行として保存することはできず、個別の行またはテーブルが必要です。
質問は次のとおり
です。それとも、特定の行が HR か RR かを示す列を使用して、別々の行として同じテーブルに格納する方がよいでしょうか?
2. 個々の測定値ごとに個別の表を作成する方が良いですか? それとも、個々の読み取り値が同じテーブルの行を参照し、それが使用された平均計算を使用する自己参照テーブルを作成する方がよいでしょうか?

私は DB 設計が得意ではなく、その状況でどのようなベスト プラクティスが使用されるかわかりません。
また、MongoDB (SQL データベースではなく、プロジェクトが C# ベースであるため、おそらく MSSQL) を使用することも検討していました。これにより、平均計算などを含むドキュメントに個々の測定値の配列を埋め込むことができるため、おそらく作業が楽になるでしょう。 Mongoへの書き込みが非常に高速であることを知っています...

ポインタはありますか?ありがとう。

4

1 に答える 1

1

それが聞こえるほど希望に満ちたワッシーですが、それは依存します。あなたの最初の質問に対しては、これを読み取り値の表として、またはより具体的な 2 つの表として見ることができます。そうは言っても、何年も前は 1 つのテーブルと言っていたでしょうが、何年にもわたって 2 つのテーブルに引き寄せられてきました。1 つには、キー値がより具体的になります。(読み取り) 対 (読み取り + タイプ)。そうしないと、睡眠中に「AND ReadType =…」を追加していることに気付くでしょう。また、誰かが 1 つの測定値を異なる精度にする必要があると判断したり、技術者が着ていたシャツの色を保存したりする必要がある場合にも、より柔軟に対応できます。

2 番目の質問についても、意見はさまざまですが、私はリーディング セットの親テーブルと個々のリーディングの詳細に傾倒します。自己参照テーブルは、いくつかのスタイル ポイントを獲得しているように感じますが、取得しようとしている答えによっては、自分自身に戻るのが難しくなる可能性があります。また、最終的な DB プラットフォームの選択には、これらの複雑さに対応する MSSQL の CTE などの特殊なオプションが含まれる場合と含まれない場合があります。

全体として、おそらく次のようになります。

  • ReadingSet (ReadingSetID [, 必要に応じてその他の情報])
  • ReadingR (ReadingRID、ReadingSetID、値、タイムスタンプ)
  • ReadingH (ReadingHID、ReadingSetID、Value、TimeStamp)
于 2013-10-15T16:41:08.347 に答える