資料庫Schema

最後編輯:2017-07-03 建立:2017-07-01 歷史紀錄

MRBIGMOU以後直接在這邊修改,留下紀錄吧

最近更新是根據8/16的討論後重新設計的DB Schema

https://g0v.hackpad.com/X2h4X1iYek7

 

DB使用Mongo

 

Collection -News:抓取到的新聞

  • 欄位:
    • [_id]:預設主鍵。內容物為ObjectID。
    • [newspaper]:此新聞所屬媒體。內容物為字串。
    • [topicId]:此新聞歸屬議題,由後臺指派。內容物為ObjectID陣列,ObjectID對應Collection-Topic的主鍵。
    • [title]:新聞標題。內容物為字串。
    • [article]:新聞內容。內容物為字串。
    • [newsTime]:新聞發布時間。內容物為Date物件。
    • [createTime]:資料建立時間。內容物為Date物件。
    • [updateTime]:資料更新時間。內容物為Date物件。
    • [author]:新聞作者。內容物為字串。
    • [picture]:新聞相關圖片。內容物為網址字串陣列。
    • [sourceUrl]:新聞來源網址。內容物為字串。
    • [score]:新聞分數,定時依據Collection -Comment的資料計算而出。內容物為物件,各屬性分別儲存不同類別、評論員等級的分數。
  • 索引:
    • 主鍵:[_id],唯一性。
    • 索引:[topicId], [newsTime]。
    • WILBER CUnique: [_id], [sourceUrl]

 

MRBIGMOUCollection -Topic:議題列表,由後臺編輯。

  • 欄位:
    • [_id]:預設主鍵。內容物為ObjectID。
    • [name]:String = 議題名稱。內容物為字串。
    • WILBER C[description] : String = 議題介紹
    • MRBIGMOU[sort]:Number = 在App顯示時的排序,直接由後臺設定。內容物為數字。設為null時不顯示該議題。
    • [topicTagSet]:議題關鍵字。內容物為字串陣列。
    • [score] : Object = 本議題目前的發霉分數,定時依據Collection -Comment的資料計算而出。內容物為物件,各屬性分別儲存不同類別、評論員等級的分數。
    • WILBER C[photo] : String = 議題照片URL
    • [createdTime] : Time = 議題開始時間
    • MRBIGMOU[latestTime] : Time = 議題最後更新時間,指派新聞至某議題時亦會更新此時間。內容物為Date物件。
  • 索引:
    • 主鍵:[_id],唯一性。
    • WILBER CUnique: [_id], [name]
    • MRBIGMOU索引:[sort]。

 

Collection-Comment:評論列表,來源為App使用者評論。

  • 欄位:
    • [_id]:預設主鍵。內容物為ObjectID。
    • [news]:評論的新聞。內容物為ObjectID,對應至Collection-News的主鍵。
    • [user]:評論者。內容物為字串,對應至使用者資料的主鍵。
    • [level]:評論等級,紀錄評論者評論時的會員等級(註冊、認證、專家)。內容物為字串。
    • [version]:評論時所使用的評論機制版本。內容物為字串。
    • [score]:評論分數,當評論送出後,後臺依據評論機制版本與評論選項內容計算而出。內容物為數字。
    • [data]:評論資料,記錄使用者送出評論時勾選跟填入的所有資料。可能會有的論述亦存在其中,顯示時前段依評論機制版本取出展示。內容物為物件,物件格式依評論機制版本而有不同。
  • 索引:
    • 主鍵:[_id],唯一性。
    • 唯一鍵:[news]+[user],唯一性。
    • 索引:[news]+[level]+[version]+[score]。

Collection-Discuss:討論資料,來源為App使用者對新聞的討論。

  • 欄位:
    • [_id]:預設主鍵。內容物為ObjectID。
    • [news]:評論的新聞。內容物為ObjectID,對應至Collection-News的主鍵。
    • [user]:評論者。內容物為字串,對應至使用者資料的主鍵。
    • [like]:按讚紀錄。內容物為字串陣列,對應至使用者資料的主鍵。
    • [dislike]:按噓紀錄。內容物為字串陣列,對應至使用者資料的主鍵。
  • 索引:
    • 主鍵:[_id],唯一性。
    • 索引:[news]。
    • 索引:[user]。

 

Collection-users:使用者資料。(這裡大部份是meteor帳號系統的預設值)

  • 欄位:
    • [_id]:預設主鍵。內容物為字串。
    • [username]:使用者帳號。內容物為字串。
    • [email]:使用者Email,內容物為物件陣列。
    • [profile]:使用者資訊,含等級與經驗值等。內容物為物件。
    • [services]:使用者登入資訊,含加密之密碼及facebook登入token等資料。
    • [createdAt]:使用者註冊日期,內容物為日期物件。
  • 索引:
    • 主鍵:[_id],唯一性。
    • 索引:[username],唯一性。