数据库设计_能力等级

需求描述:

一个威客系统,要针对雇主与服务商设计能力等级,具体计算等级方式如下

https://www.zzwaaa.com/article/helpCenter/94/36

总的来说就是按照公式查询出数据然后显示

为了便于管理,决定将数据存在数据库中

 

 

设计与分析

  • 数据库表

有人可以是雇主也可以是服务商

所以等级数据可以是一张表

加上等级变更记录,一共两张表

等级表为表A,变更表为表B

 

  • 注册时间处理

在等级计算中,注册时间于当前时间计算出用户能力值,那么问题来了,如何知道当天用户注册了多久呢?

目前想到2种方式,如果有想法可以在评论区补充

1.定时器:以天为单位,每天更新一遍A表中所有人的时间经验(缺点:运行量大)

2.查询时计算:在每次要拿出用户能力等级时进行计算该用户的时间经验(缺点:如你一直不查他,他就不会更新,管理不便?)

  •  管理员修改

管理员为了使管理员可以修改积分而不会影响逻辑,A表添加附加经验字段

  •  数据库字段设计

A表:等级表:

用户id,雇主能力等级,雇主能力经验,服务商能力等级,服务商能力经验,创建时间,修改时间,服务商_任务服务完成数,服务商_交易金额积分,服务商_好评分,服务商_差评分,雇主_充值积分,雇主_任务服务数,雇主_交易金额积分,雇主_好评分,雇主_差评分,用户_时间经验,服务商_附加经验,雇主_附加经验

B表:变更表

用户id,变更时间,变更经验,变更正负,变更字段,变更备注

 

建立数据库后,主要就是添删查改

添_改:

按领导要求,每个任务服务评价后,充值后,变动改AB表信息

后台管理员操作

删:

后台管理员操作

查:

查询时计算时间经验并更新数据库,查次数很多,为此应该添加缓存,缓存为一天左右

如果不保存到数据库中,会出现数据库中的用户等级计算为被注册时间影响的问题,如果不需要筛选等级的话,可以这样做

如果使用定时器修改时间经验,则查询时不计算更新时间经验

 


后记

领导觉得要做一个等级系统,但是他可能当时这样想,后来就变了,但是领导说了算

所以对于这种领导,功能尽可能的多一点,

最后将个人能力表改为了个人信息统计表,在每次需要统计的地方都添加一个方法,不只记录领导需要的信息,还将以后可能用到的数据记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值