MySQL Database Design with Internationalization

Я собираюсь начать работу над приложением среднего размера, и я планирую его дизайн базы данных. В одном я не уверен. У меня будет много таблиц, которые потребуют интернационализации, например: «members_options, пол_options, language_options и т.д.»

Каждая из этих таблиц будет иметь общие поля i18n, например: "название, альтернативное_заголовок, краткое_описание, описание"

Как вы думаете, как это лучше всего сделать? Have an i18n table with the same fields for each of the tables that will need them?

or do something like:

Membership table     Gender table
----------------     --------------
id | created_at       id | created_at
1  -  22.03.2001       1 - 14.08.2002
2  -  22.03.2001       2 - 14.08.2002


General translation table
-------------------------
record_id | table_name | string_name | alternative_title| .... |id_language
 1        - membership   regular         null                     1 (english)
 1        - membership   normale         null                     2 (italian)
 1        - gender       man             null                     1(english)
 1        -gender        uomo           null                      2(italian)

This would avoid me repeating something like:

membership_translation table
-----------------------------
membership_id | name | alternative_title | id_lang
1               regular  null             1
1               normale  null             2

gender_translation table
-----------------------------
gender_id | name | alternative_title | id_lang
1           man     null                1
1           uomo    null                2

and so on, so i would probably reduce the number of db tables, but i'm not sure about performance.I'm not much of a DB designer, so please let me know.

5
задан Some name 4 January 2011 в 17:12
поделиться