⑴ 如何進行文章分類和標簽的資料庫設計
幾乎在所有web項目中,都涉及文章分類和標簽的設計,應該說這是一個比較常見、典型的案例
站長並不保證我的思路就是最好的,只是分享出來大家一起交流一下,互相促進與提高
我們假設的開發項目是一個博客系統,最核心的部分就是與文章相關的,那麼我們今天討論如何設計博客系統的文章分類和標簽
1、首先,分類和標簽都是要和具體的文章相關聯的,當然也可能一些文章既沒有分類也沒有標簽,這一點是大家在寫查詢的時候容易疏忽的地方
因為我們的第一感覺就是,在查詢文章列表的時候關聯分類表,查出所有的文章和分類,對應關系一般是文章表的分類id對應分類表的id,使用where子句進行限定
這里就存在一個問題了,由於使用了where子句,那麼只能查詢有分類的文章,而沒有分類的文章就查詢不到了
這時候怎麼辦?應該使用連接查詢,leftjoin,這要沒有分類的文章,在文章分類id那一欄會顯示null
通常我們只使用leftjoin,而很少使用rightjoin
2、一般,一篇文章最好只對應一個分類,當然如果你想要對應多個分類也可以
但站長並不提倡,文章在多個分類中重復會給人很不專業的感覺,即使有些文章可能確實設計到多方面的內容,那麼你應就其中的側重點來分類
而標簽就不一樣了,一篇文章可能有多個標簽
這就意味著我們無法靠一個sql語句既查出所有文章的分類和標簽,又做到查詢結果中的文章id不重復
通常我們需要把查詢出來的結果直接循環出來,那麼這個結果一般是二維數組,第二維的都存儲了唯一一篇文章的相關信息
但是,標簽和文章是多對一的關系,多個標簽對應一篇文章,如果你只用一條sql語句的話,那麼我們查詢出來的結果,當然也是多行,這不符合我們目標數據的要求
應此,需要在查詢完文章和分類之後,在前面結果的基礎上再查詢一次文章標簽,把兩次的結果結合起來,存在數組中,這是對應文章列表頁面的查詢方法
對於具體文章頁面,可以分兩次查詢
好了,還沒有給出具體的資料庫設計,就先說了如何查詢結果,相信大家也看煩了,下面就舉例說明:一、文章表:post,欄位如下:id【唯一標識】,aid【作者id】,title【標題】,content【內容】,cid【分類id】二、分類表,category,欄位如下:id【唯一標識,與post表的cid關聯】,name【分類名】三、標簽表,tag,欄位如下:id【唯一標識】,name【標簽名】四、標簽與文章對應關系表,tag_,欄位如下:id【唯一標識】,postid【文章id,與post表的id關聯】,tagid【標簽id,tag表的id關聯】有朋友可能會問:為什麼要單獨用一個表來存儲文章與標簽圓伍睜的對應關系,為什麼不可以直接在tag表中增加一個文章id欄位呢,比如:tag表:id,postid,name這樣做的話,並不是不可以,但是,由於一篇文章對應多個標簽,所以name欄位的值橘陪會出現很多重復,比如一篇文章,假設文章id為1,有2個標簽,php和mysql,那麼在tag表會這樣存儲:id:1,postid:1,name:phpid2,postid:1,name:mysql另一篇文章,假設id為2,有2個標簽,也是php和mysql,那麼在tag表中它會這樣存儲:id:3,postid:2,name:phpid4,postid:2,name:mysql大家很快就發現了問題,這樣的設計name欄位也就是標簽的名稱在同一張表中可能會大量橘歲重復
但是這樣設計的好處是,如果你要查詢一個標簽下有多少篇文章,只要單獨查這個表就可以了,比如要查詢含有php標簽的文章有多少篇,只需要selectcount(name)??fromtagwherename=』php』,就可以查出來
不好的地方是,如果要查詢所有標簽的集合,使用這種設計需要使用groupbyname語句來去除重復的行
如果用之前的那種,只需要select*fromtag就可以了
一時之間,好像不太好取捨
這兩種設計都會有數據冢余,第一種tag_表中,存在tagid欄位的重復;而這兩種設計又都有各自的好處
那麼我們到底該怎麼選擇呢?站長也說不好,所以無法為大家下結論
但是站長在研究wordpress數據結構的時候,發現wp是採用的單獨建表存儲文章與標簽對應關系的方式
⑵ web系統設計(web系統)
您好,我就為大家解答關於web系統設計,web系統相信很多小夥伴還不知道,現在讓我們一起來看看吧!1、Web應用程序是一種可以通過Web訪問的...
您好,我就為大家解答關於web系統設計,web系統相信很多小夥伴還不知道,現在讓我們一起來看看吧!
1、Web應用程序是一種可以通過Web訪問的應用程序。
2、Web應用程序的一個最大好處是用戶很容易訪問應用程序。
3、用戶只需要有瀏覽器即可,不需要再安裝其他軟體。
4、一個Web應用程序是由完成特定任務的各種Web組件(web components)構成的並通過Web將服務展示給外界。
5、在實際應用中,Web應用程序是由多個Servlet、JSP頁面、HTML文件以及圖像文件等組成。
6、所有這些組件相互協調為用戶提供一組完整的服務。
7、(2)web設計博客系統擴展閱讀:應用程序有兩種模式C/S、B/S。
8、C/S是客戶端/伺服器端程序,也就是說這類程序一般獨立運行。
9、而B/S就是瀏覽器端/伺服器端應用程序,這類應用程序一般藉助IE等瀏覽器來運行。
10、WEB應用程序一般是B/S模式。
11、Web應用程序首先是「應用程序」,和用標準的程序語言,如C、C++等編寫出來的程序沒有什麼本質上的不同。
12、然而Web應用程序又有自己獨特的地方,就是它是基於Web的,而不是採用傳統方法運行的。
13、換句話說,它是典型的瀏覽器/伺服器架構的產物。
14、參考資料來源:網路-Web應用程序參考資料來源:網路-WEB伺服器。
⑶ 求一個javaweb做的博客系統源碼。。。
你可以自己下載:www.websbook.com/code/code/index_jsp_blog.html
⑷ 如何用django開發一個簡易個人Blog-Python
設計並實現一個基於Python的個人博客系統, 需要完成如下功能
完成個人博客系統的設計和開發
用戶可以通過個人博客系統,發布最新的日誌
運用所學專業理論及實踐,分析解決遇到的問題以提高自己的動手、思考及解決問題的能力
文章管理模塊:主要功能是管理員系統管理員登入後,瀏覽查看文章,刪除不好的文章等功能
標簽管理模塊:主要功能是管理員系統管理員登入後,瀏覽查看相冊,刪除相冊等功能
文章、標簽瀏覽模塊:主要功能是遊客進入系統後。可以瀏覽文章列表,可以按標簽查看文章
評論系統模塊, 遊客可以發表查看別人的評論
主要模塊如下
安裝與使用
項目採用Django框架進行開發, Django是一個用於快速web開發的優異方案(幾乎沒有之一), 獲取源碼後可以按照如下方式來運行代碼
新建mysql資料庫, 將資料庫sql文件導入
修改源碼包中的 csworkblog/settings.py 文件, 將DATABASES這個變數里的內容改一下, 這個就是你本地的資料庫url和用戶名密碼, 其中NAME為你的database名稱
進入源碼包, 打開cmd, 運行命令 python manager.py runserver 就能啟動服務, 埠為8000
http://localhost:8000/admin 為後台管理界面, 管理員用戶名密碼為 admin 123456, 可以進行文章管理標簽管理評論管理
界面還是比較好看的, 項目截圖源碼下載地址 cs-work.com/p/21031