Как выбрать ключ?

Рейтинг: 0Ответов: 1Опубликовано: 16.01.2015

Есть таблица, в которой по 3 записи на разных языках:

id  id_user текст язык
1   1       абс   RU
1   2       abs   EN
2   2       здр   RU
2   3       zdr   EN

Как мне поступить с ключом?
Уникальным или первичным не могу сделать из-за дубликата, а индекс не позволяет редактировать и изменять таблицу в PHPMyAdmin.

Добавить ещё одно уникальное поле? Это будет лишний столбец, но если без этого никак...

Ответы

▲ 2Принят

Создайте составной первичный ключ.

ALTER TABLE `i18n_articles` ADD PRIMARY KEY (`article_id`, `lang`);

...добавить ещё одно уникальное поле?

Это называется суррогатным ключом. Он здесь ни к чему.

При таком сценарии автоинкремент, естественно, не нужен.

Собственно, схема:

         articles                           i18n_articles
+----+-------------------+   +------------+------+---------+---------+
| id |         url       |   | article_id | lang | content | user_id |
+----+-------------------+   +------------+------+---------+---------+
|  1 |  /football/1.html |   |      1     |  ru  |   абс   |    1    |
|  2 |  /hockey/1.html   |   |      1     |  en  |   abs   |    2    |
+----+-------------------+   |      2     |  ru  |   здр   |    2    |
                             |      2     |  en  |   zdr   |    3    |
                             +------------+------+---------+---------+