个人博客数据库设计

article/2025/10/13 14:05:40

前言

最近要做数据库大作业,在思考了很久之后,还是设计一个简单的个人博客数据库,数据库采用的时MySQL5.7。

数据库下载(提取码: s2f9)

一、 概述及分析

1.1 项目背景

随着互联网的发展,越来越多的人拥有了自己的个人博客。但是大多数采用的是网上别人做好的博客模板,众所周知,网上的模板并不是单独为个人而定制,而是面向大多数人的,独立设计一个博客,满足自己的需求。

1.2 分析

  • 系统主要完成以下几方面的功能:
  • 用户管理:用户的注册和登录,发表博文和评论。
  • 博文管理:用户可以在网站中发表和设置博文。
  • 评论管理:用户可以评论博文和回复其他用户的评论。
  • 分类管理:添加和删除分类,给文章设置分类。
  • 标签管理:添加和删除标签,给文章设置标签。

1.3 系统功能

1.3.1 用户管理

用户的相关信息如下:用户ID、用户IP、用户名、用户昵称、用户密码、用户邮箱、用户头像、注册时间、用户生日、用户年龄、用户手机号。

用户注册时需提供用户名、用户密码、用户邮箱或用户手机号。

用户登录时可以采用用户名或邮箱或手机号进行登录。

用户可以发布博文、发表评论、回复,还可以添加其他用户为好友。

1.3.2 博文管理

博文的相关信息如下:博文ID、发布日期、发表用户、博文标题、博文内容、点赞数、回复数、游览量。

博文可以被普通用户发布、修改、删除和评论,但修改和删除仅限于自己发表的动态。

博文发布时需要设置分类、标签。

1.3.3 评论管理

评论的相关信息如下:评论ID、评论日期、点赞数、发表用户、评论文章ID、评论内容、父评论ID。

评论可以被用户发表和删除以及被其他用户回复。

1.3.4 分类管理

分类的相关信息如下:分类ID、分类名称、分类别名、分类描述、父分类ID。

只有管理员可以添加、删除、修改分类。

分类的作用不仅可以将文章分类,还可以作为博客的菜单。

1.3.5 标签管理

标签的相关信息如下:标签ID、标签名称、标签别名、标签描述。

用户发表文章时可以设置标签,标签不仅可以将文章分类,还可以作为博客的菜单。

二、数据库概念模型设计—基本ER图

三、数据库逻辑模型设计


四、数据库语句

4.1 建立数据表语句(部分)

