页面上列出N多网站名称(每个网站名称都链接各网的网址),如有: 百度  新浪  搜弧 ............要记录每个网被点击过的IP,时间,点击数量我应该如何设计数据库表.
我起初设计的表是A:记录IP的时间,IP地址//而且是某IP每点一次'某'网时,就在A表里增加一条记录(IP的ID,点击时间,IP地址,访问过的网ID号)发现这样做相当不合理,每点一次就增加一条记录,这样,库会承受不了.
大家有好的设计思想给讲讲.先谢谢了

解决方案 »

  1.   

    访问量很大吗?这样的操作对mysql来说,也不过份呀。库会承受不了?!
      

  2.   

    想实现的查询功能越多,数据库的信息就需要越全面,数据量也就越大。要想数据库小,我们就要舍弃一些并不重要的功能。如果分时段统计功能并不重要,我们就不必每次都增加记录,像这样的表字段设计应该可以满足基本的查询要求:
    id IP pageID last_visit_time visited_count
    每次访问,查询IP和pageID,有就更新last_visit_time和visited_count值,没有才增加一行记录。
    即使想实现分时段查询的功能,我们也可以按我们实际查询时间段需求来决定记录访问时间的方式。假如我们并不需要查询几点钟到几点钟的访问数,而只需要查询每天的,每月的,每季的,每半年/睥,那就增加一个date字段让每个IP每个page每天只一条记录,记录中包括当日的访问数。如果只需要按月分时间段查询,我们就可以用month字段合并更多的记录。
    不知道我这种表设计思想对不对,请高手继续发表高见。
      

  3.   

    如果你要记录每个IP,那每次插入一条记录是不可避免地,没第二种方法
    只是看你喜欢用mysql还是文本记录而已
      

  4.   

    因为还要求出: 被访网站的IP (比如:前50名是:A网,B网;在点A网时要列出点击过A网的所有IP)
      

  5.   

    假如要求出点击数量最大的前50个网站。还的把所有生成的txt文件都读一遍(因为要找出每个网的点击的IP来),根据特点再找出自己所要的IP记录。对吗
      

  6.   

    当天的汇总是可以记录,最讨厌的是要找出每个访问的IP来(TOP50名)
      

  7.   

    3楼的说法是对的:你要得到的东西越多,你要记录的东西就越多。针对你的情况,我觉得可以考虑设计冗余表。一个表:IP的ID,点击时间,IP地址,访问过的网ID号冗余表中,可以记录:站点每周点击
    站点ID 周 年份 点击数量站点每月点击
    站点ID 月 年份 点击数量IP每周点击
    …………IP每月点击
    ……这些表都是冗余的,因为它们提供的信息在你的原始表中都可以通过统计得到。但是此时使用冗余表的好处是你的统计工作化整为零了:本来每次要统计的话都要运行一串SQL,但是现在你可以再每次点击的时候更新相关的冗余表。坏处是,你必须很多coding一些,而且万一将来多个表、少个表你要修改代码,维护的工作比较琐碎。不过由于你的表数据一般是只加入不会进行修改和删除,cascading的关系处理起来相对比较轻松一些。
      

  8.   

    用ajax,每点击一下就向数据库里插入一条记录。记录点击时间,点击IP就可以了。