天天看點

AiApe問答機器人項目資料庫設計說明書

資料庫設計說明書

需要實作的功能

  • 存儲使用者的相關資訊,包括使用者的郵箱、密碼、權限等級,還需要儲存使用者提出的問題和使用者回答的問題;
  • 存儲問題相關資訊,包括問題的題目、較長的描述、提問使用者、問題的标簽、存在的答案、建立時間、最後一次修改時間,如果建立者标記了最佳答案,還需要進行辨別;
  • 存儲回答相關資訊,包括回答的内容、回答使用者、建立時間、最後一次修改時間;
  • 存儲标簽相關資訊,包括标簽名和标簽的描述;
  • 一個使用者可以提出多個題目、做出多個回答,一個題目可以有多個回答;
  • 一個題目可以有多個标簽,一個标簽也可以被多個題目使用;
  • 【Beta新增】一個回答可以被多個使用者點贊,一個使用者可以點贊多個回答;
  • 使用者删除後,其回答和題目仍舊保留,但是需要進行特殊辨別能夠識别到該問題/回答的建立者已經登出;

實體關系分析

簡單對上述要求進行抽象,可以得到如下

E-R圖

AiApe問答機器人項目資料庫設計說明書

其中

使用者-題目

使用者-回答

關系并不是簡單的一對多關系,當原先的使用者被删除後,題目和回答應該可以單獨存在,即對應

個使用者。

為其添加便于查詢的

xID

屬性并标記主鍵後得到如下

E-R圖

AiApe問答機器人項目資料庫設計說明書

由此,我們整理出所需的關系模式:

  1. 使用者(UID,email,密碼,昵稱,權限)
  2. 題目(QID,标題,建立者UID,詳細,最佳答案的AID,建立時間,修改時間)
  3. 回答(AID,所屬問題QID,内容,建立者UID,建立時間,修改時間)
  4. 标簽(TID,名稱,描述)
  5. 題目-标簽(TID,QID)
  6. 【Beta新增】點贊(UID,AID)

以上所有關系中除了最後一個都隻有第一個屬性是鍵。題目-标簽關系中,所有屬性共同構成主鍵,每一個主屬性都是外鍵。

關系模式限制

1. 使用者 user

屬性名 描述 基礎類型 額外限制
UID 使用者ID int 主鍵,由資料庫負責維護,遞增
email 使用者郵箱 varchar(254) 備用鍵,不能重複,不能更改
bcrypt 密文密碼 char(len) 由于目前沒有确定具體加密算法,是以資料庫密碼長度暫時未确定
name 昵稱 varchar(18) 備用鍵,不能重複,2~18個字元
auth 權限 1表示使用者,2表示管理者

2. 題目 question

QID 題目ID
title 标題 varchar(150) 不超過150個字元
creater 建立使用者 可空外鍵,應當是user關系中存在的UID,當對應的使用者被删除時,應由觸發器将此項置為空
remarks 詳細資訊 varchar(max)
best 最佳答案 可空外鍵,應當是answer關系中存在的AID,且該AID對應的回答的QID必須與本元組相同,當對應回答删除時,應由觸發器将此項值為空
createTime 建立時間 date 建立此項的時間,由資料庫維護,不可更改
modifyTime 修改時間 每次修改此項應當更新,由資料庫維護

3. 回答 answer

AID 回答ID
所屬問題 不可空外鍵,當QID對應的問題删除後,此項也應當由觸發器删除
content 回答内容 varvhar(max)

4. 标簽

TID 标簽ID
名字 varchar(16) 不超過16個字元
desc 較長的描述

5. 題目-标簽

問題ID 外鍵,當QID對應的問題删除後,此項也應當由觸發器删除
外鍵,當TID對應的标簽删除後,此項也應當由觸發器删除

6. 點贊

外鍵,當UID對應的使用者删除後,此項也應當由觸發器删除
外鍵,當AID對應的回答删除後,此項也應當由觸發器删除