我有一个特殊的问题。我正在对在线广告数据库系统进行建模,但我不知道在数据库中存储给定广告在特定日期的点击次数的最佳解决方案是什么。
<小时/>简短的系统解释(要求):
系统正在不同的网站 (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/