全棧全平臺開源專案 CodeRiver 資料庫設計文件

solocoder發表於2019-01-18

前言

CodeRiver 是一個免費的專案協作平臺,願景是打通 IT 產業上下游,無論你是產品經理、設計師、程式設計師或是測試,還是其他行業人員,只要有好的創意、想法,都可以來 CodeRiver 免費釋出專案,召集志同道合的隊友一起將夢想變為現實!

CodeRiver 本身還是一個大型開源專案,致力於打造全棧全平臺企業級精品開源專案。涵蓋了 React、Vue、Angular、小程式、ReactNative、Android、Flutter、Java、Node 等幾乎所有主流技術棧,主打程式碼質量。

目前已經有近 100 名開發者參與,每個技術棧都有多位經驗豐富的大佬坐鎮,更有兩位架構師指導專案架構。無論你想學什麼語言處於什麼技術水平,相信都能在這裡學有所獲。

通過 高質量原始碼 + 部落格 + 視訊,幫助每一位開發者快速成長。

專案地址:github.com/coderiver-o…

資料庫關係圖

產品的第一版功能相對簡單,主要模組只有使用者模組、專案模組,後期版本中將豐富更多功能,歡迎關注。

資料庫關係圖如下:

全棧全平臺開源專案 CodeRiver 資料庫設計文件

資料表詳解

所有的 id 都採用了Long (bigint) 型別,相比於字串,Long 在查詢比對方面有很大優勢。

時間格式,除了只需時分的 time 型別,其他時間均存成時間戳,所以型別也是 Long (bigint)

詳細的資料表文件如下:

user_info

使用者表,儲存使用者的基本資訊。但登入相關的資訊單獨抽出來了一張新表:user_login ,便於後期擴充套件。

欄位 型別 not null 預設值 備註
user_id bigint(64) not null 使用者主鍵id
username varchar(255) not null 使用者名稱/暱稱
password varchar(255) not null 加密後的密碼
gender int(11) 0 性別,0未知,1男,2女
avatar varchar(255) 頭像
city bigint(64) 城市編碼
role_id bigint(64) 角色id
experience_id bigint(64) 工作經驗id
workday_start_time time 工作日空閒開始時間
workday_end_time time 工作日空閒結束時間
weekend_start_time time 週末空閒開始時間
weekend_end_time time 週末空閒結束時間
influence int(11) 影響力,由多個資料動態計算而來
introduce varchar(512) 個人簡介
status int(11) not null 1 賬戶狀態。1正常,2凍結,3登出
create_time bigint(64) 建立時間
update_time bigint(64) 更新時間

user_login

使用者登入表,儲存登入的各種賬號。每種賬戶都有一個 active 欄位,為了標記這種登入方式是否可用。

例如使用者通過郵箱註冊了一個賬號,並跟微信繫結了,此時用微信或者郵箱均可登入,微信和郵箱的 active 狀態值都是1。某天使用者把微信解綁了,只能通過郵箱登入,此時微信的 active 狀態值是 2 表示不可用,郵箱的 active 狀態值是 1 表示可用。

欄位 型別 not null 預設值 備註
id bigint(64) not null 主鍵id
user_id bigint(64) not null 使用者id
email varchar(64) 郵箱
email_active int(11) 0 狀態,0不可用,1可用
phone varchar(64) 手機號
phone_active int(11) 0 狀態,0不可用,1可用
wechat_id varchar(255) 微信id
wechat_active int(11) 0 狀態,0不可用,1可用
sina_id varchar(255) 新浪id
sina_active int(11) 0 狀態,0不可用,1可用
github_id varchar(255) github id
github_active int(11) 0 狀態,0不可用,1可用
create_time bigint(64) 建立時間
update_time bigint(64) 更新時間

user_role

使用者角色表。儲存使用者角色分類:

產品經理、設計師、前端工程師、移動端工程師、小程式、遊戲工程師、後端工程師、測試、DBA工程師、運維工程師、其他。

