任务描述
本关任务:编写博客系统的核心表。
相关知识
核心表设计
设计编写完用户信息表之后,我们就需要设计博客系统的核心表了,在这里我们编写三个表分别是:
-
博客类型表;
-
博客信息表;
-
博客评论表。
博客类型表和博客信息表是一对多的关系,博客评论表和博客信息表是多对一的关系,用户信息表与博客信息表、博客评论表是一对多的关系。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
-
创建博客类型(
blog_type
)、博客信息(t_blog
)、博客评论(t_comment
)这三张表,并根据设计图建立表与表之间的约束; -
博客类型表(
blog_type
); 创建博客类型表,字段和属性如下:
字段名称 | 类型 | 备注 | 约束 |
---|---|---|---|
type_id | int | 类型id | 主键,自动增长,增量为1 |
type_name | varchar(32) | 类型名称 | 非空 |
- 博客信息表(
t_blog
);
字段名称 | 类型 | 备注 | 约束 |
---|---|---|---|
blog_id | bigint | 博客id | 主键,自动增长 |
blog_title | varchar(100) | 博客标题 | 非空 |
blog_content | longtext | 博客内容 | 非空 |
userid | bigint | 创建人id | 外键 |
type_id | int | 类型ID | 外键 |
blog_status | int | 博客状态 1为发布 0为草稿 | 非空,默认为0 |
create_time | datetime | 创建时间 | 非空 |
update_time | datetime | 更新时间 | 非空 |
cover_image | varchar(255) | 封面图片 | 无 |
创建该表时,注意要添加外键约束,外键为userid
,外键名称设置为FK_user_id
,外键表为用户信息表(t_user
)。
另一个外键为type_id
,外键名称设置为FK_type_id
,外键表为博客类型表(blog_type
)。
- 新闻评论表(
t_comment
)。
字段名称 | 类型 | 备注 | 约束 |
---|---|---|---|
comment_id | bigint | 评论id | 主键,自动增长,增量为1 |
comment_content | varchar(500) | 评论内容 | 非空 |
blog_id | bigint | 评论内容 | 非空,外键 |
createtime | datetime | 评论时间 | 非空 |
userid | bigint | 评论人ID | 非空,外键 |
replyid | int | 评论回复人ID | 非空 |
创建该表时,注意要添加外键约束,外键为userid
,外键名称设置为FK_comment_user_id
,外键表为用户信息表(t_user
)。
另一个外键为blog_id
,外键名称设置为FK_comment_blog_id
,外键表为博客信息表(t_blog
)。
在blog_db
中创建这三张表(顺序不能变,即blog_type -> t_blog -> t_comment
),并添加相应约束。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。 预期输出:
开始你的任务吧,祝你成功!
实验代码
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`)
);
#请在此添加实现代码
########## Begin ##########
#创建blog_type、t_blog、t_comment表,并建立表之间的关系
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;
########## End ##########