篇章二 论坛系统——系统设计

目录

2.系统设计

[2.1 技术选型](#2.1 技术选型)

[2.2 设计数据库结构](#2.2 设计数据库结构)

[2.2.1 数据库实体](#2.2.1 数据库实体)

[1. 数据库设计](#1. 数据库设计)

[1.1 数据库名: forum db](#1.1 数据库名: forum db)

[1.2 表的设计](#1.2 表的设计)

[1.3 编写SQL](#1.3 编写SQL)


2.系统设计

2.1 技术选型

2.2 设计数据库结构

2.2.1 数据库实体

通过需求分析获得概念类并结合业务实现过程中的技术需要,设计出数据库实体

1. 数据库设计

运用分析模型章节中定义概念类的方法,能过观察现在的论坛并结合具体业务需要完成类的定义

1.1 数据库名: forum db

公共字段:无特殊要求的情况下,每张表必须有长整型的自增主键,除状态、创建时间、更新时间,如下所示:

1.2 表的设计

1.确定论坛中的类 对应到数据库中的表

2.为类确定属性

(1)用户类

加密 解密

(2)板块

(3)帖子

(4)帖子的回复

(5)站内信

1.3 编写SQL

(1)确定MYSQL版本

sql 复制代码
SELECT VERSION(); 

(2)创建数据库

sql 复制代码
# 创建数据库
DROP DATABASE IF EXISTS forum_db;
CREATE DATABASE forum_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

(3)创建数据表

sql 复制代码
# 选择数据库
USE forum_db

# 创建表

# 用户表
DROP TABLE IF EXISTS t_user;
CREATE TABLE t_user(
	id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '编号,主键自增',
	username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名,唯一',
	PASSWORD VARCHAR(32) NOT NULL COMMENT '加密后的密码',
	nickname VARCHAR(50) NOT NULL COMMENT '昵称',
	phoneNum VARCHAR(20) COMMENT '手机号',
	email VARCHAR(50) COMMENT '电子邮箱',
	gender TINYINT NOT NULL DEFAULT 2 COMMENT '性别 0女, 1男, 2保密',
	salt VARCHAR(32) NOT NULL COMMENT '为密码加盐',
	avatarUrl VARCHAR(255) COMMENT '用户头像路径',
	articleCount INT NOT NULL DEFAULT 0 COMMENT '发帖数量',
	isAdmin TINYINT NOT NULL DEFAULT 0 COMMENT '是否管理员 0否, 1是',
	remark VARCHAR(1000) COMMENT '备注, 自我介绍',
	state TINYINT NOT NULL DEFAULT 0 COMMENT '状态 0正常, 1禁言',
	deleteState TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除 0否, 1是',
	createTime DATETIME NOT NULL COMMENT '创建时间,精确到秒',
	updateTime DATETIME NOT NULL COMMENT '更新时间,精确到秒'
);


# 板块表
DROP TABLE IF EXISTS t_board;
CREATE TABLE t_board(
	id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '编号,主键自增',	
	NAME VARCHAR(50) NOT NULL COMMENT '板块名',
	articleCount INT NOT NULL DEFAULT 0 COMMENT '帖子数量',
	sort INT NOT NULL DEFAULT 0 COMMENT '排序优先级, 升序',
	state TINYINT NOT NULL DEFAULT 0 COMMENT '状态 0正常, 1禁用',
	deleteState TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除 0否, 1是',
	createTime DATETIME NOT NULL COMMENT '创建时间,精确到秒',
	updateTime DATETIME NOT NULL COMMENT '更新时间,精确到秒'
);

# 帖子表
DROP TABLE IF EXISTS t_article;
CREATE TABLE t_article(
	id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '编号,主键自增',	
	boardId BIGINT NOT NULL COMMENT '关联板块编号',
	userId BIGINT NOT NULL COMMENT '发帖人,关联用户编号',
	title VARCHAR(100) NOT NULL COMMENT '帖子标题',
	content TEXT NOT NULL COMMENT '帖子正文',
	visitCount INT NOT NULL DEFAULT 0 COMMENT '访问量',
	replyCount INT NOT NULL DEFAULT 0 COMMENT '回复数',
	likeCount INT NOT NULL DEFAULT 0 COMMENT '点赞数',
	state TINYINT NOT NULL DEFAULT 0 COMMENT '状态 0正常, 1禁用',
	deleteState TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除 0否, 1是',
	createTime DATETIME NOT NULL COMMENT '创建时间,精确到秒',
	updateTime DATETIME NOT NULL COMMENT '更新时间,精确到秒'
);

# 帖子回复表
DROP TABLE IF EXISTS t_article_reply;
CREATE TABLE t_article_reply(
	id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '编号,主键自增',	
	articleId BIGINT NOT NULL COMMENT '关联帖子编号',
	postUserId BIGINT NOT NULL COMMENT '楼主用户, 关联用户编号',
	replyId BIGINT NOT NULL COMMENT '关联回复编号, 支持楼中楼',
	replyUserId BIGINT NOT NULL COMMENT '楼主下的回复用户编号, 支持楼中楼',
	content VARCHAR(500) NOT NULL COMMENT '回帖内容',
	likeCount INT NOT NULL COMMENT '回帖内容', 
	state TINYINT NOT NULL DEFAULT 0 COMMENT '状态 0正常, 1禁用',
	deleteState TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除 0否, 1是',
	createTime DATETIME NOT NULL COMMENT '创建时间,精确到秒',
	updateTime DATETIME NOT NULL COMMENT '更新时间,精确到秒'
);

# 站内信表
DROP TABLE IF EXISTS t_message;
CREATE TABLE t_message(
	id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '编号,主键自增',	
	postUserId BIGINT NOT NULL COMMENT '发送者, 关联用户编号',
	receiveUserId BIGINT NOT NULL COMMENT '接收者, 关联用户编号',
	content VARCHAR(255) NOT NULL COMMENT '内容',
	state TINYINT NOT NULL DEFAULT 0 COMMENT '状态 0正常, 1禁用',
	deleteState TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除 0否, 1是',
	createTime DATETIME NOT NULL COMMENT '创建时间,精确到秒',
	updateTime DATETIME NOT NULL COMMENT '更新时间,精确到秒'
);
相关推荐
moMo7 小时前
# 向量数据库入门:从"关键词匹配"到"语义理解"
数据库
ACP广源盛139246256737 小时前
DeepSeek‑V4‑Flash 公测@ACP#昇腾 950 国产算力组合落地,国产 PCIe 交换芯片 IX9104 有哪些硬件机会
大数据·数据库·人工智能·分布式·单片机·嵌入式硬件·microsoft
进击的女IT7 小时前
通过mysql中的Data目录恢复数据库数据
数据库·mysql
yuezhilangniao7 小时前
AI工具全家桶:从开发到运维,从数据库到产品经理-含魔塔社区简介
运维·数据库·人工智能
gb42152877 小时前
ChromaDB向量数据库的特点
数据库
IvorySQL8 小时前
PostgreSQL 日报| GiST 索引扫描可见性缺陷(8 月 3 日)
数据库·人工智能·postgresql·开源
xiaoxiangsiyan8 小时前
LNMP + Redis Sentinel 高可用架构部署手册(续)
运维·网络·数据库·redis·缓存·架构·sentinel
刘婉晴8 小时前
【Web漏洞】SQL 注入实战技巧
前端·数据库·sql
CodeHackerBhx8 小时前
Spring Boot 4 防重复提交:从接口幂等到 Redis 分布式锁的完整实践
java·数据库·spring boot·redis·分布式
xlxxy_9 小时前
外部系统调用SAP接口遇到的一些报错
开发语言·数据库·sap·abap