一个问答系统的后端项目分析建模
一个类知乎问答系统的后端项目分析建模
一项目概述
该系统为一款类似知乎的问答系统,用户可进行提问,问答,评论以及点赞,踩等功能,主要为前台IOS作API提供接口。主要是课题性质的项目,能够支持一定的并发量,界面美观,能够有个好的用户交互环境,以完成问答核心功能。基于此,下方内容便展开了需求分析以及系统建模的讨论。
二主要业务流程
问答系统主要是用户打开APP注册登录账号,即可查看话题的讨论或者自己提出问题,可以给他方评论,点赞或踩,甚至收藏。
由上可大概知晓该项目的主要功能仅涉及问题的提出,讨论的回复以及其评论,对其回复的支持态度表现,当然还有账号的相关操作,由此可知其功能涉及。
此外,问题的标签分类以及账号的状态操作也可以考虑后台管理,但此次项目周期较短,因此暂不考虑。
三用例建模
由上可知,系统暂时仅需要游客与注册用户即可。
其中游客仅可浏览不得发表回复等操作,注册用户可有全部操作,如下:
1.用户的注册、登录
2.可选择标签浏览问题
3.可提出自己的回答,或新建一个问题
4.还可对他人的回复评论,点赞,踩等功能
5.管理账号
如此,即可根据功能需求画出用例图
四概念模型与数据库建模
设计者的概念模型和最终用户的概念模型。设计模型作为产品设计者的概念模型,是对产品构成结构和操作方式的系统化、结构化描述;相对应的用户模型,是用户在产品使用过程中形成的关于产品构成和操作方式等的结构化理解。而设计者是通过一系列视觉线索,以及用户的产品使用过程将设计模型传递给用户,并最终转换为用户概念模型。
设计模型和用户模型的最理想状态就是二者完全等同,即产品的所有设计意图和操作方式完全被用户所理解。因此实体的划分与联系至关重要,由功能结构分析可知,系统需包含用户、用户信息、问题、问题标签、回答、收藏、消息实体,大致E-R图如下:
我负责的主要模块
通用字段
*
列名 |
数据类型 |
长度 |
唯一 |
非空 |
注释 |
id |
int |
11 |
是 |
是 |
通用主键 |
created_at |
datetime |
|
否 |
否 |
创建时间 |
updated_at |
datetime |
|
否 |
否 |
更新时间 |
deleted_at |
datetime |
|
否 |
否 |
删除时间 |
用户表(user)
*
列名 |
数据类型 |
长度 |
唯一 |
非空 |
注释 |
username |
varchar |
255 |
是 |
是 |
用户名 |
password |
varchar |
255 |
否 |
是 |
密码 |
nickname |
varchar |
255 |
否 |
否 |
昵称 |
|
varchar |
255 |
是 |
是 |
邮箱 |
avatar |
text |
|
否 |
是 |
头像 |
status |
int |
11 |
否 |
是 |
状态 |
user_profile_id |
int |
11 |
是 |
是 |
用户信息逻辑外键 |
用户信息表(user_profile)
*
列名 |
数据类型 |
长度 |
唯一 |
非空 |
注释 |
|
varchar |
255 |
否 |
否 |
邮箱 |
phone |
varchar |
255 |
否 |
否 |
手机号 |
description |
varchar |
100 |
否 |
否 |
个人介绍 |
问题标签表(tag)
*
列名 |
数据类型 |
长度 |
唯一 |
非空 |
注释 |
name |
varchar |
255 |
否 |
是 |
名字 |
description |
varchar |
1000 |
否 |
是 |
描述 |
icon |
varchar |
255 |
否 |
否 |
图标url |
topic_count |
int |
11 |
否 |
是 |
所属问题个数 |
问题表(topic)
*
列名 |
数据类型 |
长度 |
唯一 |
非空 |
注释 |
title |
varchar |
255 |
否 |
是 |
标题 |
content |
text |
1000 |
否 |
否 |
简述 |
user_id |
Int |
11 |
否 |
是 |
用户id |
comment_count |
int |
11 |
否 |
是 |
评论总数 |
collect_count |
int |
11 |
否 |
是 |
收藏总数 |
view |
int |
11 |
否 |
是 |
点击量 |
top |
bit |
1 |
否 |
是 |
是否置顶 |
up_count |
int |
11 |
否 |
是 |
点赞次数 |
down_count |
Int |
11 |
否 |
是 |
点踩次数 |
标签-问题表(topic_tag)
*
列名 |
数据类型 |
长度 |
唯一 |
非空 |
注释 |
tag_id |
int |
11 |
否 |
是 |
标签id |
topic_id |
int |
11 |
否 |
是 |
问题id |
五总结
此博客是对一个问答系统的后端接口设计的需求分析,通过对需求的摸索,讨论了主要的功能模块,以及用例的涉及,最后根据功能与用户的关系,分析概念模型,画出E-R图,分清表与表的联系与构造。