社区
ASP
帖子详情
关于下载扣积分问题,请各位前辈指点一二
wutongshu012
2010-07-12 10:49:32
我想实现下载一个文件只扣一次积分,以后再下载就不扣了,我现在就是理不清数据库之间的关系,以及实现的思想,希望各位前辈帮帮忙。。指点指点我啊。。。。
...全文
133
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求
积分
的实例python的numpy库集成了很多的函数。利用其中的函数可以很方便的解决一些数学
问题
。本篇介绍如何使用python的numpy来求解
积分
。代码如下:# -*- coding: utf-8 -*-import numpy as npfrom scipy.integrate import quad,dblquad,nquaddef main():print quad(la...
matlab编程mindlin解,MATLAB对mindlin解进行三重
积分
利用MATLAB2017b对mindlin解进行三重
积分
。采用int进行多次
积分
时间长,结果出现复数,不是具体数值。采用integral3和其他函数又出现其余
问题
。作为一个初学者,看不懂出错的
问题
,不知如何解决。
请
求各位
前辈
们帮忙,非常感谢!x=20.6;a=0.2;syms t y z;r3=sqrt(x.^2+y.^2+(z-t).^2);r4=sqrt(x.^2+y.^2+(z+t).^2)...
提高“csdn资源
下载
”利用率倡议
csdn是一个很出名的it技术交流网站,里面确实有很多
前辈
留下来的宝贵开发经验,对于我们新人来说就是一部百科全书,它不但涵盖了反方方面面,而且在技术的垂直方向上也是很深入的,同时通俗易懂的解释极大地帮助了技术新人的突破性提高。然而csdn在用户体验方面却非常的不尽人意,TMD,资源
下载
只能用资源
积分
!
积分
规则读了3遍,就发掘出一条规则,
积分
只能减少不会增加,即使有钱也tam的不能买!。听说09年之
ecdf函数_关于ecdf函数的使用
问题
在做关于数据的经验累
积分
布函数的时候,选用ecdf函数,但是数据变量是21*3的矩阵,在运行完之后,x1和x2的经验累
积分
布函数值是21*1的列向量,但是x3的经验累
积分
布函数值是22*1的列向量,不知道哪里出了
问题
,还
请
前辈
进行解答数据2.739 1.481 0.395542.738 1.482 0.151942.737 ...
ASP
28,402
社区成员
356,940
社区内容
发帖
与我相关
我的任务
ASP
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
复制链接
扫一扫
分享
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章