一個類知乎問答系統的後端項目分析建模
一項目概述
該系統爲一款類似知乎的問答系統,用戶可進行提問,問答,評論以及點贊,踩等功能,主要爲前臺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圖,分清表與表的聯繫與構造。