任务描述
本关任务:在博客数据库中建立博客标签表。
相关知识
多对多关系的建立
每一个博客都可以设置很多个标签,比如一篇讲JavaWeb
知识的博客,就可能会涉及到多个标签如:前端、后端、Java
、SpringMVC
等标签,而一个标签也可能对应多个博客,比如“后端”这个标签就可能对应很多博客,如:Python
博客、Java
博客、.net
博客等。 所以我们应该讲博客标签表与博客表设计成一个多对多的关系,那么应该怎么设计呢?这是我们要思考的问题。
我们对博客标签表与博客信息表设计如下图所示:
设计了一个中间表,分别与博客信息表和博客标签表是一对多的关系,这样博客标签表(t_tag
)就和博客信息表(t_blog
)是多对多的关系了。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
- 根据设计图,创建博客标签表(
t_tag
),以及中间表(t_tag_blog
),并建立表与表之间的联系。外键名分别为FK_blog_id
、FK_tag_id
。第一个外键对应的是博客信息表的的ID
,第二个外键对应的是标签表的ID
。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
开始你的任务吧,祝你成功!
原题代码
use blog_db;
CREATE TABLE `t_user` (`userId` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',`username` varchar(32) NOT NULL COMMENT '用户名',`password` varchar(32) NOT NULL COMMENT '用户密码',`user_sex` varchar(6) NOT NULL DEFAULT '0' COMMENT '用户性别',`email` varchar(64) DEFAULT NULL COMMENT '用户邮箱',`phone` varchar(11) NOT NULL COMMENT '手机号码',`firstname` varchar(6) DEFAULT NULL COMMENT '姓',`lastname` varchar(12) DEFAULT NULL COMMENT '名',`avatar` varchar(255) DEFAULT NULL COMMENT '头像地址',`is_superuser` int NOT NULL DEFAULT '0' COMMENT '是否是管理员 1代表 是 0代表不是',`last_login` datetime DEFAULT NULL COMMENT '上一次登录时间',`user_register_time` datetime DEFAULT NULL COMMENT '用户注册时间',PRIMARY KEY (`userId`)
);CREATE TABLE `blog_type` (`type_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '类型ID',`type_name` varchar(32) NOT NULL COMMENT '类型名称',PRIMARY KEY (`type_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;CREATE TABLE `t_blog` (`blog_id` bigint NOT NULL AUTO_INCREMENT COMMENT '博客ID',`blog_title` varchar(100) NOT NULL COMMENT '博客标题',`blog_content` longtext NOT NULL COMMENT '博客内容',`userid` bigint DEFAULT NULL COMMENT '创建人ID',`type_id` int(11) DEFAULT NULL COMMENT '类型ID',`blog_status` int(11) NOT NULL DEFAULT '0' COMMENT '博客状态 1为发布 0为草稿',`create_time` datetime NOT NULL COMMENT '创建时间',`update_time` datetime NOT NULL COMMENT '更新时间',`cover_image` varchar(255) DEFAULT NULL COMMENT '封面图片',PRIMARY KEY (`blog_id`),KEY `FK_type_id` (`type_id`),KEY `FK_user_id` (`userid`),CONSTRAINT `FK_type_id` FOREIGN KEY (`type_id`) REFERENCES `blog_type` (`type_id`),CONSTRAINT `FK_user_id` FOREIGN KEY (`userid`) REFERENCES `t_user` (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;CREATE TABLE `t_comment` (`comment_id` bigint NOT NULL AUTO_INCREMENT COMMENT '评论id',`comment_content` varchar(500) NOT NULL COMMENT '评论内容',`blog_id` bigint NOT NULL COMMENT '博客ID',`createtime` datetime NOT NULL COMMENT '评论时间',`userid` bigint NOT NULL COMMENT '评论人ID',`replyid` int(11) NOT NULL,PRIMARY KEY (`comment_id`),KEY `FK_comment_blog_id` (`blog_id`),KEY `FK_comment_user_id` (`userid`),CONSTRAINT `FK_comment_blog_id` FOREIGN KEY (`blog_id`) REFERENCES `t_blog` (`blog_id`),CONSTRAINT `FK_comment_user_id` FOREIGN KEY (`userid`) REFERENCES `t_user` (`userId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;#请在此添加实现代码
########## Begin ##########
#创建博客标签表(t_tag),并建立表之间的关系########## End ##########
实验代码
#请在此添加实现代码
########## Begin ##########
#创建博客标签表(t_tag),并建立表之间的关系
create table t_tag(tag_id int AUTO_INCREMENT PRIMARY KEY,tag_name varchar(32) NOT NULL
);
create table t_tag_blog(tag_id int,blog_id bigint,constraint FK_blog_id FOREIGN KEY (tag_id) references t_tag(tag_id),constraint FK_tag_id FOREIGN KEY (blog_id) references t_blog(blog_id)
);
########## End ##########