分析論壇資料庫設計&分析,分析論壇資料庫

來源:互聯網
上載者:User

分析論壇資料庫設計&分析,分析論壇資料庫
1,資料庫設計

論壇資料庫設計還是挺有意思的,按照商務邏輯進行拆分的資料庫設計。
首先,如果是一個部落格就一個post表記可以了。然後考慮到論壇資料量比較大,所以在設計上有最佳化。
論壇把資料庫分成3個資料表,這樣在訪問不同頁面的時候都查詢很快。
資料庫表參考discuz 資料庫設計:
只是挑了些相關欄位,沒有把所有欄位列出了。

--論壇板塊表CREATE TABLE forum (  fid mediumint(8) unsigned NOT NULL AUTO_INCREMENT,  `name` char(50) NOT NULL DEFAULT '',  `status` tinyint(1) NOT NULL DEFAULT '0',  threads mediumint(8) unsigned NOT NULL DEFAULT '0',  posts mediumint(8) unsigned NOT NULL DEFAULT '0',  todayposts mediumint(8) unsigned NOT NULL DEFAULT '0',  PRIMARY KEY (fid))ENGINE=InnoDB DEFAULT CHARSET=utf8;--論壇文章CREATE TABLE `thread` (  `tid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,  `fid` mediumint(8) unsigned NOT NULL DEFAULT '0',  `author` char(15) NOT NULL DEFAULT '',  `authorid` mediumint(8) unsigned NOT NULL DEFAULT '0',  `subject` char(80) NOT NULL DEFAULT '',  `dateline` int(10) unsigned NOT NULL DEFAULT '0',  `views` int(10) unsigned NOT NULL DEFAULT '0',  `replies` mediumint(8) unsigned NOT NULL DEFAULT '0',  `attachment` tinyint(1) NOT NULL DEFAULT '0',  `closed` mediumint(8) unsigned NOT NULL DEFAULT '0',  `status` smallint(6) unsigned NOT NULL DEFAULT '0',  PRIMARY KEY (`tid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;--論壇文章內容CREATE TABLE post (  pid int(10) unsigned NOT NULL AUTO_INCREMENT,  fid mediumint(8) unsigned NOT NULL DEFAULT '0',  tid mediumint(8) unsigned NOT NULL DEFAULT '0',  `first` tinyint(1) NOT NULL DEFAULT '0',  author varchar(15) NOT NULL DEFAULT '',  authorid mediumint(8) unsigned NOT NULL DEFAULT '0',  `subject` varchar(80) NOT NULL DEFAULT '',  dateline int(10) unsigned NOT NULL DEFAULT '0',  message mediumtext NOT NULL,  useip varchar(15) NOT NULL DEFAULT ''  PRIMARY KEY (tid,pid)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2,具體分析

從頁面來分析,按照使用者訪問路徑分析。
首先使用者訪問論壇首頁,這個地方會直接查詢forum表。
裡面儲存了論壇板塊資訊,主題數量,貼文量。

比如一個騎行網站論壇:http://www.517318.com/ (隨便找的)

考慮到效率,在forum表中儲存了一些冗餘資訊,計數的資訊直接記錄到了這張表裡面。

然後進入主題頁面

這裡查詢了下thread表,thread表也做了資料冗餘。
當使用者發帖的適合會建立一個thread表,只存標題數量,再建立一個post表,post裡具體的內容。

如果是發帖,則thread表和post表都插入資料。
如果是回帖,則只記錄post表同時,同時記錄thread id。
只有第一個是發帖,其他的都是回帖。

3,總結

本文的原文串連是: http://blog.csdn.net/freewebsys/article/details/47343257 未經博主允許不得轉載。

論壇資料庫設計通過3張表,分開放不同資料,得到3種頁面查詢速度都很快。
這對於我們的系統設計很有啟發,類似的情況還有部落格資料庫設計。
把部落格的標題存成一張表,部落格的內容存成一張表,資料分開後,兩種情況查詢都得到最佳化。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.