さまざまなデバイスからのログ値を格納するために、MSSQLServer2005を使用してデータベースを設計しています。値のデータ型は、boolean、int-32、または64bit-doubleです。
と呼ばれるルックアップテーブルがありますchannels
:
ID(PK) | int32
device_name | varchar(32)
値を格納するために呼び出されるテーブルがありvalues
ます。したがって、booleanおよびint-32のdouble値は、DECIMALデータ型にキャストされます。
ID(foreign key to ID@channels) | int32
logtime | DATETIME
value | DECIMAL
select logtime,value from values where ID = 1
私がそうする理由は、エンドユーザーが、チャネルのデータ型を知らなくても、1つのテーブルで単純なselectステートメントを使用してデータを選択できるため
です。
しかし、これはメモリの浪費です。これで、int32とbooleanをDecimalに格納しました。私はデータベースプログラミングに不慣れですが、誰かがこれを行うためのより良い方法を知っているのだろうか?