SQL 环境安装

  • 安装 mysql 环境

docker安装mysql

  • 安装 数据库 可视化工具

    navicate-mysql

  • 创建数据库

create database pangugle_test_db;
  • 创建表

我们以新闻类网站作为我们的测试,

  • 表的名称规范如下
公司名_模块名_业务名
  • 字段名规范
业务名_详细名称

设计表

-- ----------------------------
-- 新闻分类表
-- ----------------------------
CREATE TABLE IF NOT EXISTS pangugle_news_category (
  category_id           int(11) NOT NULL AUTO_INCREMENT,
  category_title        varchar(50) NOT NULL DEFAULT '',
  category_desc         varchar(255) NOT NULL DEFAULT '',
  category_createtime   datetime NOT NULL ,
  category_admin				varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (category_id),
  INDEX pangugle_news_category_createtime(category_createtime),
  INDEX pangugle_news_category_admin(category_admin),
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;

-- ----------------------------
-- 新闻文章表
-- ----------------------------
CREATE TABLE IF NOT EXISTS pangugle_news_article (
  article_id            int(11) NOT NULL AUTO_INCREMENT,
  article_category_id   int(11) NOT NULL,
  article_title         varchar(50) NOT NULL,
  article_desc          text NOT NULL,
  article_createtime    datetime NOT NULL ,
  article_admin					varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (article_id),
  INDEX pangugle_news_article_category_id(article_category_id),
  INDEX pangugle_news_article_createtime(article_createtime),
  INDEX pangugle_news_article_admin(article_admin),
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;

表说明

  • 新闻分类表 pangugle_news_category

    表字段说明:
    
    1. category_id 分类表主键自增id
    2. category_title  分类标题
    3. category_desc  分类描述
    4. category_createtime 创建时间
    5. category_admin   审核管理员
    
  • 新闻文章表 pangugle_news_article

    表字段说明:
    
    1. article_id 文章表主键自增id
    2. article_category_id 所属哪个分类
    3. article_title  分类标题
    4. article_desc  分类描述
    5. category_createtime 创建时间
    6. category_admin   审核管理员
    

注意:

本sql 示例是以生产环境为目标创建,都是模块化,真正的还原生产环境!

创建表完成 就要添加数据了

  • 分类表数据
category_id category_title category_desc category_createtime category_admin
1 百度 百度公司 2020-09-16 18:09:52 admin
2 盘古歌 盘古歌技术 2020-09-16 18:12:31 admin
3 Google 谷歌公司 2020-09-16 18:12:56 u1
4 阿里巴巴 阿里巴巴公司 2020-09-16 18:13:20 u1
5 qq 腾讯公司 2020-09-16 18:13:36 u1
  • pangugle_news_article 文章表数据
article_id article_category_id article_title article_desc article_createtime article_admin
1 1 百度文章 百度文章描述 2020-09-17 11:22:54 u1
2 2 盘古文章 盘古文章描述 2020-09-17 11:23:46 u2
3 3 Google 文章 Google文章描述 2020-09-17 11:24:57 u3

注意:

article_category_id 的数据来源于 pangugle_news_category,但这里不添加外键约束,在实际工作中,一般也不加约束,都是逻辑代码来完成这个约束的!

数据库约束一般很难管理!建议不要用!

哪天不需要约束,那不是尴尬? 删约束? 数据多了直接锁表!如果在核心业务这样操作, 操作经济损失,可是要被炒的!

阿里巴巴 SQL 相关规范