欄位 型別 not null 預設值 備註
id bigint(64) not null 角色id
name varchar(64) 角色名

user_experience

使用者工作經驗表。儲存工作經驗分類:

在校生,0年,1-2年,3-5年,5-8年,8-10年,10年+

欄位 型別 not null 預設值 備註
id bigint(64) not null 經驗id
name varchar(64) 經驗名

work_experience

工作經歷表。儲存個人簡介中的工作經歷,每人的工作經歷可能有多個。

欄位 型別 not null 預設值 備註
id bigint(64) not null 主鍵id
user_id bigint(64) not null 使用者id
company_name varchar(64) 公司名
position varchar(32) 職位
comment varchar(512) 備註
start_date bigint(64) 開始日期(格式:2018-09)
end_date bigint(64) 結束日期(格式:2018-09)
status int(11) not null 1 狀態。1正常,2刪除
create_time bigint(64) 建立時間
update_time bigint(64) 更新時間

education_experience

教育經歷表。儲存個人簡介中的教育經歷,每人的教育經歷可能有多個。

欄位 型別 not null 預設值 備註
id bigint(64) not null 主鍵id
user_id bigint(64) not null 使用者id
school_name varchar(64) 學校名
major varchar(32) 專業
degree varchar(32) 學位
comment varchar(512) 備註說明
start_date bigint(64) 開始日期(格式:2018-09)
end_date bigint(64) 結束日期(格式:2018-09)
status int(11) 1 狀態。1正常,2刪除
create_time bigint(64) 建立時間
update_time bigint(64) 更新時間

user_like

使用者點贊表。

欄位 型別 not null 預設值 備註
id bigint(64) not null 主鍵id
liked_user_id bigint(64) not null 被點讚的⽤使用者id
liked_post_id bigint(64) not null 點讚的⽤使用者id
status int(11) not null 1 點贊狀態,1 點贊,2取消
create_time bigint(64) 建立時間
update_time bigint(64) 修改時間

project_info

專案資訊表。儲存專案的基本資訊。

欄位 型別 not null 預設值 備註
project_id bigint(64) not null 專案id
project_name varchar(255) 專案名字
project_avatar varchar(255) 專案封⾯面
project_difficulty float 專案難度
category_id bigint(64) not null 項⽬型別id
project_status int(11) 0 專案狀態, 0招募中,1 進行中,2已完成,3失敗,4延期,5刪除
project_introduce varchar(512) 專案簡介
project_creator_id bigint(64) not null 項⽬建立者id
team_id bigint(64) 專案所屬團隊id
project_start_date bigint(64) 專案開始時間,格式:2018-10-01
project_end_date bigint(64) 項⽬結束時間,格式:2018-10-01
project_delay_date bigint(64) 項⽬延遲的⽇期,格式:2018-10-01
delay_count int(11) 項⽬目延期次數。最多三次每次最多一個⽉
create_time bigint(64) 建立時間
update_time bigint(64) 更新時間

project_category

專案型別表。如電商、社交、教育等。

欄位 型別 not null 預設值 備註
id bigint(64) not null 項⽬目型別id
name varchar(255) 類⽬目型別名稱

project_picture

專案圖片表。存放專案截圖。專案與圖片是一對多的關係。

欄位 型別 not null 預設值 備註
id bigint(64) not null 主鍵id
project_id bigint(64) not null 項⽬id
picture_url varchar(255) not null 圖⽚地址

project_like_user

專案點贊表。儲存專案點讚的具體資訊。

欄位 型別 not null 預設值 備註
id bigint(64) not null 主鍵id
project_id bigint(64) not null 專案id
user_id bigint(64) not null 點讚的使用者id
status int(11) not null 0 點贊狀態,0 取消點贊,1點贊
create_time bigint(64) 建立時間
update_time bigint(64) 更新時間

team_application

組隊申請表。有四種業務邏輯:申請加入專案,申請加入團隊,邀請加入專案,邀請加入團隊。

