数据库设计:配置数据,实际数据,日志数据

时间:2011-06-02 12:23:00

标签: database sqlite database-design data-structures data-modeling

我想知道是否存在区分此类数据的典型方法

我必须在数据库中列出设备(例如),每个人都有

  • 配置数据
  • 实际数据
  • 记录数据

我通常在同一个表中混合配置/实际数据,另一个表用于日志数据

这似乎是一个常见的问题,所以我想知道是否有任何标准的方法来做到这一点。

修改

这是一个例子

街上的信号量:

  • 配置数据 =位置(街道交叉口),类型(适用于乘客, 汽车)等..
  • 实际数据 = colorstate =红色,绿色,步行,停止..功能=确定,正在修复等等。
  • 记录数据 =日期/时间+ colorstate +(需要记录的任何其他实际数据)

由于

4 个答案:

答案 0 :(得分:1)

你可能会这样划分(对sql语法和类型很懒):

`

signal_config

id(键) 位置 型

signal_log

signal_id,timestamp(复合键) color_stat(红色,黄色,绿色)之一 functioning_state `

在我看来,有些东西不会改变信号,比如它的位置和类型,以及确实改变它的修复状态和颜色的东西。使用此表,您可以查询特定日期灯光工作和红色的时间。

答案 1 :(得分:1)

我认为这里的术语有些混乱。

你所谓的“配置数据”对我来说就像“商业密钥”或“候选密钥”:一组数据(可能)不变,并且唯一地标识实体:只有一个交通信号灯在大街的尽头。

您所谓的“实际数据”似乎是实体的属性,随着时间的推移会发生变化。

所以我认为将它们放在同一个表中并不存在设计问题。

在单独的表中记录“日志数据”(审计跟踪,历史记录)也是一个非常好的主意。

答案 2 :(得分:0)

看起来您可以将这些信息正确地标准化为多个表格。

看起来你不应该考虑把它全部塞进一张桌子里。

答案 3 :(得分:0)

您的配置和实际应该进入不同的表。配置似乎是相当静态的,当写入表中经历极少数写入时,不会碎片化并降低性能。实际数据表会更小,然后可以使用索引,分区,填充索引等对关系返回配置进行优化。实际表可能会更频繁地分段,但应该能够快速重建,因为它包含的数据较少。

以有利于您的prevelant搜索方法的方式优化日志表。如果按日期范围搜索,则在大多数情况下按记录日期对表进行聚类。如果搜索是通过配置项的id进行搜索,则考虑使用id进行分区或仅使用集群并允许表进行分段,并根据配置项的id将其分段。