BBS项目1 (基于Django框架) 项目开发流程 表设计

Django BBS项目

1 项目开发流程

1.1 需求分析

人员:架构师 + 产品经理 + 开发组组长

工作:与客户谈需求

目标:形成一个初步的方案。

为了避免客户提出难以实现的需求,一般谈需求前会大致了解客户的需求并准备一套易于实现的方案,在与客户沟通交流过程中逐渐引导客户向设计好的方案上靠。

1.2 项目设计

人员:架构师 + 产品经理 + 开发组组长

工作:

  1. 架构师选择编程语言、框架、数据库(主数据库、缓存数据库)等。
  2. 架构师功能划分
    将整个项目划分成几个功能模块,找开发组组长开会讨论,为每个组分发任务。
  3. 提出项目报价
    技术层面(开发组组长):确定程序员人数天数;
    公司层面(产品经理):是否需要售后、客服等。
    交给公司财务、老板确认。
  4. 产品经理与客户沟通讨论报价。
  5. 客户后续可能需要添加功能,与产品经理沟通增加预算。
1.3 分组开发

人员:开发组组长 + 组员

工作:
开发组组长分配任务,安排各自负责的功能模块。
组员在架构师设计好的框架中填写代码。

1.4 测试

组员完成代码并自己测试后,交给测试部门进行测试。

1.5 交付上线

方式1
交给对方的运维人员。

方式2
直接上线到我们的服务器上,同时收取维护费用。

2 BBS项目表设计

需求:博客园小项目
编程语言:Python
框架:Django
数据库:MySQL

2.1 用户表

继承AbstractUser类

用户表与个人站点表是一对一关系,外键建议位于查询频率较高的表中。

扩展字段

字段标签字段名
手机号码phone_number
用户头像avatar
创建日期create_date
个人站点(个人站点表一对一外键)personal_site
2.2 个人站点表
字段标签字段名
站点名称site_name
站点标题site_title
站点样式site_style
2.3 文章标签表(has)
字段标签字段名
标签名name
个人站点(个人站点表一对多外键)personal_site
2.4 文章分类表(is)
字段标签字段名
分类名name
个人站点(个人站点表一对多外键)personal_site
2.5 文章表
字段标签字段名
文章标题title
文章描述description
文章内容content
发布日期create_date
点赞数likes_num
点踩数dislikes_num
评论数comments_num
个人站点(个人站点表一对多外键)personal_site
文章分类(文章分类表一对多外键)category
文章标签(文章标签表多对多外键)tag

数据库优化
虽然点赞数、点踩数和评论数这三个字段可以通过跨表查询操作从点赞点踩表和文章评论表中获取,但是频繁的跨表查询会降低效率。
解决方法:
在文章表创建点赞数、点踩数和评论数三个普通字段,当点赞点踩表和文章评论表进行创建或删除数据操作时,通过触发器(trigger)同步更新文章表中对应的字段值。

2.6 点赞点踩表

功能:记录哪个用户为哪一篇文章点赞/点踩。

字段标签字段名
用户外键ForeignKey(to=‘UserInfo’)
文章外键ForeignKey(to=‘Article’)
点赞或点踩is_like
2.7 文章评论表

功能:记录哪个用户为哪一篇文章写了什么评论内容。

这里涉及到根评论和子评论。
根评论:针对文章的评论;
子评论:针对评论的评论。

一个根评论可以有多条子评论,根评论与子评论之间是一对多的关系,但是根评论与子评论使用的是同一张表,这里使用自关联
自关联是设置自己与自己相关联,对于根评论,该字段为空,对于子评论,该字段是其根评论的主键值。
因此该字段可以为空,需要设置null=True。

ForeignKey(to='Comment', null=True)
ForeignKey(to='self', null=True)
字段标签字段名
用户外键ForeignKey(to=‘UserInfo’)
文章外键ForeignKey(to=‘Article’)
评论内容content
评论时间create_time
parentForeignKey(to=‘self’, null=True)

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值