ASP技術在論壇中的運用(二)

來源:互聯網
上載者:User
對於論壇或者留言板,實現起來有一般兩種方法:用檔案或者資料庫。相對而言,用資料庫要簡單高效一些,能夠對論壇進行更好的控制,也能夠對資料提供一些驗證和保護。

  這兒使用的是ACCESS資料庫,對於一般的中小型的應用,ACCESS應該是能夠勝任的。

  從上面的分析可以知道應該有四個表,下面我給出每個表的結構。

  

  作者表(存放作者資訊):

  ID:文本類型,必填。是網友代號。

  密碼:文本類型,必填。

  暱稱:文本類型,必填。

  EMAIL:文本類型,必填。

   職務:數字類型,必填。-1代表普通網友,0代表站長。大於0的數字代表斑竹,並且號碼是相應的看板表中某個板的ID,表示是那個板的斑竹。

  文章數:數字類型,必填。網友發表的文章總數。

  姓名:文本類型,可選。

  性別:文本類型,可選。

  電話:文本類型,可選。

  

  內容表(存放具體文章內容和相關資訊):

  ID:自動編號,並為其設定索引,以加快搜尋的速度。

   看板ID:數字類型,來自看板列表,表示文章所屬看板。

   主題ID:數字類型,來自主題表,表示文章所屬主題。

   作者ID:文本類型,來自作者表,表示文章的作者。

   日期:日期/時間類型,預置初值為函數NOW(),系統在添加這一條欄位時,將自動取系統目前時間為其值。

  標題:文本類型。文章的標題。

  發表:是/否類型,為“真”時表示文章已經通過審閱,可以發表;為“否”表示文章尚待審閱。

  推薦度:數字類型,文章的推薦程度。

  內容:備忘類型,文章的具體內容。

  點擊次數:數字類型,文章的點擊次數。

  

  看板列表(存放有關看板的資訊):

  ID:自動編號,同樣的,也為其設定了索引。

  名稱:文本類型,看板的名稱。

  板主:文本類型,看板斑竹的ID。

  主題數:數字類型,看板中包含的主題數。

  

  主題表(存放有關主題的資訊):

  ID:自動編號,並為其設定索引。

  標題:文本類型,表示主題名。

  看板:數字類型,來自看板列表,表示主題所屬的看板。

  文章數:數字類型,主題中包含的文章數。

  

   所有的表是設計完了,但是資料庫的設計並沒有完。我們還需要建立表間關係,這樣就能夠讓資料庫執行一些相關性檢查,避免資料出錯。建立表間關係的另外的一個好處,就是通過它能夠很容易的建立出複雜的JOIN查詢。

  在上面的表中,可以很容易的看到這些表間關係。從下圖中可以看到這些關係是如何聯絡各個表的。


  

  通常我們在ASP中操作資料庫的時候,都是使用的運行時產生的查詢,然後由傳遞給資料庫解釋執行。而在這兒我們要用的是存貯查詢。與運行時查詢比較而言,存貯查詢具有更多的優點。

   它儲存在資料庫中,獨立於ASP代碼,使得他更容易建立和修改,並且查詢的效率更高,速度更快,可以調試好了以後再放在ASP頁面中調用,能避免很多問題。而且使用存貯查詢的ASP代碼更加容易閱讀和修改。可能大家都對在ASP中調用SQL查詢感到很煩,特別是那些逗號啊,分號阿什麼的,一不小心就會出錯。使用存貯查詢後,就可以不用顧慮這些問題了。當然,存貯查詢再使用上也有一些要注意的地方,在後面我會詳細的講解它的使用方法。

   在ACCESS中建立存貯查詢是一件很容易的事,這兒我就不再多說了。如果確有不知道的,請參看《使用存貯查詢》一文,在這兒我只給出各個查詢的SQL語句代碼。

  我把所有要使用到的查詢都作為存貯查詢儲存在了資料庫中,主要的有以下的一些:

  安ID查詢文章:

  SELECT 主題表.標題 AS 主題名, 看板列表.名稱 AS 看板名, 內容表.*

   FROM 主題表 INNER JOIN (內容表 INNER JOIN 看板列表 ON 內容表.看板ID = 看板列表.ID) ON 主題表.ID = 內容表.主題ID

   WHERE (((內容表.ID)=[articleid]));

  斑竹密碼查詢:

  SELECT 看板列表.板主, 作者表.密碼

  FROM 作者表 INNER JOIN 看板列表 ON 作者表.ID = 看板列表.板主

  WHERE (((看板列表.ID)=[id];

  查詢作者:

  SELECT 作者表.*

   FROM 作者表

  WHERE (((作者表.ID)=[id]));

  發表文章列表:

  SELECT [內容表].[ID], [內容表].[標題], [內容表].[作者ID] AS 作者, [內容表].[日期], [內容表].[推薦度], [內容表].[點擊次數] AS 點擊數

  FROM 內容表

  WHERE ((([內容表].[主題ID])=[TopicIndex]) And (([內容表].[發表])=True));

  未發表文章列表:

  SELECT 內容表.ID AS 文章id, 主題表.ID AS 主題id, 主題表.標題 AS 主題, 內容表.標題 AS 標題, 內容表.作者ID AS 作者, 內容表.日期 AS 日期

  FROM 主題表 INNER JOIN 內容表 ON 主題表.ID = 內容表.主題ID

   WHERE (((內容表.發表)=False) AND ((內容表.看板ID)=[boardid]));

  主題列表:

  SELECT 主題表.*, 看板列表.名稱 AS 看板名

  FROM 看板列表 INNER JOIN 主題表 ON 看板列表.ID = 主題表.看板

  WHERE (((主題表.看板)=[boardIndex]));

  還有一些查詢,因為大多相近,我就不一一列出了。

  在上面的查詢語句中,可以看到一些由”[“和“]”包圍起來的東西,那就是查詢參數了。需要在運行時給出參數值,然後把參數值帶入到查詢語句中才能夠運行。還有一點要注意的是:在建立那些INNER JOIN查詢時,是需要把表間關係添加到設計檢視中的,否則是不能夠自動產生INNER JOIN查詢語句的。

   到這兒,資料庫的設計就算完了,以後的工作就是ASP的事了。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.