【问题标题】:How to model a temperature recording device data in a rails app [closed]如何在 Rails 应用程序中建模温度记录设备数据 [关闭]
【发布时间】:2016-02-22 08:03:00
【问题描述】:

尝试构建 Rails 应用程序的一部分,允许用户从设备上传 csv 文件,该文件包含两条信息,日期/时间和相应的数据点。每个单元都有一个唯一的序列号,用户可以输入或扫描。

我觉得我在思考如何对此建模并陷入中立。我是否制作了两个数据库表,一个带有单元序列号,另一个带有数据点,并且具有单个序列号具有多个数据点的关系?还是我要制作一个模型,将所有信息都放在一张表中?

编辑:

一直在摆弄模型,这就是我在下面想出的。

应用程序将允许用户登录并上传包含来自设备的温度数据的 CSV 文件。这些数据将被存储,用户可以使用 Highcharts 以不同的图形格式查看所有这些下载。

这就是我想在下面做的事情,如果有更好的建模方法,请告诉我。请记住,每台设备包含大约 200 个时间/温度数据点,每天可能上传 150-200 个此类文件。

我要挂断电话的是温度记录器设备。一台记录仪有许多时间和温度数据点(> 200)。我是否将其分解为数据点表并建立临时记录器仅由序列号表示并且具有许多数据点的关系?

鉴于潜在的下载量,一家公司的临时记录仪的表每天会增长 30000 次。不确定从长远来看这是否会影响性能。

型号

Company
t.name
has_many :temp_recorders
has_many :users

User
t.name
t.email
belongs_to :company

TempRecorder
t.point
t.time
t.temp
t.serial_num
belongs_to :company

【问题讨论】:

  • 能否提供一些示例数据?
  • 完全取决于。无论哪种方式,从特定单元获取所有数据都是微不足道的。与其痴迷,为什么不尝试一种方法,看看它如何满足您的特定需求?

标签: ruby-on-rails ruby activerecord database-design


【解决方案1】:

我认为你可能有点想多了;)。您列出的数据可能不需要像那样拆分。

关键点:如果您想知道是否需要将字段拆分到不同的表中,请问问自己

  1. 我在建模什么关系?
  2. 我可以通过将字段移动到新表来最小化数据中的冗余吗?

考虑:您有字段数据、日期、序列号。我假设您需要 serial_no 的原因未在此处指定,并且不能仅依赖 rails 在任何给定表上生成的 id 值。

如果您将这些字段放在一起,您就有了一个名为“TemperatureSamples”或类似名称的模型的坚实基础。表中的字段紧密相连,不会有任何不必要的重复(例如,在表中的每条记录上列出收集站点)。

相反,如果将字段拆分为不同的表,则会有两个或三个表名为“CollectionDate”、“CollectionTemperature”(甚至可能是“CollectionSerialNo”,但现在让我们忽略这种可能性)。这些表存储了一列数据,然后您必须开始添加外键以将它们重新链接在一起。您的数据模型变得更加复杂,但冗余并没有减少。

如果您刚开始使用数据库,请考虑阅读一下规范化和三种范式(阅读速度非常快):https://en.wikipedia.org/wiki/Database_normalization

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多