代码地址:https://github.com/hefeng6500/blog-server/blob/master/sql_design/blog.sql

SHOW DATABASES;
DROP DATABASE IF EXISTS blog;
CREATE DATABASE IF NOT EXISTS blog DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
USE blog;
DROP TABLE IF EXISTS user_table;
-- 用户表
CREATE TABLE user_table (user_id INT PRIMARY KEY AUTO_INCREMENT comment '用户id',username VARCHAR(20) NOT NULL comment '用户名',password VARCHAR(20) NOT NULL comment '密码',email VARCHAR(50) NOT NULL comment '邮箱',phone_number VARCHAR(20) NOT NULL comment '手机号码',sex CHAR(1) NOT NULL comment '性别',introduce VARCHAR(200) NOT NULL comment '用户签名',reg_time DATETIME NOT NULL comment '注册时间',last_update_time DATETIME NOT NULL comment '身份信息最后修改时间'
);
-- 文章表
DROP TABLE IF EXISTS articles;
CREATE TABLE articles (article_id INT PRIMARY KEY AUTO_INCREMENT comment '文章id',title VARCHAR(50) NOT NULL comment '文章标题',content LONGTEXT NOT NULL comment '文章内容',create_time DATETIME NOT NULL comment '创建时间',last_update_time DATETIME NOT NULL comment '最后修改时间',is_original CHAR(1) NOT NULL comment '是否原创',user_id INT NOT NULL comment '用户id',like_count INT NOT NULL comment '点赞数量',view_count INT NOT NULL comment '浏览量'
);
-- 文章分类表
DROP TABLE IF EXISTS article_category;
CREATE TABLE article_category (category_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT comment '分类id',category_name VARCHAR(20) NOT NULL comment '分类名称',article_id INT NOT NULL comment '文章id'
);
-- 评论表
DROP TABLE IF EXISTS comment_table;
CREATE TABLE comment_table (id INT PRIMARY KEY AUTO_INCREMENT comment '评论id',article_id INT NOT NULL comment '文章id',comment_type VARCHAR(20) comment '评论类型',comment_content VARCHAR(1000) NOT NULL comment '评论内容',uid INT NOT NULL
);
-- 回复表
DROP TABLE IF EXISTS replay_table;
CREATE TABLE replay_table (reply_id INT PRIMARY KEY AUTO_INCREMENT comment '回复id',comment_id INT NOT NULL comment '评论id',content VARCHAR(1000) NOT NULL comment '回复内容',type VARCHAR(20) comment '回复类型',replay_time DATETIME NOT NULL comment '回复时间'
);
-- 标签表
DROP TABLE IF EXISTS article_tag;
CREATE TABLE article_tag(id INT PRIMARY KEY AUTO_INCREMENT comment '标签id',name VARCHAR(20) NOT NULL comment '标签名称',atricle_id INT NOT NULL comment '文章id'
);
-- 插入基本测试数据
INSERT INTOuser_table (username,password,email,phone_number,sex,introduce,reg_time,last_update_time)
VALUES("hefeng6500","hefeng9999","2443992009@qq.com",18800008888,1,"每一个不曾起舞的日子都是对生命的辜负","2021-07-27 20:39:30","2021-07-27 20:39:30");

之前对一对多的表设计很迷惑,最近看了不少博文有一些启发,如下:
比如一篇文章可能对应对个标签,如果把标签 id 设定在 文章表里面那就很不友好,要么一篇文章只能绑定一个标签 id,要么这篇文章绑定的标签 id 用 “tagId1, tagId2” 这种方式存储。上述两种方式都不是最好的使用方式,因为 mysql 最大特点就是结构化的存储。

那么怎么做呢?

在标签表中存储文章 id,那这样一篇文章就可以对应多个标签了(在标签表中,一个文章 id 会出现多次,对应多个标签 id)

