Mysql 最佳数据库设计,用于存储每个广告日期的点击次数

Mysql 最佳数据库设计,用于存储每个广告日期的点击次数,mysql,sql,database,postgresql,model,Mysql,Sql,Database,Postgresql,Model,我有一个特别的问题。我正在为一个在线广告数据库系统建模,我不知道在数据库中存储给定广告在特定日期的点击次数的最佳解决方案是什么 短系统扩展(要求): 系统在不同的网站上显示广告(广告页面)。每个网站(广告页面)都可以有许多广告位置(广告点)。每个广告必须在一段时间内仅在一个地点激活。广告是不断变化的地点和网页 对于每个广告,系统必须知道: 广告活跃的每一页和每一时间 每天的点击次数(每页可选) 对于每个网站(广告页面),系统必须了解: 整个网站上的广告点击次数(非特定广告点) 我拥有

我有一个特别的问题。我正在为一个在线广告数据库系统建模,我不知道在数据库中存储给定广告在特定日期的点击次数的最佳解决方案是什么


短系统扩展(要求): 系统在不同的网站上显示广告(广告页面)。每个网站(广告页面)都可以有许多广告位置(广告点)。每个广告必须在一段时间内仅在一个地点激活。广告是不断变化的地点和网页

对于每个广告,系统必须知道:

  • 广告活跃的每一页和每一时间
  • 每天的点击次数(每页可选)
对于每个网站(广告页面),系统必须了解:

  • 整个网站上的广告点击次数(非特定广告点)

我拥有的当前(简化)模型:


我知道这可能不是最好的解决方案,但我想不出更好的办法。

根据您的评论:

1) 。您不应该在多个位置存储相同的数据[即:点击次数],因为这会使事情变得复杂,并导致这个确切的问题。创建一个单独的表来跟踪它们一次,并且只跟踪一次

TABLE clicks
  ad_id INT PK
  date DATE PK
  clicks INT
(二)


你有什么问题?因为每次点击(广告)时,我都要检查当前日期是否存在,如果它确实存在,那么我必须对两个表执行更新(和增量点击)。。如果没有,那么我必须执行插入。对于操作来说,这似乎需要做很多工作,必须非常快,因为它经常被执行。哪两个表会增加?对不起,3个表(ad_page_stats.clicks、ad_history.clicks和ad_stats.clicks)。但现在当我看它的时候,也许广告页面统计和广告统计是不必要的,因为所有的信息都可以通过适当的查询在广告历史记录中找到。我想知道的是,你能在一个表中收集点击并在以后做总结吗ad_history'可以是一个存储过程或视图。由于用PostgreSQL:PostgreSQL标记的@IvanLučin不支持“插入或更新”/“upsert”,因此DBMS仍需要分两步执行此操作。
INSERT INTO clicks (ad_id, date, numclicks) 
  VALUES (TODAY(), 123, 1)
  ON DUPLICATE KEY UPDATE clicks=clicks+1