Skip to content
jzw edited this page Nov 7, 2012 · 12 revisions

个人首页

文件:dashboard.html

用户登录时,访问到的网站首页。显示登录用户相关的信息

功能点

  1. 我和关注者的活动列表(强制用户必须为每个活动都添加注释),参考jira的“活动流”设计
  2. 用户信息:我的活动,我的关注,我的粉丝
  3. 我未完成的任务,如关注但未解答的习题,老师布置的作业,订阅的作业等。
  4. 可以关注人,也支持关注习题(等网站所有资源),只要题目有更新,则在首页显示

资源包括:视频,讲义,习题等。

获取个人首页信息的计算逻辑:

  • 每页显示10条
  • 获取关注者列表
  • 获取这些关注者的有效活动
  • 按照时间倒排
  • 获取其中的n到n+10条
  • 获取这10条的内容
  • 获取与这10条相关的统计数据

在首页还需要加一个功能,只有用户可视区域中的信息,才提供实时刷新功能。

现在提供的是纯数据库的解决方案,不考虑任何缓存组件与nosql技术,目前要做的就是把需求弄清楚。

###活动列表

  1. 根据“关注的人”的参加活动的时间倒排
  2. 使用友好的格式表示时间,如“5分钟前”
  3. 目前支持的活动有:“创建了一个习题”,“回答了一个习题”(在习题下添加链接),”更新了一个习题“,”更新了一个答案“
  4. 如果用户添加一套习题,则在活动列表中显示完整的习题
  5. 如果用户回答了一套习题,则在活动列表中把习题和答案都完整的显示出来
  6. 用户可以对答案进行评论

一个标识标出哪些活动需要显示在首页,避免使用IN

注意:这个页面不是完整的模仿微薄,而是让用户之间的学习交流更加的顺畅,尽快的发现自己感兴趣的习题和用户。

在左侧显示导航栏目,在每个命令之后,显示出每项内容的数量,如我贡献的习题(100),表示当前用户贡献了100道题。

点击导航中的一个“命令”后,局部刷新列表面板,加载相应的内容。

这些命令可放在左侧,也可放在顶部。

对于习题,有习题解析和回答习题两个操作。

设计一个粉丝表 fan 关注 follow

查看关注的人所有发的内容。

活动类型:

  • 新建习题
  • 回答习题
  • 更新习题
  • 更新答案
  • 删除习题
  • 删除答案

删除操作,不在活动流界面显示

如果已回答的习题发生了改变,则通知所有用户(待定)

数据库表设计

暂时约定,每页显示20条活动。

DRIP_ACTIVITY 用户活动表(参考jira)

该表中内容的增长速度是很快的,可使用时间划分分区。

TODO:在习题和答案中加入修订号,在活动中要引入更细致的版本号。

列名 列描述 列类型 列长度
DBID 主键标识 int
USER_ID 用户标识 int
ACTION_TYPE 活动类型(不同类型的活动存储在不同的表中) char 4
IS_IN_HOME 是否在个人首页中显示 tinyint 1
CONTENT_ID 活动输出的内容标识,如习题和答案等 int
CRT_TM 创建时间 datetime

不管是我的粉丝,还是我的关注,都是描述用户之间的关系。

为了配合push模式,我们在用户录入数据时,同时计算一些统计数据。这些字段设计为基本表的冗余字段

与用户相关的统计数据:

  • 关注的人数
  • 粉丝数
  • 用户回答的习题数目
  • 用户录入的习题的草稿数目
  • 用户录入的已发布习题的数目

与习题相关的统计数据

  • 被关注次数
  • 被收藏次数
  • 被解答次数

与习题答案相关的统计数据

  • 被评论的次数

全局层面的统计数据:

  • 题库中题目的数量

注意:我关注的人中首先要有我。

DRIP_USER_RELATION_HISTORY 记录用户关系变更历史 主要记录,建立关系和解除关系的时间。而解除关系后,直接删除掉DRIP_USER_RELATION中对应的记录,然后在历史表中新增一条“删除”操作。 或者为删除操作起一个更好听的名字,如“取消关注”。 或者将该表扩展为一张用户动态表,定义更多的用户友好的操作,添加关注和取消关注只是其中的两个操作。

Clone this wiki locally