欄位 型別 not null 預設值 備註
id bigint(64) not null 主鍵id
project_id bigint(64) 專案id
team_id bigint(64) 團隊id
target_user_id bigint(64) not null 目標使用者id。如果是使用者主動申請,就是申請者id;如果是被邀請,就是被邀請者id。
creator_user_id bigint(64) not null 申請建立者id。如果是使用者主動申請,target_user_id 和 creator_user_id 都是該申請者id;如果是被邀請,creator_user_id 是邀請者id。
role_id_apply bigint(64) not null 申請在本專案中的角色id
workday_start_time time 工作日空閒開始時間
workday_end_time time 工作日空閒結束時間
weekend_start_time time 週末空閒開始時間
weekend_end_time time 週末空閒結束時間
comments varchar(512) 備註訊息
status int(11) 1 狀態。1待稽核,2通過,3駁回,4撤回,5刪除
create_time bigint(64) 建立時間
update_time bigint(64) 更新時間

user_project_relation

使用者與專案的對應關係表。關係是多對多。

欄位 型別 not null 預設值 備註
id bigint(64) not null 主鍵id
project_id bigint(64) not null 專案id
role_id_project bigint(64) not null 使用者在本專案的角色id
user_id bigint(64) not null 使用者id
status int(11) 0 狀態。0未匹配,1已匹配
create_time bigint(64) 建立時間
update_time bigint(64) 更新時間

team_info

團隊資訊表

欄位 型別 not null 預設值 備註
team_id bigint(64) not null 團隊主鍵id
team_name varchar(255) 團隊名稱
team_avatar varchar(255) 團隊logo
team_introduce varchar(512) 團隊簡介
team_creator_id bigint(64) not null 團隊建立者id
description varchar(128) 團隊描述
status int(11) 1 狀態。1正常,2解散
create_time bigint(64) 建立時間
update_time bigint(64) 更新時間

user_team_relation

團隊-使用者關係表,多對多的關係。

欄位 型別 not null 預設值 備註
id bigint(64) not null 主鍵id
user_id bigint(64) not null 使用者id
team_id bigint(64) not null 團隊id

comments

評論表。可以對資源(下一版加入資源中心)、對專案、對使用者進行評論。

欄位 型別 not null 預設值 備註
id bigint(64) not null 主鍵id
pid bigint(64) 父評論id
from_id bigint(64) not null 評論者id(只可能是使用者id)
to_id bigint(64) not null 被評論者id(可能是資源、專案、使用者id)
content varchar(512) not null 評論內容
type int(11) not null 評論的型別:1資源,2專案,3使用者
status int(11) 1 評論狀態:1正常,2刪除
create_time bigint(64) 建立時間
update_time bigint(64) 更新時間

資料庫 sql 檔案放在了 GitHubdoc 倉庫下,點選 這裡 快速開啟。

關注我們

在專案開發過程中我們會盡可能多的總結技術實現過程,並形成一系列文件,文件 + 原始碼 帶給您最高效的學習體驗。文件會在 CodeRiver 官方微信公眾平臺 CodeRiver河碼 首發,也會在各部落格平臺釋出,歡迎大家關注。

掃碼或搜尋微訊號 code_river 關注微信公眾平臺:

全棧全平臺開源專案 CodeRiver 資料庫設計文件

參與專案

CodeRiver 是開源專案,任何想為開源事業貢獻一份力量的小夥伴均可加入。

同時我們還建立了專案討論群,如果您對專案感興趣,可以進群一起討論。

加入方式:

搜尋並新增 wx 號: douglas1840,備註:coderiver


感謝大家一直以來的的支援,CodeRiver 團隊將繼續朝著打造全棧全平臺精品開源專案的目標不懈努力!

您的鼓勵是我們前行最大的動力,歡迎點贊,歡迎送小星星✨ ~

全棧全平臺開源專案 CodeRiver 資料庫設計文件

相關文章