論壇資料庫設計還是挺有意思的,按照業務邏輯進行拆分的資料庫設計。
首先,如果是乙個部落格就乙個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;
從頁面來分析,按照使用者訪問路徑分析。
首先使用者訪問論壇主頁,這個地方會直接查詢forum表。
裡面儲存了論壇板塊資訊,主題數量,帖子數量。
比如乙個騎行**論壇: (隨便找的)
考慮到效率,在forum表中儲存了一些冗餘資訊,計數的資訊直接記錄到了這張表裡面。
然後進入主題頁面
這裡查詢了下thread表,thread表也做了資料冗餘。
當使用者發帖的適合會建立乙個thread表,只存標題數量,再建立乙個post表,post裡具體的內容。
如果是發帖,則thread表和post表都插入資料。
如果是回帖,則只記錄post表同時,同時記錄thread id。
只有第乙個是發帖,其他的都是回帖。
論壇資料庫設計通過3張表,分開放不同資料,得到3種頁面查詢速度都很快。
這對於我們的系統設計很有啟發,類似的情況還有部落格資料庫設計。
把部落格的標題存成一張表,部落格的內容存成一張表,資料分開後,兩種情況查詢都得到優化。
分析論壇資料庫設計 分析
論壇資料庫設計還是挺有意思的,按照業務邏輯進行拆分的資料庫設計。首先,如果是乙個部落格就乙個post表記可以了。然後考慮到論壇資料量比較大,所以在設計上有優化。論壇把資料庫分成3個資料表,這樣在訪問不同頁面的時候都查詢很快。資料庫表參考discuz 資料庫設計 只是挑了些相關字段,沒有把所有字段列出...
社群論壇設計分析
論壇是乙個使用者可以和他人通過發布由話題連線起來的帖子進行互動的 通常,論壇允許所有人閱讀帖子,但只有登入的註冊使用者才能發帖和參與討論。因此,第乙個設計要求就是只有登入後的註冊使用者才有許可權發帖。第二個要求是實現只允許特定使用者管理論壇的機制,其他使用者則沒有這個許可權。通常,這些功能包括新增新...
許可權管理系統資料庫表的設計分析
為什麼要分析這些呢?因為從前端到後端都自己寫的話,資料庫中表結構的設計是基礎,很關鍵,這樣從前到後才是清晰的 許可權控制 就是指對選單和按鈕可見性的控制,選單 根據登入使用者返回的選單資料進行動態載入,v for遍歷 按鈕 比如點開訂單管理介面,會先從功能表中查詢出對應的按鈕許可權資料進行判斷顯示還...