You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为MySQL中的app实体添加本地化与版本管理功能

应用商店应用本地化与版本管理的数据库设计方案

原表结构

原app表存储应用基础信息,但无法满足多语言和多版本需求,其结构如下:

+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| id           | varchar(36)  | NO   | PRI | NULL    |       |
| name         | varchar(255) | YES  |     | NULL    |       |
| developer    | varchar(255) | YES  |     | NULL    |       |
| description  | varchar(255) | YES  |     | NULL    |       |
| icon         | varchar(255) | YES  |     | NULL    |       |
| support      | varchar(255) | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+

需求梳理

需要新增两类核心功能,各字段的属性要求如下:

+--------------+--------------+------------+
| Field        | Translatable | Versioned  | 
+--------------+--------------+------------+
| id           | NO           | NO         |
| name         | NO           | NO         |
| developer    | NO           | NO         |
| description  | YES          | YES        |
| icon         | NO           | YES        |
| support      | YES          | NO         |
+--------------+--------------+------------+

同时需要实现两类CRUD API:

  • 基于id和language_code的应用本地化信息增删改查
  • 基于id和version的应用版本信息增删改查

数据库表拆分设计

将全局不变的字段保留在主表,把需要本地化、版本化的字段拆分到独立子表,实现数据解耦:

1. 应用主表 app

存储所有版本、所有语言下都一致的核心信息:

+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| id           | varchar(36)  | NO   | PRI | NULL    |       |
| name         | varchar(255) | YES  |     | NULL    |       |
| developer    | varchar(255) | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+

2. 应用本地化表 app_localization

存储应用级的多语言信息(仅support字段,与版本无关):

+----------------+--------------+------+-----+---------+-------+
| Field          | Type         | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| app_id         | varchar(36)  | NO   | PRI | NULL    |       |
| language_code  | varchar(10)  | NO   | PRI | NULL    |       | -- 如'en'、'es'
| support        | varchar(255) | YES  |     | NULL    |       |
+----------------+--------------+------+-----+---------+-------+
  • 联合主键(app_id, language_code)确保每个应用的每种语言只有一条记录

3. 应用版本表 app_version

存储每个版本的非本地化信息(仅icon字段,与语言无关):

+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| app_id       | varchar(36)  | NO   | PRI | NULL    |       |
| version      | varchar(20)  | NO   | PRI | NULL    |       | -- 如'1.0'、'2.0'
| icon         | varchar(255) | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+
  • 联合主键(app_id, version)确保每个应用的每个版本只有一条记录

4. 应用版本本地化表 app_version_localization

存储每个版本的多语言信息(仅description字段,同时关联版本和语言):

+----------------+--------------+------+-----+---------+-------+
| Field          | Type         | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| app_id         | varchar(36)  | NO   | PRI | NULL    |       |
| version        | varchar(20)  | NO   | PRI | NULL    |       |
| language_code  | varchar(10)  | NO   | PRI | NULL    |       |
| description    | varchar(255) | YES  |     | NULL    |       |
+----------------+--------------+------+-----+---------+-------+
  • 联合主键(app_id, version, language_code)确保每个应用的每个版本的每种语言只有一条记录

CRUD API实现思路

本地化信息CRUD

针对app_localization表操作,以app_id和language_code为查询/操作条件:

  • 创建:插入新的app_id + language_code组合记录
  • 查询:根据app_id和language_code获取对应support内容,或按app_id查询所有语言的support
  • 更新:根据app_id和language_code更新support字段
  • 删除:根据app_id和language_code删除对应记录

版本信息CRUD

需联动app_version和app_version_localization表,以app_id和version为核心条件:

  • 创建:先插入app_version的版本基础记录,再插入对应版本各语言的app_version_localization记录
  • 查询:根据app_id和version关联查询版本的icon及各语言的description
  • 更新:分别更新app_version的icon字段,以及app_version_localization对应语言的description字段
  • 删除:先删除app_version_localization中对应版本的所有记录,再删除app_version中的版本记录

示例数据说明

以某应用拥有1.0、2.0版本,需存储英文(en)、西班牙文(es)信息为例:

  1. app表:仅存一条记录,包含id、name、developer
  2. app_localization表:两条记录,分别为(app_id, 'en', 英文support内容)、(app_id, 'es', 西班牙文support内容)
  3. app_version表:两条记录,分别为(app_id, '1.0', 1.0版本icon地址)、(app_id, '2.0', 2.0版本icon地址)
  4. app_version_localization表:四条记录,分别为:
    • (app_id, '1.0', 'en', 1.0版本英文description)
    • (app_id, '1.0', 'es', 1.0版本西班牙文description)
    • (app_id, '2.0', 'en', 2.0版本英文description)
    • (app_id, '2.0', 'es', 2.0版本西班牙文description)

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:47:53