搭建个人博客之 mysql 数据库表设计相关推荐

  1. Windows下搭建个人博客(Apache+MySQL+PHP+WordPress)

    Windows下搭建个人博客(Apache+MySQL+PHP+WordPress) CSDN博客的广告实在是烦,就自己在阿里云上搭建了一个博客(http://www.corfox.cn),CSDN博 ...

  2. MySQL数据库表设计

    MySQL数据库表设计 ​ 数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要 ...

  3. MySQL - 数据库表设计 - 范式

    目录 一.数据库设计的重要性 二.范式 - 简介: 1.什么是范式? 第一范式 - 单一列 第二范式 - 中间表 - 一对多 第三范式 - 不产生中间表 - 一对一.多对一 三.数据库表设计的注意要点 ...

  4. 博客|朋友圈 数据库表结构设计

    Links 微信朋友圈是怎么做的架构 朋友圈的设计及实现 个人博客(一)之表结构设计 朋友圈表结构 一个是发布.发布数据记录了来自所有用户所有的feed,比如一个用户发布了几张图片,每张图片的URL是 ...

  5. mysql数据库新浪博客_4.MySQL数据库类的定义

    4.MySQL数据库类的定义 (2008-06-16 20:33:09) 标签: 杂谈 4.MySQL数据库类的定义 俗话说"好的开始是成功的一半",而PHP+MySQL项目中数据 ...

  6. 架构师必备技能之——MySQL数据库表设计

    好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受. 目录 一.总体设计思想 二.字段相关设计原则 三.索引设计原则 四.SQL操作原则 五.其他原则 一.总体设计思想 ...

  7. 高性能Mysql数据库表设计原则

    为什么80%的码农都做不了架构师?>>>    1.更小通常更好 选择表示数据的最小类型(正确存储你的内容):比如说,能够使用char 数据类型存储,就不必选择varchar,能够使 ...

  8. mysql数据库表设计理论原则实践

    文章目录 一.理论原则 1.原始单据与实体之间的关系 2.主键与外键 3.基本表的性质 4.范式标准 5.通俗地理解三个范式 6.要善于识别与正确处理多对多的关系 7.主键PK的取值方法 8.正确认识 ...

  9. mysql数据库表设计——如何对图片进行存储

    业务场景:当我们进行头条文章接口的设计时,需要存储封面图片的字段. 文章和图片关系 ----> 一对多 方案一:传统的表设计 设计一张表,专门保存文章和封面图片之间的关系 id article_ ...

最新文章

  1. Android与iOS对比
  2. 【JS】JS中数值型字符串相加变成拼接字符串的解决方法
  3. mysql master slave_mysql master slave
  4. Cortex M3寄存器组
  5. 天翼云从业认证(1.6)虚拟化技术基础、服务器虚拟化、存储虚拟化和网络虚拟化技术;
  6. Dojo query 库
  7. Problem M. Mediocre String Problem(Z 函数 + PAM)
  8. Linux启动和退出系统的方法,实验二 Linux的启动与关闭
  9. 如何在TensorFlow中通过深度学习构建年龄和性别的多任务预测器
  10. kafka图形化管理工具kafka-manager
  11. 春运期间长江海事局开辟四类运输“绿色通道”
  12. 初识Python 04 day
  13. codepush 微软服务器,ionic3 code-push 搭建自己服务器的问题
  14. 主流的语音芯片ic方案该如何选 这篇文章可以说清楚
  15. 中国程序员鼓励师都干啥? 美媒:按摩谈心样样通
  16. 水滴pin安卓版apk_小水滴app下载
  17. Android MultiDex 解析与使用
  18. mysql定时执行任务
  19. Unsupervised Domain Adaptation for Semantic Segmentation by Content Transfer
  20. 解决SpringBoot的yml配置文件报错: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping

热门文章

  1. 博科光纤交换机初始密码
  2. 用栈实现队列---用两个栈模拟实现一个队列
  3. 用队列实现栈--用两个队列模拟实现栈
  4. 数据恢复:在 Linux 上恢复删除了的文件
  5. Ajax实现百度搜索框自动提示功能
  6. 电脑卡顿,电脑经常卡顿怎么办?几步操作让电脑起死回生。
  7. C++:面向对象(总结+补习)
  8. 第一颗国产 四端口 LVDS 至 HDMI2.0,带音频 芯片 LT2611UX
  9. 【Redis】Redis最大连接数maxTotal设置过小的问题
  10. Oracle Workflow Demo (1) - 一个简单的请假申请工作流