本系统能通过配置文件(mysql.yml),切换租户模式，通过修改该配置后，业务代码基本不用做任何改动，即可同时满足4种模式。
（注意：业务代码是指，基于本系统新增的业务功能代码，比如，本系统的业务代码：权限服务、消息、文件、订单服务。）
但是在数据源配置(com.github.zuihou.authority.config.datasource包下面的配置)和租户模块(zuihou-tenant-xxx)相关代码做了一些手脚，使得业务代码能完美兼容4种模式。
同时数据库方面需要根据自己的情况做一些调整。
```
zuihou:
  database:
    multiTenantType:  
```
有4个选项：
1.NONE：非租户模式
2.COLUMN：字段模式
3.SCHEMA：独立schema模式
4.DATASOURCE：独立数据源模式

# 几个sql脚本的区别：
1. zuihou_zipkin.sql: zipkin需要使用的数据库，无论使用那种模式，请独立创建 zuihou_zipkin 数据库，并导入 zuihou_zipkin.sql 
2. zuihou_defaults.sql：默认库，用于存放全局表，如租户信息、定时信息等
3. zuihou_base_0000.sql：租户基础库，用于存放内置租户0000 的基础表。
4. zuihou_extend_0000.sql：租户扩展库，用于存放内置租户0000 的扩展表（业务表）。
5. zuihou_column.sql：租户库，用于存放所有租户的业务表。
6. zuihou_base_0000.sql 中的表 + zuihou_extend_0000.sql 中的表 = zuihou_column.sql 中的表
7. zuihou_base_0000.sql + zuihou_extend_0000.sql 和 zuihou_column.sql 的区别在于否则多了tenant_code字段


# 下面介绍4种模式如何创建数据库：(zuihou_zipkin.sql 4种模式都要单独导入 zuihou_zipin 库！)
## NONE
1. 创建数据库： zuihou_none
2. 向 zuihou_none 库导入 zuihou_defaults.sql 
3. 向 zuihou_none 库导入 zuihou_base_0000.sql 
3. 向 zuihou_none 库导入 zuihou_extend_0000.sql 

## COLUMN
1. 创建数据库： zuihou_column_all
2. 向 zuihou_column 库导入 zuihou_defaults.sql 
3. 向 zuihou_column 库导入 zuihou_column.sql 

## SCHEMA
1. 创建数据库： zuihou_defaults 和 zuihou_base_0000
2. 向 zuihou_defaults 库导入 zuihou_defaults.sql 
3. 向 zuihou_base_0000 库导入 zuihou_base_0000.sql 
4. 向 zuihou_extend_0000 库导入 zuihou_extend_0000.sql 

## DATASOURCE
1. 创建数据库： zuihou_defaults 和 zuihou_base_0000
2. 向 zuihou_defaults 库导入 zuihou_defaults.sql 
3. 向 zuihou_base_0000 库导入 zuihou_base_0000.sql 
4. 向 zuihou_extend_0000 库导入 zuihou_extend_0000.sql 


# 题外话：
问： `docs/sql/*.sql` 和 `zuihou-tenant/zuihou-tenant-server/src/main/resources/sqls/*.sql` 有什么区别？
答：
`docs/sql/*.sql` 存放的是系统内置的数据库脚本，脚本里面出除了`表结构`和一些`必要数据`，还维护了一些丰富的`业务数据`，主要用于启动项目，
作者会实时的将自己环境的脚本和数据导出到这里。

`zuihou-tenant/zuihou-tenant-server/sqls/*.sql` 里面的脚本用于项目启动后，配置 `SCHEMA` 模式，新建租户时使用。 
- `zuihou_base.sql` 存放的是新租户基础库的`表结构`
- `zuihou_base_data.sql` 存放的是新租户基础库的`必要数据`， 没有`docs/sql/*.sql`里面的`业务数据`！！！
- `zuihou_extend.sql` 存放的是新租户扩展库的`表结构`
- `zuihou_extend_data.sql` 存放的是新租户扩展库的`必要数据`， 没有`docs/sql/*.sql`里面的`业务数据`！！！
- 脚本里面的`SELECT 1`用于防止代码执行空脚本时报错，就随便放入一条无关紧要的sql （可以改成其他的）


开源版本请忽略下面的这条：
`zuihou-authority-server`、`zuihou-gateway-server`、`zuihou-msgs-server` 等任意一个服务resource/src/main/resources/sqls/*.sql下的脚本文件用于`DATASOURCE`模式，新建租户时使用。
SCEHMA模式是在tenant服务一次性将整个服务脚本初始化，DATASOURCE模式是每个服务、每个租户独立数据源，所以得分散在各自的服务初始化自己服务的脚本和数据！


