如何为 MySQL 中的实体添加本地化和版本控制?

问题描述 投票:0回答:0

这是我previous question的后续行动。

假设我有一张表

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    |       |
| teaser       | varchar(255) | YES  |     | NULL    |       |
| screen_shots | varchar(255) | YES  |     | NULL    |       |
| support      | varchar(255) | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+

现在我需要在应用程序信息中添加翻译和版本控制。据我了解,有些字段是可翻译的,有些字段是版本化的,有些字段是可翻译和版本化的,有些字段是不可翻译和非版本化的,如下表所示。

+--------------+--------------+------------+
| Field        | Translatable | Versioned  | 
+--------------+--------------+------------+
| id           | No           | No         |
| name         | No           | No         |
| developer    | No           | No         |
| description  | Yes          | No         |
| icon         | No           | Yes        |
| teaser       | Yes          | Yes        |
| screen_shots | Yes          | Yes        |
| support      | Yes          | No         |
+--------------+--------------+------------+

所以我想创建新表 app_translation、app_version 和 app_translation_version

CREATE TABLE app_translation (
  id            VARCHAR(36) PRIMARY KEY,
  language_code VARCHAR(10),
  app_id        VARCHAR(36),
  description   VARCHAR(255),
  support       VARCHAR(255),
  FOREIGN KEY (app_id) REFERENCES app(id)
);

CREATE TABLE app_version (
  id            VARCHAR(36) PRIMARY KEY,
  version       VARCHAR(10),
  app_id        VARCHAR(36),
  icon          VARCHAR(255),
  FOREIGN KEY (app_id) REFERENCES app(id)
);

CREATE TABLE app_version_translation (
  id            VARCHAR(36) PRIMARY KEY,
  version       VARCHAR(10),
  language_code VARCHAR(10),
  app_id        VARCHAR(36),
  teaser        VARCHAR(255),
  screen_shots  VARCHAR(255),
  FOREIGN KEY (app_id) REFERENCES app(id)
);

现在我需要连接所有这四个表来检索应用信息的单个实例……
是否有意义 ?这个新的检索会比只使用 select 的旧检索慢吗?你会建议改变这个模式吗?

mysql sql database-schema
© www.soinside.com 2019 - 2024. All rights reserved.