CREATE TABLE `zj_users` (`user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',`user_ip` varchar(20) NOT NULL COMMENT '用户IP',`user_name` varchar(20) NOT NULL COMMENT '用户名',`user_password` varchar(15) NOT NULL COMMENT '用户密码',`user_email` varchar(30) NOT NULL COMMENT '用户邮箱',`user_profile_photo` varchar(255) NOT NULL COMMENT '用户头像',`user_registration_time` datetime DEFAULT NULL COMMENT '注册时间',`user_birthday` date DEFAULT NULL COMMENT '用户生日',`user_age` tinyint(4) DEFAULT NULL COMMENT '用户年龄',`user_telephone_number` int(11) NOT NULL COMMENT '用户手机号',`user_nickname` varchar(20) NOT NULL COMMENT '用户昵称',PRIMARY KEY (`user_id`),KEY `user_name` (`user_name`),KEY `user_nickname` (`user_nickname`),KEY `user_email` (`user_email`),KEY `user_telephone_number` (`user_telephone_number`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;CREATE TABLE `zj_articles` (`article_id` bigint(255) NOT NULL AUTO_INCREMENT COMMENT '博文ID',`user_id` bigint(20) NOT NULL COMMENT '发表用户ID',`article_title` text NOT NULL COMMENT '博文标题',`article_content` longtext NOT NULL COMMENT '博文内容',`article_views` bigint(20) NOT NULL COMMENT '浏览量',`article_comment_count` bigint(20) NOT NULL COMMENT '评论总数',`article_date` datetime DEFAULT NULL COMMENT '发表时间',`article_like_count` bigint(20) NOT NULL,PRIMARY KEY (`article_id`),KEY `user_id` (`user_id`),CONSTRAINT `zj_articles_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `zj_users` (`user_id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;CREATE TABLE `zj_comments` (`comment_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '评论ID',`user_id` bigint(20) NOT NULL COMMENT '发表用户ID',`article_id` bigint(20) NOT NULL COMMENT '评论博文ID',`comment_like_count` bigint(20) NOT NULL COMMENT '点赞数',`comment_date` datetime DEFAULT NULL COMMENT '评论日期',`comment_content` text NOT NULL COMMENT '评论内容',`parent_comment_id` bigint(20) NOT NULL COMMENT '父评论ID',PRIMARY KEY (`comment_id`),KEY `article_id` (`article_id`),KEY `comment_date` (`comment_date`),KEY `parent_comment_id` (`parent_comment_id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;CREATE TABLE `zj_labels` (`label_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '标签ID',`label_name` varchar(20) NOT NULL COMMENT '标签名称',`label_alias` varchar(15) NOT NULL COMMENT '标签别名',`label_description` text NOT NULL COMMENT '标签描述',PRIMARY KEY (`label_id`),KEY `label_name` (`label_name`),KEY `label_alias` (`label_alias`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;CREATE TABLE `zj_set_artitle_label` (`article_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文章ID',`label_id` bigint(20) NOT NULL,PRIMARY KEY (`article_id`),KEY `label_id` (`label_id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;CREATE TABLE `zj_set_artitle_sort` (`article_id` bigint(20) NOT NULL COMMENT '文章ID',`sort_id` bigint(20) NOT NULL COMMENT '分类ID',PRIMARY KEY (`article_id`,`sort_id`),KEY `sort_id` (`sort_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `zj_sorts` (`sort_id` bigint(20) NOT NULL COMMENT '分类ID',`sort_name` varchar(50) NOT NULL COMMENT '分类名称',`sort_alias` varchar(15) NOT NULL COMMENT '分类别名',`sort_description` text NOT NULL COMMENT '分类描述',`parent_sort_id` bigint(20) NOT NULL COMMENT '父分类ID',PRIMARY KEY (`sort_id`),KEY `sort_name` (`sort_name`),KEY `sort_alias` (`sort_alias`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `zj_user_friends` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '标识ID',`user_id` bigint(20) NOT NULL COMMENT '用户ID',`user_friends_id` bigint(20) NOT NULL COMMENT '好友ID',`user_note` varchar(20) NOT NULL COMMENT '好友备注',`user_status` varchar(20) NOT NULL COMMENT '好友状态',PRIMARY KEY (`id`),KEY `user_id` (`user_id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

4.2 建立视图(部分)

某用户的所有好友视图:

CREATE VIEW Friends
AS
SELECT
zj_user_friends.user_id AS user_id,
zj_users.user_name AS user_name,
zj_user_friends.user_friends_id AS user_friends_id,
zj_user_friends.user_note AS user_note
FROM
(
zj_users
JOIN zj_user_friends
)
WHERE
(
zj_users.user_id = zj_user_friends.user_id
) ;

五、 小结&参考资料

小结

数据库的设计不是很简单,一个产品除了满足用户需求,数据库的架构是非常重要的,之前做的一个志愿网站,虽然功能不是很好,基本需求能满足,但是数据库完全没有设计,没有处理,导致数据处理很糟糕。

现在这个数据爆炸的网络时代,数据的处理及数据库的设计显得尤其重要,数据库设计师工作量也不亚于前后端工程师。

参考资料

  • 个人博客数据库设计
  • 《数据库系统概论》高等教育出版社

http://chatgpt.dhexx.cn/article/HvxDjY3k.shtml

相关文章

[数据库设计]如何合理和有效的进行数据库设计

#前言 通常情况下,可以从两个方面来判断数据库设计的是否规范: 1)一是看看是否拥有大量的窄表 窄表往往对于OLTP比较合适,符合范式设计原则 2)宽表的数量是否足够的少。 所谓的宽表就是字段比较多的表,包含的维度层次比较多,造成冗…

数据库设计实战(一):数据库设计规范

一、数据库设计流程 1、需求分析 确定用户对数据库系统的使用要求和各种约束条件,形成用户需求规约 2、概念设计 对用户要求描述的现实世界,通过对其分类、聚集和概括,建立抽象的概念数据模型 3、逻辑设计 将现实世界的概念数据模型设计…

详解数据库设计的四个阶段

一、系统需求分析阶段 数据库设计的第一步,就是了解与分析用户需求,确定系统边界信息需求、处理需求、安全性和完整性需求,然后编写系统分析报告。 系统分析报告的内容主要包括: 随系统分析报告需提供的附件还有: …

MySQL数据库设计-案例

大家好,我是忘鱼。分享一下数据库设计(案例) 目录 一、案例 二、代码 三、总结 一、案例 如下进行数据库设计。这是黑马上的一道练习题。 二、代码 drop table if EXISTS music; drop table if EXISTS song; drop table if EXI…

数据库设计流程

数据库设计的步骤 数据库设计的流程总共有三步: 现实世界的实体模型通过建模转换为信息世界的概念模型(即 E-R 模型)概念模型经过模型转化,得到数据库使用的数据模型(在关系数据库设计中为关系模型)数据模…

浅谈数据库设计

第一章 需求分析 设计简介 根据业务需要,结合选用的DBMS,设计出最有的数据存储模型并建立好数据库中的表结构及表与表之间的关系使之有效的存储和高效的访问。 数据库设计 在系统设计开始就应该对数据库进行良好的设计,这样才能保证以后对…

数据库设计与实现

一个良好的设计对于数据库系统至关重要,它可以减少数据冗余,确保数据的一致性和完整性,同时使得数据库易于维护和扩展。 实体关系图 实体关系图(Entity-Relationship Diagram,ERD)是一种用于数据库设计的结…

数据库设计(二)——简单设计实例

Mysql设计步骤 一、设计一套系统数据库的步骤 1、实现什么样的功能(保证项目功能的完整性,列出所有模块)。 2、通过思维导图将每个功能模块串联起来(放射状,细节可以用文字描述)。 …

数据库设计的一般步骤

经过几天给韶关某个高校进行数据库设计的实训,对数据库设计的过程有了更加深刻的理解。 一、数据库设计的步骤 (1)了解功能需求 在设计数据库之前,设计人员必须要先了解系统的功能需求。这里可以通过阅读产品需求规格说明书&…

9.数据库设计

数据库设计 1、数据库设计概述 数据库设计。广义地讲,是数据库及其应用系统的设计,即设计整个数据库应用系统;狭义地讲,是设计数据库本身,即设计数据库的各级模式并建立数据库, 这是数据库应用系统设计的一…

数据库设计-概念结构设计

文章目录 数据库设计概念设计结构概念结构设计ER模型的基本元素实体/实体集属性区别实体和属性联系 二元联系的关系1:11:nm:n 一元联系1:11:nm:n 三元联系 采用ER模型的概念设计设计局部ER模型例题设计全局ER模型全局ER模型的优化 数据库设计 数据库设计:构造最优的…

数据库设计—图书管理数据库系统设计

如下代码供学习交流,获取完整代码,请关注公众号(coding加油站)获取 1、项目简介 图书馆数据库,该项目同时提供pythonweb可视化展示界面,也可提供相关报告数据,可以用来作为数据库系统设计的期…

数据库设计(一)——数据库设计

一、数据库设计简介 按照规范设计,将数据库的设计过程分为六个阶段: A、系统需求分析阶段 B、概念结构设计阶段 C、逻辑结构设计阶段 D、物理结构设计阶段 E、数据库实施阶段 F、数据库运行与维护阶段 需求分析和概念结构设计独立于任何数据库管理系统…

数据库设计的六个基本步骤

按照规范设计的方法,考虑数据库及其应用系统开发全过程,可将数据库设计分为以下6个阶段,分别为:1.需求分析,2.概念结构设计,3.逻辑结构设计,4.物理结构设计,5.数据库实施&#xff0c…

数据库设计(一)

目录 数据库设计的基本概念: 数据库设计包括以下几个部分: 需求设计: 1、数据: 2、处理: 概念结构设计: 实体: 例如: 联系类型: 1、一对一: 2、一对多&a…

数据库:数据库设计(需求,设计,运行,维护)

1,数据库设计概述 1.1,数据库设计的基本概念 数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据&…

数据库系统-数据库设计

数据库系统-数据库设计 数据库设计概述及六步骤简介 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。 数据库设计的特点 数据库设计是一…

学生成绩管理系统数据库设计--MySQLSQL Server

MySQL 数据库设计-学生成绩管理系统 设计大纲友情链接 1、医疗信息管理系统数据库–MySQL2、邮件管理数据库设计–MySQL3、点餐系统数据库设计–SQL Server4、商品管理系统数据库设计–SQL Server5、SQL Server医疗信息管理系统数据库【英文版-源码】–(Medical Ma…

数据库设计-网上书店系统

一、需求分析 1.1 用户分析 网上书店系统的使用者主要有三种:普通用户、会员和管理员。 普通用户:浏览图书、查询图书、注册成为会员等; 会员:浏览图书、查询图书、加入购物车、修改购物车、订购图书、生成及查看订单、查看修改…

数据库设计

数据库设计 一.数据库设计概述1.数据库设计的特点2.数据库设计方法3.数据库设计的基本步骤4.数据库设计过程中的各级模式 二.需求分析1.需求分析的任务2.需求分析的方法3.数据字典 三.概念结构设计1.概念模型2.E-R模型3.概念结构设计 一.数据库设计概述 ①数据库设计是指对于一…