vscode+django 搭建自己的个人网站(二) ——具体的需求分析与数据库结构分析
前言
搭建一个网站需要先对网站的结构进行分析,一遍我们对后面的页面关系创建和数据库关系的创建进行更清晰的分析。
首先我们先对我们博客网站的需求进行分析。blog的功能比较简单,主要以个人的文章为主。
需求分析
从功能需求来看,这个blog的功能有:网站首页、文章分类、文章内容、幻灯图片、文章推荐、文章排行、热门推荐、文章搜索、友情链接。
·网站首页:网站首页是整个网站的主页面,也是网站的入口界面,里面主要是展示blog的动态信息以及blog的功能导航。网站动态信息主要以文章为主,如新文章、幻灯图片、推荐阅读、文章排行、热门推荐、友情链接等。导航栏主要是将文章的分类的链接展示在首页,方便用户浏览。
·文章分类:主要展示文章分类信息以及链接,方便用户按需要查看。文章分类可以在文章的后台删除。
·文章内容:主要展示文章索树分类、文章索树标签、文章内容、作者信息、发布的时间信息。可以通过后台增、删改等操作。
·幻灯图片:在网站首页,通过图片和文字展示一些重要信息,可以通过后台添加图片、图片描述、图片链接。
·文章推荐:推荐一些重要的文章,可以在后台推荐
·文章排行:可以根据文章浏览数,按时间段进行查询,然后展示出来。具体还可以根据自己的需求更改。
·热门推荐:与文章排行文章推荐相同
·文章搜索,通过关键词搜索文章
·友情链接:展示相互链接的网站的名称与链接,可以通过后台增加或者删除
·单页面:展示网站介绍,作者的联系方式等信息,此类信息不经常变动,可以通过后台实现更改,也可以通过模板实现更改
了解需求之后,就由UI设计师根据网站需求来设计网站页面,然后由前端工程师根据设计好的页面进行切图,实现HTML静态页面,最后由后端根据HTML页面和需求实现数据库构建和网站后台开发,不过自己的博客当然需要自己全部来设计完成。
从设计的方面来看,blog主要分为六个页面:网站首页、文章分类列表页、文章内容页、搜索列表页、标签列表页、单页面
数据库设计分析
从网站需求分析及网站功能、页面设计可以知道,我们的Blog主要以文章内容为主。所以我们在设计数据库的时候,我们主要以文章信息为核心数据,然后逐步向外扩展相关联的数据信息。
这其中,文章与分类的关系是一对多的关系,什么是一对多?就是一篇文章只能有一个分类,而一个分类里可以有多篇文章。文章与标签的关系是多对多的关系,多对多简单理解就是,一篇文章可以有多个标签,一个标签里同样可以有多篇文章
首先,我们先分析我们想要的文章页面内包含哪些信息,将文章的表命名为Article,通过前面的分析列出下面的表:
表字段 | 字段类型 | 备注 |
---|---|---|
id | INTEGER类型,长度为11 | 主键,有系统自动生成 |
title | VARCHAR类型,长度为100 | 文章标题 |
category | FOREIGNKEY | 外键,关联文章分类表 |
tags | MANYTOMANYFIELD | 多对多,关联标签列表 |
body | TEXTFIELD | 文章内容 |
user | FOREIGNKEY | 外键,文章作者关联用户模型,系统自带 |
views | POSTIVEINTEGERFIELD | 文章浏览数,正的整数,不能为负 |
tui | FOREGNKEY | 外键,关联推荐位表 |
creates_time | DATETIMEFIELD | 文章发布时间 |
文章关联了一个分类表,将这个表命名为category,category表的结构如下:
表字段 | 字段类型 | 备注 |
---|---|---|
id | INTEGER类型,长度为11 | 主键,表示文章,由系统自动生成 |
name | VARCHAR类型,长度为30 | 分类名 |
文章关联了一个标签表,命名这个表为tag,这个表的结构如下:
表字段 | 字段类型 | 备注 |
---|---|---|
id | INTEGER类型,长度为11 | 主键,由系统自动生成 |
name | VARCHAR类型,长度为30 | 文章的标签名 |
文章关联推荐位表,这里命名为tui,这个表的结构如下:
表字段 | 字段类型 | 备注 |
---|---|---|
id | INTEGER类型,长度为11 | 主键,由系统自动生成 |
name | VARCHAR类型,长度为30 | 标签名 |
除了文章以外,我们还需要两个与之前没有关联的表,第一个是幻灯片图表,命名为banner,数据库结构如下:
表字段 | 字段类型 | 备注 |
---|---|---|
id | INTEGER类型,字长11 | 主键,由系统自动生成 |
text_info | VARCHAR类型,字长100 | 标题,存储图片信息 |
img | IMAGE类型 | 图片类型,保存传图片的类型 |
link_url | URLFIELD类型 | 图片链接的URL |
is_active | BOOLEANFIELD | 有TRUE和FALSE两个类型,意思为是否激活 |
第二个为友情链接表,命名为link,结构如下:
表字段 | 字段类型 | 备注 |
---|---|---|
id | INTEGER类型 | 主键,由系统自动生成 |
name | VARCHAR类型,长度为70 | 友情链接的名称 |
linkurl | URLFIELD类型 | 友情链接的URL |
目前,需要的数据库大概已经完全了解了,但是DJANGO自带了SQLLITE3数据库,可是笔者觉得目前更适合MYSQL数据库使用,所以在了解了配置文件的使用后决定更换数据库