第1关:数据库表设计 - 用户信息表

任务描述

本关任务:创建博客系统数据库的用户信息表。

相关知识

数据库整体设计

一个博客系统会有哪些功能呢,肯定会有的是博客列表,博客详情,评论,登陆注册等等这些功能,那应该建多少张表呢?应该给这些表添加哪些字段呢?字段的约束怎么设计呢?表与表之间的关联关系应该怎样设计呢?

这是你在开始本实训之前要思考的问题。

博客系统数据库的整体设计如下图所示:总共涉及到五张表:

  1. 用户信息表;

  2. 博客信息表;

  3. 博客类型表;

  4. 博客评论表;

  5. 博客标签表。

用户信息表(t_user)

设计用户信息表是设计数据库的第一步,和一般的网站类似,博客系统的用户信息有如下内容:

字段名称 类型 备注 约束
userId bigint 用户ID 主键,自增长,增量为1
username varchar(32) 用户名 非空
password varchar(32) 密码 非空
user_sex varchar(6) 性别 0代表男 1代表女 默认值为 0
email varchar(64) 邮箱
phone varchar(11) 手机号码 非空
firstname varchar(6)
lastname varchar(12)
avatar varchar(255) 头像地址
is_superuser int 是否是管理员 0代表不是 1代表是 默认值为0
last_login datetime 上一次登陆时间
user_register_time datetime 用户注册时间

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  • 创建用户信息表,使用blog_db数据库,创建的表命名为t_user

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。 每次点击评测后台都会将数据库环境重置,数据库blog_db会自动创建好。

预期输出:


开始你的任务吧,祝你成功!

通关代码:

#请在此添加实现代码
########## Begin ##########
#在blog_db库中创建t_user表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`)
);########## End ##########

第2关:数据库表设计 - 核心表

任务描述

本关任务:编写博客系统的核心表。

相关知识

核心表设计

设计编写完用户信息表之后,我们就需要设计博客系统的核心表了,在这里我们编写三个表分别是:

  1. 博客类型表;

  2. 博客信息表;

  3. 博客评论表。

博客类型表和博客信息表是一对多的关系,博客评论表和博客信息表是多对一的关系,用户信息表与博客信息表、博客评论表是一对多的关系。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在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 ##########

第3关:数据库表设计 - 博客标签表

任务描述

本关任务:在博客数据库中建立博客标签表。

相关知识

多对多关系的建立

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

我们对博客标签表与博客信息表设计如下图所示:

