小编Tho*_*ard的帖子

ListServ 数据库:统计表设计问题

我这里有一些设计问题。我有自己的用 Python 编写的 ListServ 实现,它与 Postfix+Dovecot 系统一起工作以处理邮件,以及一个 PostgreSQL 数据库后端,用于确定以下大部分功能:

  • listserv 上存在哪些列表(lists下图中的表格)
  • 谁曾在 listserv 上被视为任何列表的成员。(下members图中的表格)
  • 谁是列表的当前成员,以及:(listserv_membership下图中的表格,通过列表服务 ID 和成员 ID 将个人“成员”链接到他们所属的个人“列表”)
    • 他们可以发送到列表吗?(表格中的隐藏字段)
    • 他们可以接收发送到列表的消息吗?(表格中的隐藏字段)
  • ListServ 统计 - 根据当前日期的时间戳,对于每个有活动的单独列表,每天的消息计数。(下listserv_stats表)

目前,数据库的结构是这样的(注意,我已经把我不打算关注的表中所有不相关的字段都去掉了,并保留了主键;相关表用三个标记旁边的白色星号,此图是使用 DataGrip 创建的):

当前的ERD 请不要因为图中的对角线箭头而大喊大叫——这个是作为一个快速而肮脏的图表完成的,而我在 Visio 中手工完成了一个很好的ERD,不幸的是我现在使用的计算机上没有

我要问的具体表是listserv_stats这里的表,而不是数据库设计的其余部分。

现在,最初,我只担心每天跟踪统计数据,以及基于列表服务活动天数的“所有时间”非常粗略的每日平均值。我现在更关心其他统计数据,例如月平均值、本月至今平均值、年初至今平均值和年度平均值,因此我正在考虑重新设计以更好地适应此类搜索。

当前的表CREATE语句是这样的:

CREATE TABLE listserv_stats
(
    lsid INTEGER NOT NULL,
    datestamp DATE DEFAULT now() NOT NULL,
    msg_count INTEGER NOT NULL,
    CONSTRAINT listserv_stats_lsid_date_pk PRIMARY KEY (lsid, datestamp),
    CONSTRAINT listserv_stats_lists_lsid_fk FOREIGN KEY (lsid) REFERENCES …
Run Code Online (Sandbox Code Playgroud)

postgresql database-design

5
推荐指数
1
解决办法
59
查看次数

标签 统计

database-design ×1

postgresql ×1