【基于SSH框架的个人博客系统02】项目分析与数据库表设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hemk340200600/article/details/71436878

 注意:本项目为博主初学Web开发时所写,所使用的方法都比较笨,不符合主流开发方法。例如,包管理应该使用Maven进行管理而不是手动导入,对前端后端代码的架构也并不是很清晰。大家学习思想即可,可以不用浪费时间在将这个项目跑起来。目前主流的技术应当是Spring+SpringMVC+Mybatis的SSM框架,配合Shiro做权限控制,Redis做缓存,也可以学习SpringBoot开发微服务。由于本博主已经保研,较少接触开发,故此项目也不再进行维护。

项目分析

搭建完框架,我们就可以开始整个项目了。但在这之前,我们需要为整个项目设计好数据表以及完成需求分析。(当然这一步我是一边开发一边想的…小项目可以这样,大项目的话,最好是先确定好各种需求以及数据表的设计,防止在开发过程中去大规模的更改数据表)。

由于这个项目是一个博客系统,那么基本的登录,注册,文章发布这些都是要的。注册的话,就需要有一个表来储存用户信息,用户的账号密码,生日,省市区,头像(通过储存相对地址来存储,而不是整张头像都放入数据库中)等等。除此之外,我们还要让用户可以自定义标签,根据标签对文章进行分类和显示。那标签就要有对应的创建者。并且标签跟博客之间要有一张表进行关联。同时,每篇博客需要记录它的阅读量,创建日期,文章内容,标题,所属用户等数据。既然是博客,也少不了评论功能。评论的话用一张表就可以存储,需要记录它的时间,创建者,id和父id(用来判断该评论是一条回复还是一条根评论),内容等。那用户怎么到达其他用户的博客呢?这便是粉丝功能的作用。每个人可以关注其他用户以及看到自己被谁所关注,通过这里可以进入他们的博客主页进行浏览。

整个项目的功能基本上就这么多,虽然是个小项目,但也基本上功能完善了..之后我们可以把数据库表设计好之后通过Navicat 来导入。在创建数据库的时候,记得将默认的编码改为UTF-8,否则到时插入中文数据的时候会出现乱码或者显示问号。

数据库表设计

User表

记录用户id,账号和密码。

扫描二维码关注公众号,回复: 5181659 查看本文章

UserInfo表

记录用户信息。包括用户id,用户昵称,性别,生日,职业,邮箱,省市区id,自我介绍,用户头像,最近登录时间,主页访问量。

Place表

记录省市区。

Comment表

记录评论。包括id,父id,博客id,所属用户id,内容,日期,是否有回复。

Fans表

记录关注情况。包括id主键,userId,noticerid,date。(关系是userId关注noticerId,通过这个关系我们就可以得到粉丝列表和关注列表)

Label表

记录标签。包括标签id,标签名称,所属用户id

Blog表

记录博客信息。包括博客id,博客标题,内容,所属用户id,创建日期,访问量。

Blog_join_label表是blog和label的连接表,包括id主键,博客id和标签id。(记录博客对应哪个标签,一个博客可能有多个标签,表名是我随便起的…不知道叫什么好)

创建代码

-- ----------------------------
-- Table structure for `blog`
-- ----------------------------
DROP TABLE IF EXISTS `blog`;
CREATE TABLE `blog` (
  `blog_id` int(11) NOT NULL AUTO_INCREMENT,
  `blog_title` varchar(100) NOT NULL,
  `blog_text` text NOT NULL,
  `blog_visit` int(11) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  `blog_date` date DEFAULT NULL,
  `blog_pv` int(11) DEFAULT NULL,
  PRIMARY KEY (`blog_id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;


-- ----------------------------
-- Table structure for `blog_join_label`
-- ----------------------------
DROP TABLE IF EXISTS `blog_join_label`;
CREATE TABLE `blog_join_label` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `blog_id` int(11) DEFAULT NULL,
  `label_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;


-- ----------------------------
-- ----------------------------
-- Table structure for `comment`
-- ----------------------------
DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `father_id` int(11) NOT NULL,
  `blog_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `content` text,
  `date` datetime DEFAULT NULL,
  `have_reply` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;


-- ----------------------------
-- Table structure for `fans`
-- ----------------------------
DROP TABLE IF EXISTS `fans`;
CREATE TABLE `fans` (
  `user_id` int(11) NOT NULL,
  `noticer_id` int(11) NOT NULL,
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8;


-- ----------------------------
-- Table structure for `label`
-- ----------------------------
DROP TABLE IF EXISTS `label`;
CREATE TABLE `label` (
  `label_id` int(11) NOT NULL AUTO_INCREMENT,
  `label_title` varchar(30) NOT NULL,
  `user_id` int(11) NOT NULL,
  PRIMARY KEY (`label_id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;




-- ----------------------------
-- Table structure for `place`
-- ----------------------------
DROP TABLE IF EXISTS `place`;
CREATE TABLE `place` (
  `place_id` int(11) NOT NULL AUTO_INCREMENT,
  `province` varchar(10) DEFAULT NULL,
  `city` varchar(10) DEFAULT NULL,
  `area` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`place_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;


-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_account` varchar(20) DEFAULT NULL,
  `user_password` char(32) DEFAULT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8;


-- ----------------------------
-- Table structure for `userinfo`
-- ----------------------------
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
  `userinfo_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `user_name` varchar(20) DEFAULT NULL,
  `user_sex` tinyint(1) DEFAULT NULL,
  `user_birthday` date DEFAULT NULL,
  `user_job` varchar(20) DEFAULT NULL,
  `user_post` varchar(50) DEFAULT NULL,
  `user_introduction` text,
  `user_place` int(11) DEFAULT NULL,
  `user_image` varchar(50) DEFAULT NULL,
  `user_recent_login_time` datetime DEFAULT NULL,
  `user_PV` int(11) DEFAULT NULL,
  PRIMARY KEY (`userinfo_id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8;

----------------------------------------------------------------------------

本项目下载地址:

github:https://github.com/SCAUMankind/SSHBlogSystem

 

猜你喜欢

转载自blog.csdn.net/Hemk340200600/article/details/71436878