【问题标题】:Data model for multi variable time based data多变量基于时间的数据的数据模型
【发布时间】:2017-08-02 07:21:42
【问题描述】:

我有以下格式的多张数据。

  • 这些列是天数(时间序列),随着时间的推移不断增加
  • 变量在不同类别中保持不变的行中
  • 类别 1 采用 3 个值,类别 2 采用 2 个值,因此每天有 6 种工作表组合。

我需要将此数据捕获到数据库中。我正在寻求有关如何设置架构的帮助和建议。以下是一些注意事项。

  • 我打算对变量进行大量计算,例如类别 1 和类别 2 的变量 1 x 变量 10 的月度趋势。
  • 数据库将每天从 6 张 x 30 个变量 x 1 列(天)数据更新,即每天 180 个数据点。
  • 我们需要跨类别汇总数据 - 类别 1(Val 1、Val 2、Val 3)在(类别 2 中的 Val 2)中
  • 将来可以灵活地在第 1 类和第 2 类中添加更多值。

我最初的设计如下。我不知道将数据分成不同的关系表是否有意义。我正在考虑事务数据库的思路,并有特定类别的视图。因此,每天将有 180 行添加到数据库中。

【问题讨论】:

  • 那么它是哪个 DBMS? Microsoft SQL Server 还是 PostgreSQL?
  • @a_horse_with_no_name PostgreSQL

标签: sql postgresql data-modeling


【解决方案1】:

这是你想出来的声音。翻译成 SQL:

create table timesheet (
    day date not null,
    cat1 int not null,
    cat2 int not null,
    var1 double precision not null,
    var2 double precision not null,
    var3 double precision not null,
    -- ... --
    var30 double precision not null,
    primary key (day, cat1, cat2)
);

类别 1 和类别 2 的变量 1 x 变量 10 的月度趋势。

不是很精确,但可能是这样的:

select 
    extract(year from current_date)*100+extract(month from current_date) as month,
    avg(var1*var10) as avg_mul_var1_var10
from timesheet
where cat1=? and cat2=?
group by month
order by month;

特定类别的观看次数

不要那样做 - 你只需使用上面查询中的参数查询数据库。


所以每天都会有 180 行添加到数据库中。

否 - 只有 6 行。每个 cat1 和 cat2 组合一个。即每天 180 个值,每年只有 2190 行。

【讨论】:

  • 感谢 SQL 代码。我是数据库架构设计的新手。我正在查看一些数据库设计,其中数据表示为关系模型 - 外键等。是否值得探索这些关系模式?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多