Educoder 数据库设计 - 博客系统
第1关:数据库表设计 - 用户信息表
任务描述
本关任务:创建博客系统数据库的用户信息表。
相关知识
数据库整体设计
一个博客系统会有哪些功能呢,肯定会有的是博客列表,博客详情,评论,登陆注册等等这些功能,那应该建多少张表呢?应该给这些表添加哪些字段呢?字段的约束怎么设计呢?表与表之间的关联关系应该怎样设计呢?
这是你在开始本实训之前要思考的问题。
博客系统数据库的整体设计如下图所示:总共涉及到五张表:
用户信息表;
博客信息表;
博客类型表;
博客评论表;
博客标签表。
用户信息表(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关:数据库表设计 - 核心表
任务描述
本关任务:编写博客系统的核心表。
相关知识
核心表设计
设计编写完用户信息表之后,我们就需要设计博客系统的核心表了,在这里我们编写三个表分别是:
博客类型表;
博客信息表;
博客评论表。
博客类型表和博客信息表是一对多的关系,博客评论表和博客信息表是多对一的关系,用户信息表与博客信息表、博客评论表是一对多的关系。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在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
知识的博客,就可能会涉及到多个标签如:前端、后端、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),并建立表之间的关系
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 数据库设计 - 博客系统相关推荐
- 数据库设计-博客系统数据库的设计
数据库设计-博客系统数据库的设计 数据库整体设计 问题: 一个博客系统会有哪些功能呢,肯定会有的是博客列表,博客详情,评论,登陆注册等等这些功能,那应该建多少张表呢?应该给这些表添加哪些字段呢?字段的 ...
- 数据库设计 - 博客系统
数据库整体设计 一个博客系统会有哪些功能呢,肯定会有的是博客列表,博客详情,评论,登陆注册等等这些功能,那应该建多少张表呢?应该给这些表添加哪些字段呢?字段的约束怎么设计呢?表与表之间的关联关系应该怎 ...
- 前端页面设计 博客系统
--页面介绍 博客列表页:显示了当前系统中都有哪些发布出来的博客 导航栏:logo,标题,主页,写博客,注销 左侧:当前用户信息,用户的头像+名字+其他的简单信息 右侧:博客列表 列表中的每一项,包含 ...
- 【EduCoder答案】博客系统 - 登录注册界面
简介 答案查询的入口网页版 其他各类实训答案的目录见这里 答案获取的方法简介见这里 并不是所有的关卡都有答案,有些只有部分关卡有 不要直接复制答案哦 博客系统 - 登录注册界面 >>> ...
- 博客系统 - 数据库设计(二)
@R星校长 第2关:数据库表设计 - 核心表 核心表设计 设计编写完用户信息表之后,我们就需要设计博客系统的核心表了,在这里我们编写三个表分别是: 博客类型表: 博客信息表: 博客评论表. 博客类型表 ...
- 博客系统知多少:揭秘那些不为人知的学问(四)
点击上方关注"汪宇杰博客" ^_^ 上篇<博客系统知多少:揭秘那些不为人知的学问(三)>介绍了博客协议或标准.本篇终章介绍设计博客系统有哪些知识点. 1.&quo ...
- 博客系统知多少:揭秘那些不为人知的学问(二)
点击上方关注"汪宇杰博客" 上篇<博客系统知多少:揭秘那些不为人知的学问(一)>介绍了博客的历史.我的博客故事及博客的受众来源.本篇精彩继续,介绍博客基本功能设计要点. ...
- 博客系统知多少:揭秘那些不为人知的学问(三)
点击上方关注"汪宇杰博客" 上篇<博客系统知多少:揭秘那些不为人知的学问(二)>介绍了博客的基本功能设计要点,本篇介绍博客的协议或标准. 1."博客" ...
- 基于 SpringBoot + MyBatis 的博客系统
文章目录 1. 项目设计 2. 效果展示 3. 创建项目并配置文件 1.1 创建 Spring 项目 1.2 配置文件 4. 数据库实现用户和博客管理 4.1 设计数据库 4.2 使用 MyBatis ...
- 博客系统知多少:揭秘那些不为人知的学问(一)
点击上方蓝字关注"汪宇杰博客" 导语 在我们生活的年代,博客并不稀奇,甚至可以说是随处可见.从最早的搜狐.新浪博客,再到每个人都曾记录青春的 QQ 空间,再到现在的 Vlog 与 ...
最新文章
- 给热爱学习的同学们推荐一些顶级的c# Blogs链接
- mxnet makeloss
- Knative 实践:从源代码到服务的自动化部署
- 数据库系统概念总结:第三章 SQL
- PandasGUI:使用图形用户界面分析 Pandas 数据帧
- 运行QQ出现initialization failure 0x0000000c错误和浏览器上不了网
- Apollo自动驾驶入门课程第⑦讲 — 规划(上)
- C++20 要来了!
- 学习廖雪峰的git教程6--版本控制
- android动画帧率_Android流畅度之帧率
- java工程编辑器中文乱码_Java Web开发项目中中文乱码解决方法汇总
- 链路聚合_链路聚合实验
- MISRA C 2004
- Octree 了然于胸
- 通宵写6000字,浅谈密码的破解(破解HASH算法加密)
- 计算机硬盘hs申报要素,实例手把手教你填报HS编码和申报要素
- 《精通Tableau商业数据分析与可视化》之目录
- 苹果 开发者账号如下
- 翻译(5): 技术债务墻:一种让技术债务可见并可协商的方法
- Java中的所有关键