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

标签 mysql sql database postgresql model

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

<小时/>

简短的系统解释(要求):

系统正在不同的网站 (ad_page) 上展示广告。每个网站 (ad_page) 可以有许多广告位置 (ad_spot)。每个广告必须在一段时间内仅在 1 个位置上处于事件状态。广告不断改变位置和页面。

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

  • 该广告处于事件状态的每个页面和时间
  • 每天的点击次数(可选每个页面)

对于每个网站(ad_page)系统必须知道:

  • 整个网站(不是特定的 ad_spot)上广告的点击次数
<小时/>

我当前(简化)模型:LINK

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

最佳答案

根据您的评论:

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

TABLE clicks
  ad_id INT PK
  date DATE PK
  clicks INT

2) You don't necessarily need to pre-check if the date exists.

INSERT INTO clicks (ad_id, date, numclicks) 
  VALUES (TODAY(), 123, 1)
  ON DUPLICATE KEY UPDATE clicks=clicks+1

关于mysql - 用于存储每个广告每个日期的点击次数的最佳数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14160042/

相关文章:

java - JOOQ创建表并插入值DSLContext

database - 在 MS Access 中,是否可以执行多个查询?

sql-server - 如何在 SQL Server 中对数量负数和正数进行排序

php - 使用 PHP 检查是否可以在短时间内从本地应用程序访问 MySql 在线服务器

mysql - SQL 从 'custom' post_type 中获取 X 个最后条目,计算用户自定义 post_type 的个人数量

mysql - 保存 mysql 数据库 php 的链接

mysql - MYSQL中用SUM连接表的问题

mysql - 无法运行查询会导致 mySQL 错误 #1093 - 您无法在 FROM 子句中指定用于更新的目标表 'members'

java - 调用循环值

php - 如何创建第一个数据库用户帐户?