社区
ASP
帖子详情
关于下载扣积分问题,请各位前辈指点一二
wutongshu012
2010-07-12 10:49:32
我想实现下载一个文件只扣一次积分,以后再下载就不扣了,我现在就是理不清数据库之间的关系,以及实现的思想,希望各位前辈帮帮忙。。指点指点我啊。。。。
...全文
99
12
打赏
收藏
关于下载扣积分问题,请各位前辈指点一二
我想实现下载一个文件只扣一次积分,以后再下载就不扣了,我现在就是理不清数据库之间的关系,以及实现的思想,希望各位前辈帮帮忙。。指点指点我啊。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bo3235
2010-07-12
打赏
举报
回复
[Quote=引用 7 楼 wutongshu012 的回复:]
我想说的是,如果这样做,比如一个网站有1万个用户,如果有一个下载文件,用最极端的想法,每人都下载,那么新建的数据库就要有1万条数据,如果有1000个下载资源或更多下载资源呢,以后岂不是数据库会很大,查找起来也会很慢吗?
[/Quote]
下载文件前仅是检查下数据库和可能的INSERT操作,做成一个事物处理过程. 同时有1000个请求,数据库系统还是能处理过来的,如果不行的话,可以考虑你的数据库独立出来,升级CPU和内存了,当然数据记录大的时候是要考虑查询效率的(如做索引,分表)。
而实际情况是,你更多时候是在关注你的文件服务器的负载,而你的数据库服务器运行的非常稳当.
wutongshu012
2010-07-12
打赏
举报
回复
我想说的是,如果这样做,比如一个网站有1万个用户,如果有一个下载文件,用最极端的想法,每人都下载,那么新建的数据库就要有1万条数据,如果有1000个下载资源或更多下载资源呢,以后岂不是数据库会很大,查找起来也会很慢吗?
bo3235
2010-07-12
打赏
举报
回复
[Quote=引用 4 楼 theforever 的回复:]
这个有很多实现的方法,具体看情况:
1.以文件为主,建立一个文件下载表:记录ID,文件ID,下载用户名……
这样下载的时候,可以根据当前用户到表里取,看有没有,如果有就不扣分,没有就扣分并进入该表记录。
这个的作用,还可以在文件信息页或下载页显示所有其它下载本文件的用户,就象CSDN这样的方式一样。当然,只应该取前若干名:TOP N。
2.以用户为主,建立一个用户下载表:记录I……
[/Quote]
无论是您的任何一种方法,其实质都是,文件【实体】 N ------ N 用户【实体】 这样的实体关系(多对多),通常都是设计一张关联表,至于谁排前谁排后,并无太大的区分。
wutongshu012
2010-07-12
打赏
举报
回复
我想说的是,如果这样做,比如一个网站有1万个用户,如果有一个下载文件,用最极端的想法,每人都下载,那么新建的数据库就要有1万条数据,如果有1000个下载资源或更多下载资源呢,以后岂不是数据库会很大,查找起来也会很慢吗?
碧海情天-赵亮
2010-07-12
打赏
举报
回复
这个有很多实现的方法,具体看情况:
1.以文件为主,建立一个文件下载表:记录ID,文件ID,下载用户名……
这样下载的时候,可以根据当前用户到表里取,看有没有,如果有就不扣分,没有就扣分并进入该表记录。
这个的作用,还可以在文件信息页或下载页显示所有其它下载本文件的用户,就象CSDN这样的方式一样。当然,只应该取前若干名:TOP N。
2.以用户为主,建立一个用户下载表:记录ID,用户名,文件ID……
这个判断原理同上。
这个的作用,是可以在用户信息页里显示该用户的最近下载信息(TOP N)。
3.合二为一。其实无论是1还是2,都可以起到合二为一的作用,一个表既可以作为文件下载信息提取,也可以作为用户下载信息提取。数据量其实也是一样的,都是一个用户下载一个文件时产生一条,一一对应。
所以等于怎么做都可以。
bo3235
2010-07-12
打赏
举报
回复
新下载的需要 INSERT一次,再次下载不会INSERT
过程是先查询该表,判断当前用户ID 和对应资源ID是否同时存在于一条记录中
如果有{不需要任何动作}
没有{增加新记录,扣分动作}
这个方案应该是比较优雅的方案了. 不过也期待更好的方案
wutongshu012
2010-07-12
打赏
举报
回复
那也就是说每次别人下载完都要往新建的表里存一次文件编号和用户编号。。谢谢楼上回答,不知道还有没有其他方法啊????
bo3235
2010-07-12
打赏
举报
回复
单独建立一张表,字段内容为:文件编号,用户编号 再次下载的时候判断文件编号和用户编号是否存在。
SNOYC
2010-07-12
打赏
举报
回复
你不会用触发器啊。。
bo3235
2010-07-12
打赏
举报
回复
[Quote=引用 10 楼 snoyc 的回复:]
那需要那么麻烦啊
把下载资源作为主体。这个表里增加一个字段,字段类型根据实际情况设置,看你这情况最好设大一点,记录下载用户的ID,以“,”隔开
下载的时候判断下ID是否 IN 这个字段
我不相信每个资源都是100%的人来下载的,所以感觉用这个方法比较折中
[/Quote]
从单个问题解决角度来说,这样设计是没有问题的。但从扩展角度,常规的思路角度看,你的方法确实不敢苟同,例如,要知道一个人最近下载了什么,怎么查?如果还要知道时间,又怎么弄?还不整死你.
SNOYC
2010-07-12
打赏
举报
回复
那需要那么麻烦啊
把下载资源作为主体。这个表里增加一个字段,字段类型根据实际情况设置,看你这情况最好设大一点,记录下载用户的ID,以“,”隔开
下载的时候判断下ID是否 IN 这个字段
我不相信每个资源都是100%的人来下载的,所以感觉用这个方法比较折中
wutongshu012
2010-07-12
打赏
举报
回复
不知道还有没有其他方法。。
matlab
积分
教程
matlab
积分
知识,通过编程实战掌握具体应用。包括matlab
积分
初步、matlab定
积分
、matlab多重
积分
和正交
积分
、matlab数值
积分
。
LDA入门级学习笔记
声明: 1)该博文是多位博主以及科学家所无私奉献的论文资料整理的。具体引用的资料
请
看参考文献。具体的版本声明也参考原文献 2)本文仅供学术交流,...3)本人才疏学浅,整理总结的时候难免出错,还望各位
前辈
PHP 面试知识点整理归纳
全文已整理补充完毕,以后还会继续更新文章里面的错误,以及补充尚不完善的
问题
。 该篇文章是针对Github上wudi/PHP-Interview-Best-Practices-in-China资源的答案个人整理 lz也是初学者,以下知识点均为自己整理且...
版务处理记录
04/11/24 12:30 删除 musicwg 在软件工程/管理 Rational版发的“100分求Rational Rose 2003 和 PowerDesignerg
下载
地址,有的
请
帮帮忙”。删除理由:1)违反本版发贴规则。2)重复发同内容贴。04/11/24 12:30 删
ROC曲线与AUC计算
具体引用的资料
请
看参考文献。具体的版本声明也参考原文献 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应,更有些部分本来就是直接从其他博客复制过来的。如果某部分不小心侵犯了大家的...
ASP
28,391
社区成员
357,060
社区内容
发帖
与我相关
我的任务
ASP
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
复制链接
扫一扫
分享
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章