1

私はデータ取得用のデータベースを設計して実装し、多変数ソリューションに最適なリレーショナル データベース構造は何かを考え始めました。数十の変数 (構成可能)、さまざまなタイプ (ブール値、整数、少なくとも浮動小数点数、おそらく文字列) が存在する可能性があります。異なる変数の値は関連していません。変数、新しい値、タイムスタンプを保存する必要があります。変数の格納は、クロックまたは値の変更によってトリガーされます。

最も簡単な解決策は、変数 FK、新しい値、およびタイムスタンプを含む 1 つのテーブルですが、変数は異なる型を持つ可能性があるため、新しい値の型が問題を引き起こします。可能な解決策はほとんどないと思います。すべて、変数定義用の個別のテーブルと、時系列用の 1 つ以上のテーブル、変数値タイムスタンプごとに 1 つのレコードが関係しています。

  1. すべての値を格納できる共通のデータ型がある (文字列?)
  2. タイプごとに 1 つずつ、複数の列がある
  3. データ値用に複数のテーブルを用意し、タイプごとに 1 つのテーブルを用意する

他の何か?

基本的には、良い「データベース設計パターン」を探しています。

4

2 に答える 2

1

EAV (Entity-Attribute-Value) モデルを試してください。

于 2009-02-25T10:08:35.543 に答える
1

データベース呼び出しのオーバーヘッドは、文字列から数値/ブール値を解析するオーバーヘッドを圧倒します。コードが正しいアクションを選択して文字列エンコードされた値をデータベース。次のようなもの(頭のてっぺんから):

create table foo_values (
  -- optional fkey to select which foo this key/value belongs to
  foo_uid number(18,0) not null enable,
  key nvarchar2(64) not null enable,
  -- could be a fkey to a table of types, or an enum, etc, 
  -- depending on database support  
  datatype number(2) not null enable, 
  value nvarchar(256)
  created timestamp default systimestamp not null enable,

  -- Foreign key and index stuff here, etc ...
)
于 2009-02-25T10:16:23.153 に答える