多人博客项目(数据库设计+Django项目创建)
1、分析:
多人使用的博客系统,采用BS 架构实现,为了提供显示页面,所以用浏览器,内部通讯的话,就不需要,CS就可以
博客系统,需要用户福安里,博文管理
用户管理:注册,增删查改用户
博文管理:增删改查博文
需要数据库:本次使用MySQL5.5, InnoDB 引擎
需要支持多用户登录,各自可以管理自己的博文(增删改查),管理是不公开的,但是博文是不需要登录就可以公开流浪的
先实现最小的核心需求代码
2、数据库设计
①、创建数据库:blog
②、创建用户表,文章表
创建用户表user:
创建文章post
一个用户 会写多篇博客,所以是一个一对多的情况,为了能在 post表中找到相应用户的文章,所以post使用author 类型为int,对应user表中的主键id,(一对多,外键放在多的一侧)
用户名对应的id 是唯一的,所以可以找到 post对应的author
但是,正常业务,查是通过title查,所以没必要吧内容一下都显示,所以再次分离,将content 分开
创建内容表 content:
一个 post.title ===》一个content 所以,content.id === post.id 一一对应
如果post删除一行,content 也要删除,最好content加一个外键,保证数据一致性
思考:
content 多大合适,图片如何处理:
1、字段类型
博文一般很长,不可能只有几百个字符,需要打文本字段、MySQL中,选择text类型而不是char或者varchar类型
2、大小
text 类型是65535个字符,如果不够用,有longtext 2^32-1个字符
3、图片
博文就像HTML 一样,图片是通过路径信息将图片嵌入在内容中。所以保存的内容还是字符串
图片来源有两种,
外链:通过URL 连接访问,本站不用存储该图片,但容易引起倒链问题
本站存储:需要提供博文在线文本编辑器,提供图片上传到网站存储,并生成图片URL,这个URL嵌入booked正文,不会有倒链,但是要解决众多图片存储问题,水印问题,临时图片清理,在线压缩等
4、字段考虑
content字段存储文本类型大字段,一般不喝数据频繁查询的字段放在一张表中,需要拆到另一张表
注:这里的SQL脚本本次不要使用生成表,使用ORM 工具来创建,用来检查实体类构建是否正确
3、项目:
项目构建:
1、
2、
3、以后可以直接在这里选择环境
4、
图片来源有两种: