数据库设计,逻辑处理指点
时间:2011-11-10
来源:互联网
用户表 tab_user (uId,uName,uAddress ..)
活动奖项表 Tab_Campaingn (campId,CampName ..)
参与活动表 Tab_CampaignJoin (campId,uId,中奖状态,参与时间)
现在业务需求
获奖规则:
每天出24个奖,平均每小时出2个奖,也就是说每小时随机发放两个中奖名额给在这两个小时内参与抽奖的用户;
请问数据库怎么设计比较好?
现在刚开始开发,数据库设计还可以改动。
想征求一下高手的建议和想法。谢谢
作者: lzid2008 发布时间: 2011-11-10
作者: qianjin036a 发布时间: 2011-11-10
就你这个其实就可以查询了 select distinct b.* from tb a cross apply (select top 2 * from tb where uid=a.uid order by newid())b
作者: fredrickhu 发布时间: 2011-11-10
要与前面两个表关联的话自己去做下
作者: fredrickhu 发布时间: 2011-11-10
参与活动表应该有用户ID和参与时间,找出一段时间内所有的用户ID,随机获取编号就行了.至于活动奖项,也可以随机为获奖的两个用户进行抽取.
我现在设计是准备这样
用户表 tab_user (uId,uName,uAddress ..)
活动奖项表 Tab_Campaingn (CampId,活动名称,活动描述,参数资格)
参与活动表 Tab_CampaignJoin (campJoinId,campId用户Id,中奖状态,参与时间)
---------
需求是,用户抽奖后,即时看到抽奖的结果
可需求中说明是:
每小时随机发放两个中奖名额给在这两个小时内参与抽奖的用户
【具体这么设计,.net代码里怎么操作 会比较好】
作者: lzid2008 发布时间: 2011-11-10
SQL code
就你这个其实就可以查询了
select
distinct b.*
from
tb a
cross apply
(select top 2 * from tb where uid=a.uid order by newid())b
cross apply 什么意思
这里的 tb 指的是参与活动的表格是吧
作者: lzid2008 发布时间: 2011-11-10
SQL code
就你这个其实就可以查询了
select
distinct b.*
from
tb a
cross apply
(select top 2 * from tb where uid=a.uid order by newid())b
SQL code
啊哦 忘记限定时间了 1个小时之内。 select distinct b.* from tb a cross apply (select top 2 * from tb where uid=a.uid and datepart(hh,时间)=datepart(hh,t.时间)order by newid())b --CROSS APPLY是2005+的新语法
作者: fredrickhu 发布时间: 2011-11-10
引用 2 楼 fredrickhu 的回复:
SQL code
就你这个其实就可以查询了
select
distinct b.*
from
tb a
cross apply
(select top 2 * from tb where uid=a.uid order by newid())b
SQL code
啊哦 忘记限定时间了 1个小时之内。
sele……
其实加入这个需求,是为了不让奖项一天之中太快发完
作者: lzid2008 发布时间: 2011-11-10
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28