天天看點

明白了資料庫的多表連接配接

  其實最近想搞一個BLOG之類的東西,是以才會去試着做公告闆或者是留言本.雖然三者有相似的地方,但是也有不同點.公告闆考慮的最少,隻要可以給管理者寫公告就可以,是以隻要一個表就可以解決.表裡面隻要有幾個列就可以,例如title(标題),content(内容),posted(發表的時間)就足夠了.很容易做得到.但是到了留言本,就要有多些東西了.如果制作簡單的留言本,其實就不複雜.因為不需要回複.隻是每個人留言,就插入一條新的資料,儲存後就可以了.但是如果要制作複雜的留言本,其實就和制作BLOG一樣了.要考慮到可以回複留言.這是很關鍵.這樣一個表是做不到的,我覺得.因為一個表隻有一個主鍵,根本連接配接不到.這個問題困惑了我很久.幸好前天師兄給了點幫助,但是那時候還是覺得很難了解,但現在終于明白了.原來是這麼一回事.

  如果考慮到最複雜,就是類似于論壇的樣子,使用者必須要注冊才可以留言,這樣就要建立三張表,一張是user(使用者),裡面包括使用者ID(主鍵),使用者名,使用者密碼等等的使用者資訊,然後第二張表為文章(essay),裡面包括文章序号(主鍵),标題,使用者ID等,這樣,user表和essay表就可以連接配接起來了,還有一張就是回複表(reply),包括回複序号(主鍵),文章序号,使用者ID,回複内容等等,這樣三張表就可以連接配接起來了.其實使用者發表的第一篇也是回複來的,但是他是第一個發,是以就是文章,而下面的回複,就是評論.如果不需要使用者注冊,就友善多了.隻要兩張表就可以了.不需要user表,使用者的資訊加入到essay表和reply表當中.兩張表連接配接就要以essay表為主要了,每發一次文章,就會記錄下文章的序号,文章的序号,也是以加入到了回複表中,這樣用語句"SELECT * FROM post WHERE threadID=$threadID ORDER BY posted ASC";就可以搜尋到相應文章序号的所有回複,再按時間的順序輸出.明白了這一點,就容易做到删除回複怎麼做了,我覺得就是把相應的回複序号的資料一行行删除,就等于把回複删除了,如果要删除文章,也是一樣,把相應的文章序号删除,還有把相應文章序号的回複序号删除,就可以了.而BLOG的最新回複,就是把回複表中按時間最新的五個或者十個回複輸出.然後按下去的話,就會根據回複表中相應的文章序号找到該文章.