谷粒学院项目实战——02数据库创建以及项目搭建

本文介绍了谷粒学院项目实战中关于数据库创建的规范,包括创建数据库、设计讲师数据表,并遵循阿里巴巴Java开发手册的规约。接着详细讲述了如何搭建Spring Boot项目,包括创建父项目、搭建子项目以及使用工具类自动生成代码。
摘要由CSDN通过智能技术生成

一. 数据库

1. 创建数据库
  1. 创建数据库 guli

  2. 创建讲师数据表edu_teacher

    CREATE TABLE `edu_teacher` (
      `id` CHAR(19) NOT NULL COMMENT '讲师ID',
      `name` VARCHAR(20) NOT NULL COMMENT '讲师姓名',
      `intro` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '讲师简介',
      `career` VARCHAR(500) DEFAULT NULL COMMENT '讲师资历,一句话说明讲师',
      `level` INT(10) UNSIGNED NOT NULL COMMENT '头衔 1高级讲师 2首席讲师',
      `avatar` VARCHAR(255) DEFAULT NULL COMMENT '讲师头像',
      `sort` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '排序',
      `is_deleted` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '逻辑删除 1(true)已删除, 0(false)未删除',
      `gmt_create` DATETIME NOT NULL COMMENT '创建时间',
      `gmt_modified` DATETIME NOT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`),
      UNIQUE KEY `uk_name` (`name`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='讲师';
    
  3. 表结构
    在这里插入图片描述

2. 数据库设计规约

以下规约只针对本模块,更全面的文档参考《阿里巴巴Java开发手册》:五、MySQL数据库

  1. 库名与应用名称尽量一致

  2. 表名、字段名必须使用小写字母或数字,禁止出现数字开头

  3. 表名不使用复数名词

  4. 表的命名最好是加上“业务名称_表的作用”。如,edu_teacher

  5. 表必备三字段:id, gmt_create, gmt_modified

    说明:

    ​ 1. 其中 id 必为主键,类型为 bigint unsigned、单表时自增、步长为 1。

    ​ 2. 如果使用分库分表集群部署,则id类型为varchar,非自增,业务中使用分布式id生成器

    ​ 3. gmt_create, gmt_modified 的类型均为 datetime 类型,前者现在时表示主动创建,后者过去分词表示被 动更新。

  6. 单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。 说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。

  7. 表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint (1 表示是,0 表示否)。

    说明:任何字段如果为非负数,必须是 unsigned。

    注意:POJO 类中的任何布尔类型的变量,都不要加 is 前缀。数据库表示是与否的值,使用 tinyint 类型,坚持 is_xxx 的 命名方式是为了明确其取值含义与取值范围。

    正例:表达逻辑删除的字段名 is_deleted,1 表示删除,0 表示未删除。

  8. 小数类型为 decimal,禁止使用 float 和 double。 说明:float 和 double 在存储的时候,存在精度损失的问题,很可能在值的比较时,得到不正确的结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数分开存储。

  9. 如果存储的字符串长度几乎相等,使用 char 定长字符串类型。

  10. varchar 是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长度大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索 引效率。

  11. 唯一索引名为 uk_字段名;普通索引名则为 idx_字段名。

说明:uk_ 即 unique key;idx_ 即 index 的简称

  1. **不得使用外键与级联,一切外键概念必须在应用层解决。**外键与级联更新适用于单机低并发,不适合分布式、高并发集群;级联更新是强阻塞,存在数据库更新风暴的风险;外键影响数据库的插入速度。

二. 搭建项目

1. 创建父项目

  1. 创建springboot项目guli_parent

  2. 引入项目所需要的所有依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <modules>
            <module>service</module>
            <module>service/service_edu</module>
        </modules>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <!-- springboot 版本为: 2.2.1.RELEASE -->
            <version>2.2.1.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.hjf</groupId>
        <artifactId>guli_parent</artifactId>
        <!-- 当前类型为pom类型 -->
        <packaging>pom</packaging>
        <version>0.0.1-SNAPSHOT</version>
        <name>guli_parent</name>
        <description>Demo project for Spring Boot</description>
    
        <!-- 版本管理 -->
        <properties>
            <java.version>1.8</java.version>
            <guli.version>0.0.1-SNAPSHOT</guli.version>
            <mybatis-plus.version>3.0.5</mybatis-plus.version>
            <velocity.version>2.0</velocity.version>
            <swagger.version>2.7.0</swagger.version>
            <aliyun.oss.version>2.8.3</aliyun.oss.version>
            <jodatime.version>2.10.1</jodatime.version>
            <poi.version>3.17</poi.version>
            <commons-fileupload.version>1.3.1</commons-fileupload.version>
            <commons-io.version>2.6</commons-io.version>
            <httpclient.version>4.5.1</httpclient.version>
            <jwt.version>0.7.0</jwt.version>
            <
gulimall_pms 商品 drop table if exists pms_attr; drop table if exists pms_attr_attrgroup_relation; drop table if exists pms_attr_group; drop table if exists pms_brand; drop table if exists pms_category; drop table if exists pms_category_brand_relation; drop table if exists pms_comment_replay; drop table if exists pms_product_attr_value; drop table if exists pms_sku_images; drop table if exists pms_sku_info; drop table if exists pms_sku_sale_attr_value; drop table if exists pms_spu_comment; drop table if exists pms_spu_images; drop table if exists pms_spu_info; drop table if exists pms_spu_info_desc; /*==============================================================*/ /* Table: pms_attr */ /*==============================================================*/ create table pms_attr ( attr_id bigint not null auto_increment comment '属性id', attr_name char(30) comment '属性名', search_type tinyint comment '是否需要检索[0-不需要,1-需要]', icon varchar(255) comment '属性图标', value_select char(255) comment '可选值列表[用逗号分隔]', attr_type tinyint comment '属性类型[0-销售属性,1-基本属性,2-既是销售属性又是基本属性]', enable bigint comment '启用状态[0 - 禁用,1 - 启用]', catelog_id bigint comment '所属分类', show_desc tinyint comment '快速展示【是否展示在介绍上;0-否 1-是】,在sku中仍然可以调整', primary key (attr_id) ); alter table pms_attr comment '商品属性'; /*==============================================================*/ /* Table: pms_attr_attrgroup_relation */ /*==============================================================*/ create table pms_attr_attrgroup_relation ( id bigint not null auto_increment comment 'id', attr_id bigint comment '属性id', attr_group_id bigint comment '属性分组id', attr_sort int comment '属性组内排序', primary key (id) ); alter table pms_attr_attrgroup_relation comment '属性&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值