社区
ASP
帖子详情
关于下载扣积分问题,请各位前辈指点一二
wutongshu012
2010-07-12 10:49:32
我想实现下载一个文件只扣一次积分,以后再下载就不扣了,我现在就是理不清数据库之间的关系,以及实现的思想,希望各位前辈帮帮忙。。指点指点我啊。。。。
...全文
127
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
打赏
举报
回复
不知道还有没有其他方法。。
新手入门,想
下载
资源苦于
积分
不够
一位新手表示在入门阶段想
下载
资源,但苦于
积分
不够,发文寻求
前辈
的
指点
。
python怎么算
积分
_利用python求
积分
的实例
本文介绍了如何使用Python的numpy和scipy库进行数值
积分
。通过示例代码展示了quad、dblquad和nquad函数的使用,包括单重
积分
和二重
积分
的计算,帮助理解Python在数学
问题
上的应用。
matlab编程mindlin解,MATLAB对mindlin解进行三重
积分
在MATLAB2017b环境下,尝试对Mindlin解进行三重
积分
时遇到
问题
,使用int函数计算时间过长且结果出现复数。尝试integral3等其他函数也引发错误。作为初学者,面对错误提示感到困惑,寻求经验丰富的用户帮助以解决三重
积分
计算
问题
。
提高“csdn资源
下载
”利用率倡议
本文讨论了CSdn
积分
规则存在的
问题
,包括资源
下载
只能使用
积分
且
积分
难以增加的情况,导致用户不满。作者提出了解决方案并呼吁社区参与,以改善资源利用效率和
积分
规则。
ecdf函数_关于ecdf函数的使用
问题
博主在使用ecdf函数处理21*3矩阵数据时,发现x1和x2的经验累
积分
布函数值是21*1列向量,而x3是22*1列向量,不清楚
问题
所在。文中给出了具体数据和代码,希望
前辈
解答。
ASP
28,403
社区成员
356,946
社区内容
发帖
与我相关
我的任务
ASP
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
复制链接
扫一扫
分享
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章