程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 多版面論壇數據庫表結構優化設計的討論

多版面論壇數據庫表結構優化設計的討論

編輯:關於PHP編程

近一直在腦子裡構思一個全新的論壇。想與大家討論一下“多版面論壇數據庫表結構的優化設計”問題。

問題的提出:
作為一個綜合性的論壇,必然會遇到論壇分類的問題。常見的單層次多版面的結構太簡單了點,在分類的問題上力不從心,無法實現比較復雜的分類。而像phorum那樣的多層次多版面的結構固然能夠實現任意復雜的分類(可以實現無限層次的目錄分類結構),但是存在的難題就是導航不直觀也不方便。所以我覺得,目前網上常見的雙層多版面的結構是比較合理的,基本上滿足了綜合性論壇分類的要求,又能比較方便地實現直觀、方便的論壇導航界面,例子有www.chinaasp.com目前的論壇。這種結構有兩層目錄,上面一層是大類,下面一層是分類,即具體的論壇版面。如何利用數據庫的表來比較高效地實現這種結構呢?

方案一:
不管論壇將來有多少個版面,都把所有的帖子存放到一個表中,這個表中記錄一個帖子的所有信息和該帖子所屬的小類ID號碼,假設這個表稱為T_articles,用表T_columns1紀錄大類信息(大類名和該大類的ID號碼),用表T_columns2紀錄小類信息(小類名、小類ID號碼和該小類所屬的大類ID號碼)

方案二:
給每一個小類新建一個表,把屬於該類的帖子都存放到這個表中,這個表中僅紀錄一個帖子的自身信息(主題、正文等),此類表都用T_articles1、T_articles2等表示。用表T_columns1紀錄大類信息(大類名和該大類的ID號碼),用表T_columns2紀錄小類信息(小類名、小類ID號碼和改小類所屬的大類ID號碼)

要求:
1、要求無論大類小類都便於將來的擴充;
2、要求設計出來的表結構能提高數據庫檢索效率;

比較:
方案一與方案二哪一種好一些?

大家不妨來討論一下?


轉載“江南論壇”中一位朋友的回復
cach 於 2001-1-18 23:51:59 加貼在 編程大本營
方案一比較好擴充版面,但是不足的是隨著貼子的增多,數據量會越來越大,
做一次查詢會比較費時間,而且萬一數據表出了問題就麻煩了。
不過好處是編程要容易的多。現在很多論壇都是用這個方案的!
而方案二相比來說會速度快些,不過編程時可能要多費一些時間!
我覺得方案二中還應該加一些內容,就是T_columns2中加上一個字段,用來
放新建的小類的表名(因為方案二是一個討論區建一個表的,這些表因該都是
動態添加的,所以有必要加一個字段存放表名,到時可以通過這個字段做參數
來生成相應的討論區),優點是速度快,一個討論區的表出了問題並不影響
其它的討論區,所以我還是覺得方案二更好些!
以上是個人觀點!

版權聲明: 本帖版權歸提交者cach所有,其它網站轉載或轉貼須注明出處,傳統媒體轉載
      須事先與原作者和江西熱線聯系,本帖提交者發言純屬個人意見,與本網站立場無關。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved