【问题标题】:Database Design - How to store and use flexible custom user events?数据库设计 - 如何存储和使用灵活的自定义用户事件?
【发布时间】:2022-01-07 21:54:45
【问题描述】:

我正在努力思考如何设计一个数据库(在我的例子中是 postgresql)来存储灵活和自定义的事件。这个想法是不必为我要跟踪的每个新事件创建不同的行。

这是一个初步的想法:

这里的问题是,使用其他工具(例如 excel 或 Tableau)进行分析变得非常困难,因为现在行的传统名称包含在一个值中。

鉴于之前的数据,这是一个更适合分析的结构,因为行名称是特定事件:

总结一下我的问题:如何正确存储带有变量key 和不同类型value 的事件?

【问题讨论】:

    标签: database postgresql logging tracking


    【解决方案1】:

    使用原始键/值设计。

    表格的结构不会影响数据的呈现方式,例如,如果您将它们导出以用于电子表格。导出数据时,您始终可以使用类似的查询

    SELECT timestamp, user_id,
           jsonb_object_agg(key, values)
    FROM (SELECT timestamp, user_id, key
                 jsonb_agg(value) AS values
          GROUP BY timestamp, user_id, key) AS q
    GROUP BY timestamp, user_id;
    

    【讨论】:

    • 我尝试了解决方案,但结果表的结果为 JSON 格式。有没有办法让数据仍然在单独的列中?
    • 我不知道。我会在客户端代码中这样做。
    猜你喜欢
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 2021-09-24
    • 2013-07-20
    相关资源
    最近更新 更多