发表于: 2018-05-19 22:28:53
1 1264
今天完成的事情:
今天先了解了一些关于方案要怎么设计。
官网的要求是这样的:
结构
1、架构图以及说明
内容:1、web:
分为几个web,每个web对应的系统以及包含的功能
2、service:
分为几个service,每个service负责的模块及功能,
每个模块包含的数据库表,每张表的简单说明,表的大小预估、扩展性设计
3、cache:用到的缓存,例如memcached等
4、db:用到的数据库类型,例如mysql,mogoDB等
2、时间规划
内容:针对项目,划分为几个大的模块,按照开发的先后顺序,预测每个模块开发时间以及整体开发时间
3、具体方案
内容:疑点及难点
具体内容:1、需求详情
2、解决方案
2.1 需要写出1个以上解决方案
2.2 写出每个方案的优点及缺点
2.3 指出推荐方案
2.4 每个方案需要写详细:1、描述方案内容
2、画出流程图,说明具体技术实现
1. 如果需要复杂sql,那么写出具体sql,索引的建立,性能的预估等
2. 如果需要使用某项技术,描述清楚该技术具体实现方法,复杂程度、性能好坏、开发时间成本、是否能够复用等,如果可以复用,怎么设计
3、数据库的导出方案
整理成导图大概是这个样子。
.png)
但是看别人的设计方案,似乎并没有怎么写。还是准备先按照这样的方式先设计。
*****************************************
具体方案
模块名称 :签到
需求描述: 作为一个用户,我希望可以签到,以便我获得学习星;
解决方案:
方案一:
方案详情:
签到只涉及到学习星的增加,于是考虑只在用户表中添加一个签到字段,用户签到就更新用户的签到时间,然后根据时间判断用户是否签到,返回给前端的只是一个根据时间判断得到的布尔值。
方案二:
方案详情:
签到单独设计一张表,设计有最高签到,连续签到字段。用户进入页面的时候,就判断登录时间与签到时间是否是同一天,返回给前端对应的值,置灰签到按键。用户点击签到的话,就直接执行更新语句,若用户已签到的日期和签到的日期是同一天,数据不会发生变化,如果用户签到的天数是在第二天,就将用户签到日期更新为当天,连续签到日期增加1,同时判断最高连续签到日期数是否小于连续签到数,是的时候,就更新最高签到数。
相关SQL语句:
UPDATE sign
SET Recent = '2018-05-14',
continuous = CASE recent
WHEN '2018-05-13' THEN continuous
WHEN '2018-05-14' THEN continuous+1
ELSE 1 END,
Maxattendance =CASE
WHEN (Maxattendance<=continuous) THEN continuous
ELSE Maxattendance END
WHERE userid ='1';
方案优劣对比:
方案一在针对该项目的话,是最简单方便的一种设计思路,但是在后期迭代的话,可能就会表现出一些不支持扩展以及增加相应签到功能的弊端。
方案二在公司框架下逻辑可能会复杂一些,但是在后期迭代与相关功能的扩展性上,就显得更方便与灵活。
推荐方案: 方案二。
明天计划的事情:
遇到的问题:
暂无
收获:
进度:
任务开始时间:2018.04.10
预计demo时间:2018.06.10
评论