数据库与数据表设计之设计概要
in JavaDevelop with 0 comment

数据库与数据表设计之设计概要

in JavaDevelop with 0 comment

数据库清单

本项目会存在多个微服务项目:

  1. 后台管理员管理
  2. 用户管理
  3. 商品管理
  4. 订单管理

各微服务将使用各自的数据库, 这些数据库分别是:

  1. better_mall_admin: Administrator Management System(后台管理员管理系统)
  2. better_mall_user:User Management System(用户管理系统)
  3. better_mall_goods:Goods Management System(商品管理系统)
  4. better_mall_order:Order Management System(订单管理系统)
  5. better_mall_recommend:(首页配置管理系统)
  6. better_mall_cart:(购物车管理系统)

设计思路分析

创建数据库时需要指定字符编码吗?

不需要, 建议在创建数据表时指定字符编码.

关于字符编码, 可以在配置MySQL服务端, 创建数据库时, 创建数据表时指定, 甚至在创建数据表的过程中为每个字段指定字符编码.

关于在各处指定的字符编码的优先级: 字段 > 数据表 > 数据库 > MySQL配置, 例如, 当数据库与数据表指定了不同的字符编码时, 以数据表的字符编码为准.

创建数据库时需要指定字符编码吗?

通常, 一张表中的各字段的字符编码都是相同的, 所以, 一般不会在字段上指定字符编码,考虑到数据表及数据可能存在导入导出的需求, 大多数导入导出都是以表作为基本单位, 不是所有操作都以数据库为单位的, 则在数据表上指定字符编码是更合适的做法.

为什么要分为多个数据库?

  1. 在微服务架构中, 各微服务都是可以独立部署, 运行的, 类似多个完全不相关的项目(实则存在一定关联, 甚至某些业务需要服务间调用才可以实现,但并不是所有业务都是这样), 既然项目不相关, 数据库不同也是合情合理的了;
  2. 真实的电商类项目的数据量会非常非常大, 如果全部集中在同一个数据库中, 很容易导致磁盘饱和, 则可能需要频繁的进行分库, 迁移数据等操作, 数据库的维护成本较高, 如果将数据库分开, 可以使得维护相对简单一些, 例如后台管理员系统就几乎不用担心数据量太大导致的磁盘饱和问题.
  3. 分库更利于服务器资源分配, 可以把更优质的服务器分配给读写频率高的服务器, 甚至在一定极端情况下, 可以关停后台管理员系统.