页面上列出N多网站名称(每个网站名称都链接各网的网址),如有: 百度 新浪 搜弧 ............要记录每个网被点击过的IP,时间,点击数量我应该如何设计数据库表.
我起初设计的表是A:记录IP的时间,IP地址//而且是某IP每点一次'某'网时,就在A表里增加一条记录(IP的ID,点击时间,IP地址,访问过的网ID号)发现这样做相当不合理,每点一次就增加一条记录,这样,库会承受不了.
大家有好的设计思想给讲讲.先谢谢了
我起初设计的表是A:记录IP的时间,IP地址//而且是某IP每点一次'某'网时,就在A表里增加一条记录(IP的ID,点击时间,IP地址,访问过的网ID号)发现这样做相当不合理,每点一次就增加一条记录,这样,库会承受不了.
大家有好的设计思想给讲讲.先谢谢了
id IP pageID last_visit_time visited_count
每次访问,查询IP和pageID,有就更新last_visit_time和visited_count值,没有才增加一行记录。
即使想实现分时段查询的功能,我们也可以按我们实际查询时间段需求来决定记录访问时间的方式。假如我们并不需要查询几点钟到几点钟的访问数,而只需要查询每天的,每月的,每季的,每半年/睥,那就增加一个date字段让每个IP每个page每天只一条记录,记录中包括当日的访问数。如果只需要按月分时间段查询,我们就可以用month字段合并更多的记录。
不知道我这种表设计思想对不对,请高手继续发表高见。
只是看你喜欢用mysql还是文本记录而已
站点ID 周 年份 点击数量站点每月点击
站点ID 月 年份 点击数量IP每周点击
…………IP每月点击
……这些表都是冗余的,因为它们提供的信息在你的原始表中都可以通过统计得到。但是此时使用冗余表的好处是你的统计工作化整为零了:本来每次要统计的话都要运行一串SQL,但是现在你可以再每次点击的时候更新相关的冗余表。坏处是,你必须很多coding一些,而且万一将来多个表、少个表你要修改代码,维护的工作比较琐碎。不过由于你的表数据一般是只加入不会进行修改和删除,cascading的关系处理起来相对比较轻松一些。