如何正确安排这种模式?

How to properly arrange this type of schema?

我想让用户能够创建他们想要的任何指标并随时间记录它的值。除此之外的唯一操作是能够查看所选指标/时间范围的数据趋势。

我的表格结构如下:

Table: Metric
Fields: id int prim key, name text

Table: MetricPoint
Fields: id int prim key, metric_id int (foreign key to Metric.id), value real, timestamp long

这是正确的做法吗?或者我应该为添加的每个指标动态创建新表吗?或者使它们成为专栏?

我被告知当前的这种安排很糟糕,因为它使用了实体-属性-值建模,这显然被认为是一种反模式:https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model

不要为每个指标制作新表格。不要为新指标添加新列。你的做法似乎是正确的。

如果您可以输入新数据而无需 redesign/create 新对象,那么您就走在了正确的道路上。

关于 EAV:这或多或少是因为您不知道模式是什么,所以您尝试构建一个可以涵盖任何可能需要涵盖的内容的模式。这是一场噩梦,不应该真正使用。在您的情况下,您确切知道架构是什么(指标、指标属性),只是不知道值是什么,这很好。