需求: 
实现文件上传下载;能知道是来自哪个IP的下载; 下载了多少次。 
由以上需求,我设计数据库: 
上传表(文件ID,文件名,文件大小,文件类型,上传时间,上传人编号,文件级别编号,文件类别编号,自定义1,自定义2,自定义3) 
下载表(文件ID,下载人编号,下载时间,下载次数,自定义1,自定义2,自定义3) 
文件级别编号,考虑到权限的问题; 
文件类别编号,考虑到分类检索效率。 
自定义字段,考虑到表结构的改动。 
上传的时候,记录下相应信息,保存在上传表中。 
下载的时候,记录下下载信息,保存在下载表中。 谢谢大家给些建议、设计,,,在线等… 

解决方案 »

  1.   

    实现文件上传下载;能知道是来自哪个IP的下载; 下载了多少次。 
    ------------------------------------
    这个是用程序控制的,程序才知道本机的IP;下载了多少次,每下载完成一次,自动累加1
      

  2.   

    用父子表关系设计:
    上传表是父表,存储文件相关信息,提供下载是读取这个表的信息,主键是文件ID;
    下载表是子表,表示这个表被哪个用户(这里的用户相当于IP地址)下载了,子表主键是:文件ID,下载序号;也就是联合主键;
    注意子表不能用文件ID和用户ID为联合主键记,因为同一个文件,同一个用户可以下载多次权限的问题和用户信息有关,说起来写程序是比较麻烦的;
      

  3.   

    上传表tbUpload(文件ID,文件名,文件大小,文件类型,上传时间,上传人编号,文件级别编号,文件类别编号,自定义1,自定义2,自定义3) 
    主键:文件ID下载表tbDownload(文件ID,序号,下载IP地址,下载人编号,下载时间,自定义1,自定义2,自定义3) 
    主键:文件ID,序号.基中序号是自动递增的这样你发知道下载次数,可以通过关联语句统计出来,不必设计到数据库表里
      

  4.   

    是的,两个表
    1.上传表tbUpload-->父表
    2.下载表tbDownload-->子表