【发布时间】:2018-06-25 00:28:32
【问题描述】:
我需要为后端模块设计一个数据库模型,用户可以将页面内容翻译成多种语言。将被翻译的内容是基本的单词、短语、链接名称、标题、字段名称、字段值。它们也应该分组,以便我可以按组名找到它们。例如,如果页面上有一个以不同颜色作为选项的选择字段,那么我应该能够按组名选择所有这些字段。
这就是我目前所拥有的:
lang
+----+---------+
| id | name |
+----+---------+
| 1 | english |
| 2 | german |
+----+---------+
lang_entity
+----+------------+-------------+-------+-------+
| id | module | group | name | order |
+----+------------+-------------+-------+-------+
| 1 | general | | hello | 0 |
| 2 | accounting | colorSelect | one | 1 |
| 3 | accounting | colorSelect | two | 2 |
| 4 | accounting | colorSelect | three | 3 |
+----+------------+-------------+-------+-------+
lang_entity_translation
+----+---------+----------------+-------------+
| id | lang_id | lang_entity_id | translation |
+----+---------+----------------+-------------+
| 1 | 1 | 1 | Hello |
| 2 | 2 | 1 | Guten tag |
| 3 | 1 | 2 | One |
| 4 | 2 | 2 | Ein |
| 5 | 1 | 3 | Two |
| 6 | 2 | 3 | Zwei |
| 7 | 1 | 4 | Three |
| 8 | 2 | 4 | Drei |
+----+---------+----------------+-------------+
所以 lang 表包含不同的语言。
表 lang_entity 具有可以翻译成不同语言的实体。 模块行只是在后端翻译模块中按页面模块对它们进行分组。这也使我有可能为不同的模块拥有具有相同名称的实体。 选择需要如上所述的组,并且可能需要使用多个值的其他一些地方。这也让我可以选择允许用户在一个组中添加和订购实体。
而表 lang_entity_translation 保存每种语言中每个实体的翻译。
所以我的问题是这种设计有明显的缺陷吗?你会推荐一些不同的东西吗?
还有一个额外的问题:我真的不喜欢 lang_entity 表名,您对包含所有已翻译单词/短语的表名有更好的想法吗? :)
编辑:相似,但不重复。链接的问题是关于翻译动态产品并为每种翻译类型提供单独的表格。我说的是翻译整个页面内容,包括单个表格中的组。
【问题讨论】:
-
请仅标记您正在使用的 RDBMS。
标签: php mysql database oracle postgresql