个人博客数据库设计

个人博客数据库设计文章目录前言一、概述及分析1.1项目背景1.2分析1.3系统功能1.3.1用户管理1.3.2博文管理1.3.3评论管理1.3.4分类管理1.3.5标签管理二、数据库概念模型设计—基本ER图三、数据库逻辑模型设计四、数据库语句4.1建立数据表语句(部分)4.2建立视图(部分)五、小结&参考资料小结参考资料前言最近要做数据库大作业,在思考了很久之后,还是设计一个简单…

大家好,又见面了,我是你们的朋友全栈君。

前言

最近要做数据库大作业,在思考了很久之后,还是设计一个简单的个人博客数据库,数据库采用的时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
) ;

五、 小结&参考资料

小结

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

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

参考资料

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151556.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • shardbatis实现分表「建议收藏」

    Shardbatis的名称由shard(ing)+mybatis组合得到,是谷歌的一款开源软件。旨在为mybatis实现数据水平切分的功能。数据的水平切分包括多数据库的切分和多表的数据切分,目前sha

  • FindWindowEx的应用

    FindWindowEx的应用HWND hWorker,hRebar,hComEx,hcom,hEdit;HWND hwndParent=::FindWindow("IEFrame",NULL);//找到IE窗口  char szError[260];hWorker=FindWindowEx(hwndParent,0,"WorkerA",NULL);//找到工作区窗口(不是internet e…

  • 学计算机的男生喜欢什么样的女生,双子座男生喜欢什么样类型的女生[通俗易懂]

    学计算机的男生喜欢什么样的女生,双子座男生喜欢什么样类型的女生[通俗易懂]双子座男生喜欢什么样类型的女生来源:网络 日期:2018/8/118:55:34 累计阅读:293次双子男喜欢什么样类型的女生双子座温柔的女生对于双子座的男生来说,其实温柔的这个类型的女生会是双子座男生非常喜爱的,在任何一款类型当中,双子座的男生可以说是最疼爱和喜欢温柔类型的女生了,因为在现实生活当中,双子座的男生其实是一个比较自我的人,在恋爱的过程当中非常喜欢表达自己的清晰,而有时候不好的情绪…

  • 大学生在线四史脚本

    大学生在线四史脚本中国大学生在线脚本无python环境(博主推荐)使用教程软件下载有Python环境编译环境源码分享无python环境(博主推荐)使用教程无Python环境下载可执行文件,将题库.csv与main.exe置于同一文件夹,直接运行即可.uid获取方式:关注公众号:云享科技毒瘤,在菜单栏【四史学习】–>【uid获取】–>【阅读全文】即可查看自己的uid。软件下载公众号:云享科技毒瘤长按二维码关注我们,查看历史文章即可下载声明:1.云享科技毒瘤提供的所有下载文件均在网络收集,请于

  • 配置JAVA的环境变量「建议收藏」

    配置JAVA的环境变量「建议收藏」配置JAVA的环境变量为什么配置path?希望在命令行使用javac.exe等工具时,任意目录下都可以找到这个工具所在的目录。例如:我们在C:\Users\Irene目录下使用java命令,结果如下:我们在JDK的安装目录的bin目录下使用java命令,结果如下:我们不可能每次使用java.exe,javac.exe等工具的时候都进入到JDK的安装目录下,太麻烦了。我们希望在任意目录下都可以使用JDK的bin目录的开发工具,因此我们需要告诉操作系统去哪里找这些开发工具,这就需要配置path环境

  • “xxxxxxxxx”signer information does not match signer information of other classes in the same package

    “xxxxxxxxx”signer information does not match signer information of other classes in the same packageMaven在static方法下测试没问题,请求正常,但是服务启动后出现错误信息。在发起请求时抛出异常信息”xxxxxxxxx”signerinformationdoesnotmatchsignerinformationofotherclassesinthesamepackage操作:1、移除pom下冲突的依赖2、移除libraries项目中导入本地jar文件…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号