从零开始建站(二) - 数据库与项目规划
簡介:
這節來介紹個人網站項目的數據庫字段選擇與項目整體的規劃,上一節講了準備工作和環境搭建,就好比建一棟大樓,上節我們把材料買齊了,地基打好了,然后我們這節就是來思考一下我們要怎樣利用這些材料,以及要用這些材料怎么建成我們想要的大樓。因為是自己來畫前臺,寫后臺,所以建成什么樣全是我們說了算,這點還是挺舒服的。
一、模塊劃分
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 按鈕動畫特效(這個網站要翻墻,只能幫你到這了):
http://ianlunn.github.io/Hover/?: hover.css
4.6 頁面模塊塊動畫特效:
http://mynameismatthieu.com/WOW/?: wow.js
4.7 圖標字體(這個網站又要翻墻,為啥好東西都要翻墻):
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,希望自己慢慢學習,慢慢進步。
總結
以上是生活随笔為你收集整理的从零开始建站(二) - 数据库与项目规划的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IOS添加自定义的字体文件
- 下一篇: 数字化浪潮催生新组织关系,看用友云人力服