從零開始建站(二) - 數據庫與項目規劃

簡介:

這節來介紹個人網站項目的數據庫字段選擇與項目整體的規劃,上一節講了準備工作和環境搭建,就好比建一棟大樓,上節我們把材料買齊了,地基打好了,然後我們這節就是來思考一下我們要怎樣利用這些材料,以及要用這些材料怎麼建成我們想要的大樓。因爲是自己來畫前臺,寫後臺,所以建成什麼樣全是我們說了算,這點還是挺舒服的。

一、模塊劃分

1.多瀏覽

開始我也不知道自己網站要建成什麼樣子,然後去百度搜索了一下優秀的個人博客網站,找到一個女才子楊青的個人博客,而且她的網站裏面還有一個優秀的個人博客鏈接,裏面的很多博客給了我很大的啓發。不多說,上圖:

 

2.總結歸納

當你看過很多博客後,我們就可以歸納一下。如果你是想寫點東西展示出來的話,個人博客大致就可以包含以下幾個模塊:文章、日誌、隨筆、實時新聞、生活、歌曲討論、電影交流、遊記、文章歸檔(也可以叫時光軸)、關於我、留言簿等等。你可以選取自己需要用到的。像我這的網站文章區就選取了兩個,一個寫一些技術方面的東西,另一個發表一下自己的心情、瑣事、討論一些有趣的話題等。其他的模塊基本就無關緊要,點綴一下而已。

3.簡單介紹一下我的網站的文章區的構造及功能:

3.1 文章列表:顯示文章的粗略信息

3.2時間(或日期):提醒我時間的寶貴

3.3公告板:展示一些雞湯文,提醒自己努力奮鬥

3.4 鏈接:把自己的幾個常用網站互相關聯,打造自己的標籤

3.5 文章分類:快速定位自己想要尋找的文章

 

3.6 閱讀排行:顯示出網友所關心的文章,這樣分析下來,其實每一個模塊都是有用的,不是放在那裏單純擺設的,所以我要先想好自己需要什麼,再去想怎麼構造好它。(小提示,開始我也是緣於興奮,把網站頁面弄的花裏胡哨的,後來網站建好後,慢慢以讀者的角度去看待,發現真的很扎眼睛,然後我就化繁爲簡,只留了幾個小幅度的動畫效果和淡雅的顏色,還去掉了非主流的動態背景圖,而且還能提高網站的加載速度)

4.頁面潤色

既然說到界面的審美和優化,我就推薦幾個我在建站中遇到的幾個十分有幫助的網站,供大家參考:

4.1前端大神,各種前端素材,前端教程,動畫,小技巧,反正牛逼就是了:https://www.cnblogs.com/lhb25/ : 夢想天空

4.2 前端設計師,女大神,上面也提到了,裏面有很多優秀博客:http://www.yangqq.com/ : 楊青

4.3 很全的顏色代碼表,經常用到,建議保存爲書籤:http://tool.oschina.net/commons?type=3 : 開源中國顏色代碼表

4.4 藝術簽名,我的logo就來自這裏:http://www.yishuzi.com/ : 藝術字

4.5 按鈕動畫特效(這個網站要FQ,只能幫你到這了):http://ianlunn.github.io/Hover/ : hover.css

4.6 頁面模塊塊動畫特效:http://mynameismatthieu.com/WOW/ : wow.js

4.7 圖標字體(這個網站又要FQ,爲啥好東西都要FQ):http://fontawesome.dashgame.com/ :fontawesome.css

還有一些我這裏就不一一介紹了,有心的可以自己找。

二、數據庫

1.數據庫建表規則:

三大範式

>一張表中的每一個屬性都不能再分,確保每一列的原子性(舉個栗子:文章表中包含有用戶名這個字段,用戶不但有用戶名,還有其它地址和電話信息,這個時候就要把用戶拆出來新建一個用戶表,用userId來關聯)

>首先滿足第二範式,然後要求表中的所有列,都必須依賴於主鍵,而不能有任何一列與主鍵沒有關係,也就是說一個表只做一件事情(舉個栗子:訂單表中存在產品名稱和產品折扣字段,那麼這個產品折扣與訂單主鍵訂單號沒有半毛錢關係,他與產品主鍵有關係,應該放在產品表中)

>首先滿足前兩個範式,然後數據不能存在傳遞關係,即沒個屬性都跟主鍵有直接關係而不是間接關係(再舉個栗子:還是訂單表中存在訂單ID、顧客ID、顧客姓名、顧客地址,雖然顧客姓名和地址跟主鍵訂單ID,有關聯,但是他不是直接關聯,而是通過顧客ID傳遞關聯,所以訂單表應該只存在顧客ID就夠了)

三大軍刀:

忘了以前從哪裏聽來的這個詞,大概意思是這幾個字段雷打不動

>id

>create_time

>modified_time

>is_delete(這個可加可不加,用於邏輯刪除時需要加)

2.建表:

文章表article:我把文章和話題共用一張表(評論數可以通過連評論表查詢,但是我這裏增加了一個評論數的字段,爲了提高查詢速度,不推薦這樣做)

字段

長度

非空

備註

id

VARCHAR(36)

NOT NULL

主鍵ID

title

VARCHAR(100)

NOT NULL

文章標題

image

VARCHAR(200)

NOT NULL

文章配圖

