用于多变量类型的数据采集的数据库设计

时间:2009-02-25 10:04:35

标签: database-design data-acquisition

我将设计并实现数据采集数据库,并开始想知道多变量解决方案的最佳关系数据库结构。可以有几十个变量(可配置),不同的类型(布尔值,整数,至少浮点数,可能是字符串)。不同变量的值无关。我需要存储变量,新值和时间戳。存储变量由时钟或值的变化触发。

最简单的解决方案是一个具有可变FK,新值和时间戳的表,但由于变量可以有不同的类型,因此新值的类型会导致问题。我可以想到几个可能的解决方案,所有解决方案都包含用于变量定义的单独表和一个或多个用于时间序列的表,每个变量值 - 时间戳的一个记录:

  1. 有一些可以存储所有值的常见数据类型(字符串?)
  2. 拥有多个列,每种类型一个
  3. 拥有多个数据值表,每种类型一个表
  4. 还有别的吗?

    基本上我正在寻找好的“数据库设计模式”。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

数据库调用的开销淹没了从字符串解析数字/布尔值的任何开销。您可能希望为类型添加一列(1 = Int,2 = Dbl,3 = String,4 = Bool,5 = date等),以便您的代码可以选择对字符串编码值采取的正确操作数据库。像(在我头顶)的东西:

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 ...
)