需求背景
目前主流的部落格系統、cms都會有乙個tag標籤系統,不僅可以讓內容鏈結的結構化增強,而且可以讓文章根據tag來區分。相比傳統老式的keyword模式,這種tag模式可以單獨的設計乙個map的對映表來增加系統的負載和查詢的效率。
資料庫設計方案1
此方案分為2個表:
1.tag表
2.文章表
tag表表結構:
複製**
**如下:
tagid # tag標籤的id
tagname #tag內容
num #當前tag的引用個數
複製**
**如下:
id #文章id
title #文章標題
tags #tags列表,多個以,分割
tagid #tags的id 多個以,分割
...
此種方式tag標籤主要內容儲存在 文章表 中,對於tag表的壓力較小,只是新增的時候更新一下tag的引用數量,但是查詢的時候效率不足,不是好辦法
資料庫設計方案2
第二種方案使用2個tag表,其中乙個儲存tag資訊,另乙個儲存對映資訊:
tag表:
複製**
**如下:
tagid # tag標籤的id
tagname #tag內容
num #當前tag的引用個數
tagmap表
複製**
**如下:
tagid
aid
文章表複製**
**如下:
id #文章id
title #文章標題
tags #tags列表,多個以,分割
...
這種形式,每次發布內容和修改內容的時候 都去更新一下tag表和 tagmap表。
查詢的時候需要從tagmap表中查詢響應的文章id,然後使用文章id去查詢具體的文章資訊,因為每次查詢都是使用索引,所以效率較高。
資料庫設計方案3
前兩種方案都是使用純粹的mysql來設計的,第三種方案將使用nosql的魅力來設計。
基本結構同方案2,只是在tag表和tagmap表中使用mongo/redis這樣的nosql資料庫伺服器,這樣可以發揮nosql資料庫強大的線性查詢能力。
1) 第一種方式的表結構設計與方案2完全相同,只是資料庫伺服器換了。
2)其他的方案,當然是發揮nosql的線性能力來設計儲存的key了,尤其是使用redis的時候,使用的key的結構可以完美的提高查詢效率
參考:
使用者 使用者頭像 資料庫設計
具體要求是這樣的 使用者可以有多個使用者頭像,但是每次可用的只有乙個。我有兩個設計方案 一 在使用者頭像表裡加乙個isactivity標記哪個頭像是可用的 二 在使用者表裡加乙個記錄可用頭像id的字段。方案一 user表 userid 其他基本資訊字段 usericon表 iconid userid...
分銷系統的使用者關聯式資料庫設計
來到這家公司,迭代了個遺留的快被拋棄的社交軟體,然後主要任務就是設計並從零完成乙個服務於網際網路使用者以及關聯 商家的購物軟體.因為公司需要在購物及 商拿貨中整合分銷系統,最高可以返利3級,於是我設計了如下的使用者模組 選用的關係型資料庫是mysql,其實像這種父子關係可以使用樹形結構的資料庫比如e...
許可權系統 資料庫設計
字段型別 長度釋義 索引約束 menu id int5主鍵 唯一menu code varchar 20選單編碼 唯一 menu name varchar 20選單名稱 menu url varchar 30選單位址 唯一 menu css varchar 30選單圖示 非空 level int1 ...