部落格系統 - 資料庫設計(三)
@R星校長
第3
關:資料庫表設計 - 部落格標籤表
多對多關係的建立
每一個部落格都可以設定很多個標籤,比如一篇講JavaWeb
知識的部落格,就可能會涉及到多個標籤如:前端、後端、Java
、SpringMVC
等標籤,而一個標籤也可能對應多個部落格,比如“後端”這個標籤就可能對應很多部落格,如:Python
部落格、Java
部落格、.net
部落格等。
所以我們應該講部落格標籤表與部落格表設計成一個多對多的關係,那麼應該怎麼設計呢?這是我們要思考的問題。
我們對部落格標籤表與部落格資訊表設計如下圖所示:
設計了一箇中間表,分別與部落格資訊表和部落格標籤表是一對多的關係,這樣部落格標籤表(t_tag
)就和部落格資訊表(t_blog
)是多對多的關係了。
程式設計要求
根據設計圖,建立部落格標籤表(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 ##########
相關文章
- 個人部落格資料庫設計資料庫
- 資料庫系統設計概述資料庫
- 為什麼程式設計師應該寫部落格?用什麼部落格系統?程式設計師
- 資料庫系統設計:分割槽資料庫
- 資料庫:系統設計的核心資料庫
- IYCMS部落格系統
- VuePress 部落格優化之新增資料統計功能Vue優化
- 部落格連結—Oracle資料庫類Oracle資料庫
- 進銷存系統資料庫設計資料庫
- 一個專為程式設計師設計的精緻 Java 部落格系統程式設計師Java
- ThinkPHP5+LayUI雲易部落格系統-自動同步CSDN網站的部落格資料PHPUI網站
- ThinkLog部落格系統
- GXBlog部落格系統
- Go Markdown 部落格系統Go
- 做個開源部落格學習Vite2 + Vue3 (三)部落格設計和程式碼設計ViteVue
- 【系統設計】分散式鍵值資料庫分散式資料庫
- 資料庫課程設計-宿舍管理系統資料庫
- 系統許可權資料庫設計方案資料庫
- LzCMS(老張部落格系統)
- 把Github當作資料庫,搭建部落格Github資料庫
- percona資料庫效能部落格好文章資料庫
- MySQL練習——教學系統資料庫設計MySql資料庫
- 資料庫系統-設計、實現與管理(一)資料庫
- 【web】資料庫應用系統設計體系結構Web資料庫
- 部落格連結—程式設計程式設計
- MySQL資料庫審計系統MySql資料庫
- 【資料庫設計】資料庫的設計資料庫
- HelloDjango 系列教程:建立 Django 部落格的資料庫模型Django資料庫模型
- 資料庫的一些基本知識部落格資料庫
- 成為MySQL DBA 部落格系列-資料庫升級MySql資料庫
- 極簡單欄部落格系統
- 晴楓個人部落格系統
- Halo 部落格系統 -0.4.0 釋出
- 記錄搭建Hexo部落格系統Hexo
- 資料庫設計三正規化資料庫
- 資料庫 設計三大正規化資料庫
- 資料庫設計三大正規化資料庫
- 【分享】部落格美化(5)為部落格或系統新增一個強大的評論系統