Как разработать теги изображений / базу данных тегов с поддержкой нескольких языков? - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть таблица базы данных, в которой хранятся теги изображений, структура которых выглядит следующим образом:

table:
- tags
column:
- id (tag primary key)
- title (tag text)
- description (tag description)

Мне нужно перевести заголовок и описание на разные языки. Один из подходов состоит в том, чтобы иметь таблицу, которая содержит следующие языки:

table:
- languages
column:
- lang_code (language unique code like 'en', 'ar')
- title (language text like 'English', 'Arabic')

и поле lang_code затем добавляется в таблицу tags:

table:
- tags
column:
- id (tag primary key)
- lang_code (foreign key referencing the language table)
- title (tag text)
- description (tag description)

При таком дизайне невозможно связать переводы тегов вместе. То есть невозможно выбрать все переводы для определенного тега , поскольку каждая запись тега имеет свой собственный id, верно?

Чтобы преодолеть эту проблему, я бы использовал метод проектирования базы данных, который описан в ответе Stackoverflow, опубликованном ЗДЕСЬ , и мои таблицы будут:

table:
- tags
column:
- id (tag primary key)


table:
- tags_translations
column:
- tag_id (foreign key referencing the tags table)
- lang_code (foreign key referencing the language table)
- title (tag text)
- description (tag description)

При таком подходе разные переводы тегов будут ссылаться на один и тот же идентификатор тега. Используя этот идентификатор, все переводы для определенного тега могут быть выбраны с помощью команд SELECT и JOIN.

Мой последний подход заключается в том, что таблица tags имеет только один столбец, который является id как поле, не зависящее от языка. Будет ли это хорошим дизайном базы данных для случая перевода тега? Каковы другие подходы, которые удовлетворяют этой потребности?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...