设计了一个中间表,分别与博客信息表和博客标签表是一对多的关系,这样博客标签表(t_tag)就和博客信息表(t_blog)是多对多的关系了。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  • 根据设计图,创建博客标签表(t_tag),以及中间表(t_tag_blog),并建立表与表之间的联系。外键名分别为FK_blog_idFK_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),并建立表之间的关系
create table t_tag(tag_id int primary key AUTO_INCREMENT,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 ##########

Educoder 数据库设计 - 博客系统相关推荐

  1. 数据库设计-博客系统数据库的设计

    数据库设计-博客系统数据库的设计 数据库整体设计 问题: 一个博客系统会有哪些功能呢,肯定会有的是博客列表,博客详情,评论,登陆注册等等这些功能,那应该建多少张表呢?应该给这些表添加哪些字段呢?字段的 ...

  2. 数据库设计 - 博客系统

    数据库整体设计 一个博客系统会有哪些功能呢,肯定会有的是博客列表,博客详情,评论,登陆注册等等这些功能,那应该建多少张表呢?应该给这些表添加哪些字段呢?字段的约束怎么设计呢?表与表之间的关联关系应该怎 ...

  3. 前端页面设计 博客系统

    --页面介绍 博客列表页:显示了当前系统中都有哪些发布出来的博客 导航栏:logo,标题,主页,写博客,注销 左侧:当前用户信息,用户的头像+名字+其他的简单信息 右侧:博客列表 列表中的每一项,包含 ...

  4. 【EduCoder答案】博客系统 - 登录注册界面

    简介 答案查询的入口网页版 其他各类实训答案的目录见这里 答案获取的方法简介见这里 并不是所有的关卡都有答案,有些只有部分关卡有 不要直接复制答案哦 博客系统 - 登录注册界面 >>> ...

  5. 博客系统 - 数据库设计(二)

    @R星校长 第2关:数据库表设计 - 核心表 核心表设计 设计编写完用户信息表之后,我们就需要设计博客系统的核心表了,在这里我们编写三个表分别是: 博客类型表: 博客信息表: 博客评论表. 博客类型表 ...

  6. 博客系统知多少:揭秘那些不为人知的学问(四)

       点击上方关注"汪宇杰博客" ^_^ 上篇<博客系统知多少:揭秘那些不为人知的学问(三)>介绍了博客协议或标准.本篇终章介绍设计博客系统有哪些知识点. 1.&quo ...

  7. 博客系统知多少:揭秘那些不为人知的学问(二)

    点击上方关注"汪宇杰博客" 上篇<博客系统知多少:揭秘那些不为人知的学问(一)>介绍了博客的历史.我的博客故事及博客的受众来源.本篇精彩继续,介绍博客基本功能设计要点. ...

  8. 博客系统知多少:揭秘那些不为人知的学问(三)

    点击上方关注"汪宇杰博客" 上篇<博客系统知多少:揭秘那些不为人知的学问(二)>介绍了博客的基本功能设计要点,本篇介绍博客的协议或标准. 1."博客" ...

  9. 基于 SpringBoot + MyBatis 的博客系统

    文章目录 1. 项目设计 2. 效果展示 3. 创建项目并配置文件 1.1 创建 Spring 项目 1.2 配置文件 4. 数据库实现用户和博客管理 4.1 设计数据库 4.2 使用 MyBatis ...

  10. 博客系统知多少:揭秘那些不为人知的学问(一)

    点击上方蓝字关注"汪宇杰博客" 导语 在我们生活的年代,博客并不稀奇,甚至可以说是随处可见.从最早的搜狐.新浪博客,再到每个人都曾记录青春的 QQ 空间,再到现在的 Vlog 与 ...

最新文章

  1. 给热爱学习的同学们推荐一些顶级的c# Blogs链接
  2. mxnet makeloss
  3. Knative 实践:从源代码到服务的自动化部署
  4. 数据库系统概念总结:第三章 SQL
  5. PandasGUI:使用图形用户界面分析 Pandas 数据帧
  6. 运行QQ出现initialization failure 0x0000000c错误和浏览器上不了网
  7. Apollo自动驾驶入门课程第⑦讲 — 规划(上)
  8. C++20 要来了!
  9. 学习廖雪峰的git教程6--版本控制
  10. android动画帧率_Android流畅度之帧率
  11. java工程编辑器中文乱码_Java Web开发项目中中文乱码解决方法汇总
  12. 链路聚合_链路聚合实验
  13. MISRA C 2004
  14. Octree 了然于胸
  15. 通宵写6000字,浅谈密码的破解(破解HASH算法加密)
  16. 计算机硬盘hs申报要素,实例手把手教你填报HS编码和申报要素
  17. 《精通Tableau商业数据分析与可视化》之目录
  18. 苹果 开发者账号如下
  19. 翻译(5): 技术债务墻:一种让技术债务可见并可协商的方法
  20. Java中的所有关键

热门文章

  1. 小学生听力测试软件,亲测十款小学英语APP,为了孩子请收藏
  2. Python多行注释/取消注释快捷键
  3. linux redis命令客户端,Redis客户端与基本命令
  4. ABB工业机器人程序编写与实战
  5. BASE32编码--记录
  6. NESSUS简介与安装
  7. Comsol with Matlab
  8. Servlet容器与Servlet的关系
  9. matlab光学原理仿真应用衍射,光学衍射仿真实验系统
  10. STM32实战总结:HAL之数码管