博客系统 - 数据库设计

相关知识
多对多关系的建立
每一个博客都可以设置很多个标签,比如一篇讲JavaWeb知识的博客,就可能会涉及到多个标签如:前端,后端,Java,SpringMVC等标签,而一个标签也可能对应多个博客,比如“后端”这个标签就可能对应很多博客,如:Python博客,Java博客。.net博客等。
所以我们应该讲博客标签表与博客表设计成一个多对多的关系,那么应该怎么设计呢?这是我们要思考的问题。

我们对博客标签表与博客信息表设计如下图所示:
在这里插入图片描述
设计了一个中间表,分别与博客信息表和博客标签表是一对多的关系,这样博客标签表(t_tag)就和博客信息表(t_blog)是多对多的关系了。

########## Begin ##########
#在blog_db库中创建t_user表
use blog_db;
CREATE TABLE `t_user` (
  `userId` int NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `userName` varchar(32) NOT NULL COMMENT '用户名',
  `passWord` varchar(32) NOT NULL COMMENT '用户密码',
  `userSex` 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 '头像地址',
  `isSuperuser` int NOT NULL DEFAULT '0' COMMENT '是否是管理员 1代表 是 0代表不是',
  `lastLogin` datetime DEFAULT NULL COMMENT '上一次登录时间',
  `userRegisterTime` datetime DEFAULT NULL COMMENT '用户注册时间',
  PRIMARY KEY (`userId`)
);

########## End ##########




########## Begin ##########
#创建blog_type、t_blog、t_comment表,并建立表之间的关系
CREATE TABLE `blog_type` (
  `typeId` int NOT NULL AUTO_INCREMENT COMMENT '类型ID',
  `typeName` varchar(32) NOT NULL COMMENT '类型名称',
  PRIMARY KEY (`typeId`)
);
CREATE TABLE `t_blog` (
  `blogId` int NOT NULL AUTO_INCREMENT COMMENT '博客ID',
  `blogTitle` varchar(100) NOT NULL COMMENT '博客标题',
  `blogContent` longtext NOT NULL COMMENT '博客内容',
  `userId` int DEFAULT NULL COMMENT '创建人ID',
  `typeId` int DEFAULT NULL COMMENT '类型ID',
  `blogStatus` int NOT NULL DEFAULT '0' COMMENT '博客状态 1为发布 0为草稿',
  `createTime` datetime NOT NULL COMMENT '创建时间',
  `updateTime` datetime NOT NULL COMMENT '更新时间',
  `coverImage` varchar(255) DEFAULT NULL COMMENT '封面图片',
  PRIMARY KEY (`blogId`),
  KEY `FK_type_id` (`typeId`),
  KEY `FK_user_id` (`userId`),
  CONSTRAINT `FK_type_id` FOREIGN KEY (`typeId`) REFERENCES `blog_type` (`typeId`),
  CONSTRAINT `FK_user_id` FOREIGN KEY (`userId`) REFERENCES `t_user` (`userId`)
);
CREATE TABLE `t_comment` (
  `commentId` int NOT NULL AUTO_INCREMENT COMMENT '评论id',
  `commentContent` varchar(500) NOT NULL COMMENT '评论内容',
  `blogId` int NOT NULL COMMENT '博客ID',
  `createTime` datetime NOT NULL COMMENT '评论时间',
  `userId` int NOT NULL COMMENT '评论人ID',
  `replyId` int NOT NULL,
  PRIMARY KEY (`commentId`),
  KEY `FK_comment_blog_id` (`blogId`),
  KEY `FK_comment_user_id` (`userId`),
  CONSTRAINT `FK_comment_user_id` FOREIGN KEY (`userId`) REFERENCES `t_user` (`userId`),
  CONSTRAINT `FK_comment_blog_id` FOREIGN KEY (`blogId`) REFERENCES `t_blog` (`blogId`)
);

########## End ##########





#请在此添加实现代码
########## Begin ##########
#创建博客标签表(t_tag),并建立表之间的关系
CREATE TABLE t_tag (
    `tagId` int NOT NULL AUTO_INCREMENT COMMENT '标签id',
    `tagName` varchar(32) NOT NULL  COMMENT '标签名称',
    PRIMARY KEY (`tagId`)
);
CREATE TABLE t_tag_blog (
    `tagId` int DEFAULT NULL COMMENT '标签id',
    `blogId` int(11) DEFAULT NULL COMMENT '博客id',
    constraint FK_blog_id foreign key (tagId) references t_tag(tagId),
    constraint FK_tag_id foreign key (blogId) references t_blog(blogId)
);
########## End ##########


测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

Field    Type    Null    Key    Default    Extra
tagId    int(11)    NO    PRI    NULL    auto_increment
tagName    varchar(32)    NO        NULL    
Field    Type    Null    Key    Default    Extra
tagId    int(11)    YES    MUL    NULL    
blogId    int(11)    YES    MUL    NULL    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辛巴的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值