最近需要做数据库课设的原因,于是想我打算做一直都很想要实现的个人博客网站,因为我也学习前端这么久了,但是真正从完整的项目都没有做过。今年已经大三了,虽然也在一家小公司实习,但是平时做的都是一些移动端页面和pc端的静态页面,没有与后台交互的机会,所以我一直很想知道,到底整个网站,从前端到后台,整个过程完完整整是什么样子的。由于对很多东西都不懂,所以一直拖到现在。这次我使用的是jsp+mysql+DAO。本来想使用的是node.js+vue.js来实现的,但是由于这两个我都不是很熟,加上时间很久,还有三门考试和javaWeb作业,所以我决定假期重新使用node.js和vue.js来实现,这个就当是提前熟悉整个流程吧。毕竟虽然身为前端,对后台也是需要熟悉的,前端页面我还没写完,所以先贴上后台代码及其逻辑吧!准备好了吗?开始咯!
先讲讲我的这个整体思路吧,我之前就很想组个人博客,但是由于我学前端的,而且对后台也不熟悉,所以我的第一反应是从前端到后台,所以我把静态页面做了出来,但是后面我发现自己进行不下去了。这次感谢数据库课设,我的思路完全倒过来,并且,我惊奇地发现,倒过来之后,整个思路瞬间清晰了很多,感觉醍醐灌顶。于是我从数据库——业务层——用户层来做。
首先我的数据库一共做了六张表,分别是人员表(用来管理用户的),文章表(管理文章),分类表(文章分类),评论表(管理评论),因为需要凑齐六张表(没办法,课设要求,宝宝心里苦),实在想不出其他表了,于是求助后台大神,在大神的苦思冥想之下,诞生了人员访问记录表(记录其它用户的访问时间及Ip,安全性保障)和角色表(分为管理员和普通用户)。先把代码贴出来
-- ----------------------------
-- Table structure for article
-- ----------------------------
DROP TABLE IF EXISTS `article`;
CREATE TABLE `article` (
`artid` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(50) NOT NULL COMMENT '文章标题',
`reads` int(50) DEFAULT NULL COMMENT '阅读量',
`cre_time` datetime DEFAULT NULL COMMENT '创建时间',
`content` varchar(4000) DEFAULT NULL COMMENT '文章内容',
`uid` int(11) unsigned zerofill DEFAULT NULL COMMENT '用户id',
`cate_name` varchar(30) DEFAULT NULL COMMENT '分类名称',
PRIMARY KEY (`artid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of article
-- ----------------------------
-- ----------------------------
-- Table structure for category
-- ----------------------------
DROP TABLE IF EXISTS `category`;
CREATE TABLE `category` (
`id` int(50) NOT NULL AUTO_INCREMENT COMMENT '分类id',
`name` varchar(50) NOT NULL COMMENT '分类名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for comment
-- ----------------------------
DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment` (
`commentid` int(50) NOT NULL AUTO_INCREMENT,
`commentdate` datetime DEFAULT NULL COMMENT '评论时间',
`comment_content` varchar(400) DEFAULT NULL COMMENT '评论',
`art_id` int(11) DEFAULT NULL COMMENT '文章id',
`uid` int(11) DEFAULT NULL COMMENT '用户id',
PRIMARY KEY (`commentid`),
KEY `art_id` (`art_id`),
KEY `uid` (`uid`),
CONSTRAINT `comment_ibfk_1` FOREIGN KEY (`art_id`) REFERENCES `article` (`artid`),
CONSTRAINT `comment_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `member` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of comment
-- ----------------------------
-- ----------------------------
-- Table structure for member
-- ----------------------------
DROP TABLE IF EXISTS `member`;
CREATE TABLE `member` (
`uid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
`role_code` varchar(50) NOT NULL COMMENT '权限id',
`password` varchar(40) DEFAULT NULL COMMENT '密码',
`account` varchar(30) DEFAULT NULL COMMENT '登录账户',
`url` varchar(100) NOT NULL COMMENT '头像url',
`nickname` varchar(255) DEFAULT '' COMMENT '昵称',
`sex` int(11) DEFAULT NULL COMMENT '1-男,2-女',
`birthday` datetime DEFAULT NULL COMMENT '生日',
PRIMARY KEY (`uid`),
UNIQUE KEY `account` (`account`),
KEY `role_code` (`role_code`),
CONSTRAINT `member_ibfk_1` FOREIGN KEY (`role_code`) REFERENCES `role` (`role_code`)
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for memrecord
-- ----------------------------
DROP TABLE IF EXISTS `memrecord`;
CREATE TABLE `memrecord` (
`id` int(50) NOT NULL AUTO_INCREMENT,
`ip` varchar(100) NOT NULL COMMENT '用户ip',
`visit_time` datetime DEFAULT NULL COMMENT '访问时间',
`uid` int(11) NOT NULL COMMENT '访问人id',
`visit_uid` int(11) DEFAULT NULL COMMENT '被访问人id',
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
CONSTRAINT `memrecord_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `member` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`role_id` int(50) NOT NULL AUTO_INCREMENT COMMENT '角色',
`role_name` varchar(50) NOT NULL COMMENT '角色名称',
`role_code` varchar(50) NOT NULL COMMENT '角色代码',
PRIMARY KEY (`role_id`),
KEY `role_code` (`role_code`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of role
-- ----------------------------
INSERT INTO `role` VALUES ('1', '管理员', '1');
INSERT INTO `role` VALUES ('2', '普通用户', '2');
以上是代码,有兴趣的同学,可以去运行一下,铛铛铛~!由于数据库已经有一年没看了,忘得差不多,重新翻书才记起来的,简单讲一下外键问题吧,什么是外键呢?简单来讲,就是如果一张表想要访问另一张表,那么就需要通过外键了,那么外键如何确定的,有一个简单的小技巧。比如,拿我的文章article表和评论comment表来说,一篇文章可以有多个评论,但是一个评论只能对应一篇文章,这里文章和评论就是一对多的关系,那么多有一的外键,即评论有文章的外键。还有,强调一点,外键不一定非得是另一张表的主键。话说,慕课网上怎么粘贴图片的?
如果你想用mysql,但是觉得安装mysql环境太麻烦,推荐一个超级无敌好用的集成包xampp,下载之后直接直接像普通软件一样安装就可以了,安装好后,每次编辑代码之前,直接进入xampp,点击mysql 对应的start就可以啦,简单粗暴。最后再安利一个navicate的界面可视化编辑器,它是专门简化写数据库的过程,大家可以上网百度一下,本来想把图贴出来,一步步教大家用的,但是,这里好像贴不了图片。谨记一点,使用navicate之前,一定要打开xampp并点击mysql的start。
这一篇就先讲数据库吧,下一篇讲一讲DAO设计模式,DAO其实就是一个对数据库的访问接口而已,相对简单。由于啰哩啰嗦讲了很多,这个我就放到下篇啦。跟着我一步步征服他们吧,一起加油哟!
欢迎大家对我多多提出建议哟,我是一只进阶中的小白白,一直迷茫中探索,一直不放弃,希望看到这篇文章的每一个你们,如果迷茫了,我们一起交流!
热门评论
下一篇呢?老铁,我找了好久都没有找到啊