Django博客开发教程:数据库设计分析
从网站需求分析及网站功能、页面设计可以知道,我们的Blog主要以文章内容为主。所以我们在设计数据库的时候,我们主要以文章信息为核心数据,然后逐步向外扩展相关联的数据信息。
从这篇文章http://demo.django.cn/show-10.html可以看到,文章有标题、分类、作者、浏览次数、发布时间、文章标签等信息。
这其中,文章与分类的关系是一对多的关系,什么是一对多?就是一篇文章只能有一个分类,而一个分类里可以有多篇文章。文章与标签的关系是多对多的关系,多对多简单理解就是,一篇文章可以有多个标签,一个标签里同样可以有多篇文章。关于一对多、多对多,大家可以查看这篇文章:多个数据模型间的关系
我们将文章表命名为Article,通过前面的分析得出文章信息表Article的数据库结构如下:
表字段 | 字段类型 | 备注 |
id | int类型,长度为11 | 主键,由系统自动生成 |
title | CharField类型,长度为100 | 文章标题 |
category | ForeignKey | 外键,关联文章分类表 |
tags | ManyToManyField | 多对多,关联标签列表 |
body | TextField | 文章内容 |
user | ForeignKey | 外键,文章作者关联用户模型,系统自带的 |
views | PositiveIntegerField |
文章浏览数,正的整数,不能为负 |
tui | ForeignKey |
外键,关联推荐位表 |
created_time | DateTimeField |
文章发布时间 |
从文章表里,我们关联了一个分类表,我们把这个分类表命名为category,category表的数据库结构如下:
表字段 | 字段类型 | 备注 |
id | int类型,长度为11 | 主键,由系统自动生成 |
name | CharField类型,长度为30 | 分类名 |
文章关联的标签表,我们命名为tag,结构如下:
表字段 | 字段类型 | 备注 |
id | int类型,长度为11 | 主键,由系统自动生成 |
name | CharField类型,长度为30 | 标签名 |
文章关联的推荐位表,命名为tui,结构如下:
表字段 | 字段类型 | 备注 |
id | int类型,长度为11 | 主键,由系统自动生成 |
name | CharField类型,长度为30 | 标签名 |
除此之外,我们还有两个独立的表,和文章没有关联的,一个是幻灯图片的表,一个是友情链接的表。
幻灯图表,命名为banner,数据库结构如下:
表字段 | 字段类型 | 备注 |
id | int类型,长度为11 | 主键,由系统自动生成 |
text_info | CharField类型,长度为100 | 标题,图片文本信息 |
img | ImageField类型 | 图片类型,保存传图片的路径 |
link_url | URLField类型 | 图片链接的URL |
is_active | BooleanField布尔类型 | 有True 和False两个值,意思为是否激活 |
友情链接表命名为link,结构如下:
表字段 | 字段类型 | 备注 |
id | int类型,长度为11 | 主键,由系统自动生成 |
name | CharField类型,长度为70 | 友情链接的名称 |
linkurl | URLField类型 | 友情链接的URL |
至此,我们的数据库构造大致完成,后期如果还有其它的需求,我们可以在这基础上进行增加或者删除。下面我们就开始进行项目的创建与开发。