数据库表和表单设计

时间:2014-01-21 22:28:05

标签: database-design

我有一个数据库,每天为20台机器跟踪5个参数。现在所有数据都在一个表中,这使得很难为机器3提取数据,因为我有5个与机器3相关的字段,并且无法将所有数据组合起来仅提取机器3的数据。

我的表单看起来像一个条目的电子表格,左侧是每台机器的标签,右边是5个参数。我希望每台机器都是数据库表中的一行数据,但是我不知道如何在不使表单用户从该行的下拉列表中选择每台机器的情况下告诉每一行它是否适用于不同的机器(记录)。表格通常都是在班次结束时填写的,所以我想让数据输入变得容易,让他们看到他们输入的内容和剩下的内容。

有什么想法吗?我应该在机器字段中为每一行创建一个默认值的子表单吗? TIA

1 个答案:

答案 0 :(得分:0)

根据我从您的描述中理解,您似乎需要2个表:MachinesParameters,它们之间有1-M关系。

1-Machine-to-many-Parameters

表格应如下所示:

Machines(id, name,...)

Parameters(id, param_type, value, time_of_reading, machine_id,...)

以下是数据示例:

MACHINES PARAMETERS

要获取您将使用的单个机器的所有参数:

然后,要检索其中一个字段的最新值,请运行以下查询:

    SELECT * FROM PARAMETERS 
    WHERE machine_id = 1 AND param_type='temperature' 
    ORDER BY time_of_reading DESC LIMIT 1

查询的语法可能因您使用的DBMS而异。

当您为每个参数值提交新的阅读时,您可以:

    INSERT INTO PARAMETERS (`param_type`, `value`, `time_of_reading`, `machine_id`)
      VALUES ('temperature', 189, DATE(NOW), 1)

表单可以是每行上每台机器的网格,每列中的每个参数类型。一旦用户提交表单,那么对于每个单元格,您应该运行类似上面的INSERT查询。