跟踪事件的数据库设计

时间:2016-11-23 16:49:10

标签: mysql database database-design

寻找有关设计的意见以跟踪电子邮件事件: - 排队 - 交付 - 打开了 - 点击 - 反弹 - 标记为垃圾邮件

上面的一些事件将有关于它们的独特信息。例如,打开的事件将有ip&同样,点击事件也包含点击的链接。

我正在考虑每个事件的一个表,其中包含相应的email_id,并根据需要添加列(link_clicked,ip_address等)。

我的问题是,如果我想获取电子邮件ID X的最后5个事件,而不是查询每个表并按时间排序然后选择最后5个,那么拥有一个中间表,email_events是不好的做法,这将是一个连接它们的多态关系,它们还包含一个用于排序的时间列?

谢谢!

1 个答案:

答案 0 :(得分:0)

NO!一个表,而不是每个事件一个表。

SELECT ...
    WHERE id = ...
    FROM Events
    ORDER BY timestamp DESC
    LIMIT 5;

获取最后5(或更少)事件。