summary

VARCHAR(300)

NOT NULL

文章簡介

type

TINYINT(1)

NOT NULL

文章類型:0-博客 1-話題

read_number

INT(10)

NOT NULL

文章閱讀量

comment_number

INT(10)

NOT NULL

文章評論數

thumb_up_number

INT(10)

NOT NULL

文章點贊數

create_time

DATETIME

NOT NULL

創建時間

modified_time

DATETIME

NOT NULL

修改時間

文章內容表article_content:因爲文章內容數據量很大,所以文章內容單獨用一張表,這樣單純查詢文章列表的時候,效率會高一些:

 

字段

長度

非空

備註

id

VARCHAR(36)

NOT NULL

主鍵ID

content

MEDIUMTEXT 

NOT NULL

文章內容

article_id

VARCHAR(36)

NOT NULL

文章信息ID

create_time

DATETIME

NOT NULL

創建時間

modified_time

DATETIME

NOT NULL

修改時間

 

文章與分類關聯表article_category:因爲文章表與分類表是多對多的關係,所以我們用一箇中間表來關聯他們(這個articleId其實應該叫accessId更好因爲它也可能是放的圖片ID,跟圖片表關聯,我懶得改字段了,將就着用啦):

 

字段

長度

非空

備註

id

VARCHAR(36)

NOT NULL

主鍵ID

article_id

VARCHAR(36) 

NOT NULL

分類ID

category_id

VARCHAR(36)

NOT NULL

文章ID

create_time

DATETIME

NOT NULL

創建時間

modified_time

DATETIME

NOT NULL

修改時間

 

分類表category:我們考慮到圖片和後期擴展別的模塊也要有分類,所以我們用一個type字段來區分:

 

字段

長度

非空

備註

id

VARCHAR(36)

NOT NULL

主鍵ID

name

VARCHAR(50) 

NOT NULL

分類名稱

type

VARCHAR(3000)

NOT NULL

類型:0-文章 1-話題 2-圖片

create_time

DATETIME

NOT NULL

創建時間

modified_time

DATETIME

NOT NULL

修改時間

 

文章評論表comment:最開始我也設計了用戶表,如果設計用戶表就要考慮註冊的問題,但是想了想我的網站也沒什麼人看,沒人會註冊,所以就又去掉了。然後評論就改成了隨意填用戶名的方式,所以這裏也就成了用戶名和頭像地址都在評論表中。(如果有用戶表,應該拆出一個單獨的用戶表)

字段

長度

非空

備註

id

VARCHAR(36)

NOT NULL

主鍵ID

article_id

VARCHAR(36) 

NOT NULL

文章信息ID

content

VARCHAR(3000)

NOT NULL

評論內容

user_name

VARCHAR(60)

NOT NULL

評論者暱稱

image

VARCHAR(100)

NOT NULL

評論者頭像圖片路徑

create_time

DATETIME

NOT NULL

創建時間

modified_time

DATETIME

NOT NULL

修改時間

留言表message:這個就不多介紹了,就是比評論表少一個article_id字段

字段

長度

非空

備註

id

VARCHAR(36)

NOT NULL

主鍵ID

content

VARCHAR(3000)

NOT NULL

留言內容

user_name

VARCHAR(60)

NOT NULL

留言者暱稱

image

VARCHAR(100)

NOT NULL

留言者頭像圖片路徑

create_time

DATETIME

NOT NULL

創建時間

modified_time

DATETIME

NOT NULL

修改時間

回覆表reply:這個回覆表與兩張表有關聯(評論表和留言表),comment_id可能存放評論表的ID,也可能是留言表的ID:

字段

長度

非空

備註

id

VARCHAR(36)

NOT NULL

主鍵ID

comment_id

VARCHAR(36)

NOT NULL

評論ID

content

VARCHAR(3000)

NOT NULL

回覆內容

user_name

VARCHAR(60)

NOT NULL

回覆者暱稱

image

VARCHAR(100)

NOT NULL

回覆者頭像圖片路徑

create_time

DATETIME

NOT NULL

創建時間

modified_time

DATETIME

NOT NULL

修改時間

每日一語表everyday_talk:這個表的ID我是按1開始自增的,在後臺啓用了一個定時任務,在每天的凌晨把保存的靜態變量ID自增1,然後查詢出內容保存另一個靜態變量供前臺調用。

字段

長度

非空

備註

id

VARCHAR(36)

NOT NULL

主鍵ID

content

VARCHAR(3000)

NOT NULL

每日一語內容

create_time

DATETIME

NOT NULL

創建時間

modified_time

DATETIME

NOT NULL

修改時間

因爲第一次設計,所以我並不是先設計表再設計前後臺的,因爲我也不知道要用哪些字段,所以我先畫的頁面,作爲一個後端開發,畫一個前端頁面的確是難,我一邊學着vue框架,一邊畫着頁面,然後就耗了太多時間,搞的自己都有點疲了,後來搞後端就一切從簡了,數據庫表也儘量簡單來了。

三、需求分析圖

1.前臺:

2.後臺:

 

 這節就寫到這吧,其實我感覺這節沒什麼寫的必要。不過激動人心的時刻就要來了,下節我們就要開始搭前端項目,寫前端代碼了,因爲我也不懂前端,所以前端代碼寫的很low,希望自己慢慢學習,慢慢進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章