搭建个人博客之 mysql 数据库表设计
代码地址: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 数据库表设计相关推荐
- Windows下搭建个人博客(Apache+MySQL+PHP+WordPress)
Windows下搭建个人博客(Apache+MySQL+PHP+WordPress) CSDN博客的广告实在是烦,就自己在阿里云上搭建了一个博客(http://www.corfox.cn),CSDN博 ...
- MySQL数据库表设计
MySQL数据库表设计 数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要 ...
- MySQL - 数据库表设计 - 范式
目录 一.数据库设计的重要性 二.范式 - 简介: 1.什么是范式? 第一范式 - 单一列 第二范式 - 中间表 - 一对多 第三范式 - 不产生中间表 - 一对一.多对一 三.数据库表设计的注意要点 ...
- 博客|朋友圈 数据库表结构设计
Links 微信朋友圈是怎么做的架构 朋友圈的设计及实现 个人博客(一)之表结构设计 朋友圈表结构 一个是发布.发布数据记录了来自所有用户所有的feed,比如一个用户发布了几张图片,每张图片的URL是 ...
- mysql数据库新浪博客_4.MySQL数据库类的定义
4.MySQL数据库类的定义 (2008-06-16 20:33:09) 标签: 杂谈 4.MySQL数据库类的定义 俗话说"好的开始是成功的一半",而PHP+MySQL项目中数据 ...
- 架构师必备技能之——MySQL数据库表设计
好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受. 目录 一.总体设计思想 二.字段相关设计原则 三.索引设计原则 四.SQL操作原则 五.其他原则 一.总体设计思想 ...
- 高性能Mysql数据库表设计原则
为什么80%的码农都做不了架构师?>>> 1.更小通常更好 选择表示数据的最小类型(正确存储你的内容):比如说,能够使用char 数据类型存储,就不必选择varchar,能够使 ...
- mysql数据库表设计理论原则实践
文章目录 一.理论原则 1.原始单据与实体之间的关系 2.主键与外键 3.基本表的性质 4.范式标准 5.通俗地理解三个范式 6.要善于识别与正确处理多对多的关系 7.主键PK的取值方法 8.正确认识 ...
- mysql数据库表设计——如何对图片进行存储
业务场景:当我们进行头条文章接口的设计时,需要存储封面图片的字段. 文章和图片关系 ----> 一对多 方案一:传统的表设计 设计一张表,专门保存文章和封面图片之间的关系 id article_ ...
最新文章
- Android与iOS对比
- 【JS】JS中数值型字符串相加变成拼接字符串的解决方法
- mysql master slave_mysql master slave
- Cortex M3寄存器组
- 天翼云从业认证(1.6)虚拟化技术基础、服务器虚拟化、存储虚拟化和网络虚拟化技术;
- Dojo query 库
- Problem M. Mediocre String Problem(Z 函数 + PAM)
- Linux启动和退出系统的方法,实验二 Linux的启动与关闭
- 如何在TensorFlow中通过深度学习构建年龄和性别的多任务预测器
- kafka图形化管理工具kafka-manager
- 春运期间长江海事局开辟四类运输“绿色通道”
- 初识Python 04 day
- codepush 微软服务器,ionic3 code-push 搭建自己服务器的问题
- 主流的语音芯片ic方案该如何选 这篇文章可以说清楚
- 中国程序员鼓励师都干啥? 美媒:按摩谈心样样通
- 水滴pin安卓版apk_小水滴app下载
- Android MultiDex 解析与使用
- mysql定时执行任务
- Unsupervised Domain Adaptation for Semantic Segmentation by Content Transfer
- 解决SpringBoot的yml配置文件报错: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping