我正在努力完成一个网站的广告系统的重建。新的PPC模型的报告/日志记录端提供了一些困难,我发现自己迷失了更好的想法。有问题的表格将被称为“报告”,并将包含系统中每个广告的ad_id、印象、点击量和CTR%,每天滚动一年。
简单的解决方案如下所示
CREATE TABLE IF NOT EXISTS `reports` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ad_id` int(11) NOT NULL,
`impressions` int(11) NOT NULL,
`clicks` int(11) NOT NULL DEFAULT '0',
`ctr` float(6,3) NOT NULL DEFAULT '0.000',
`report_date` date NOT NULL,
PRIMARY KEY (`id`)
)当你查看一周中的几天时,问题就出现了。我希望能够收集每个广告商的数字,并显示每天的报告。我们将有多个广告商,每个广告商都有多个广告。最明显(也最荒谬)的选择是为一年中的每一天建立一个表。
如果我使用"report_date“列,我的reports表最终会变得一团糟。在这种情况下,控制此数据的更新将包括常见的:
if there is no record for today - INSERT new record
else UPDATE existing record for today我在每次点击时都会用PHP计算来更新这个记录。但明年,还会继续同样的过程吗?我想这是可行的,但我想知道是否有更好的方法来做到这一点。我宁愿有一个完整的滚动年--在没有广告的日子里用零填充。使用这个系统的客户将能够在任何时候重新填充他们的银行,并重新恢复旧的广告,这些广告永远不会从系统中删除。这就是滚动年模型背后的原因。
感谢您的帮助,谢谢!
发布于 2011-06-04 21:16:07
听起来你需要一个数据仓库。在事务性系统中存储历史信息会让您一直感到头疼。在事务系统中查询/更新行将非常慢。我的建议是去掉report_Date,让表保持原样。
我的建议是维度模型,而不是关系模型。创建一个用于报告的数据库,并在此数据库中使用如下所示的快照事实。听起来还会有其他一些有趣的维度。这将允许用户通过url或day查看点击/ctr。你进入这个巨大的事实是基于优化的索引键。谷歌维度建模以获取更多信息。组合历史/报告/事务通常会导致糟糕的设计。如果您需要任何有关如何填充该内容帮助,请发表评论。

https://stackoverflow.com/questions/6230332
复制相似问题