Кто-то недавно предложил мне удалить таблицу автоматического увеличения, используемую исключительно для хранения идентификаторов. Я еще не пошел с этим, я просто исследую, действительно ли это лучшее решение, чем то, что у меня сейчас . Это оставило бы меня с таким столом:
create table tag_translations (
tag_id int not null,
language_id int not null,
tag_name varchar(255),
primary key (tag_id, language_id)
);
Я собираюсь иметь дубликаты для tag_id, хранящие переводы тега на другие языки.
При добавлении новых тегов мне нужно отказаться от автоматического увеличения тега_id и вместо этого назначить новые идентификаторы вручную. Если это не просто перевод существующего тега, идентификатор должен быть уникальным для новой партии переведенных вставок.
Может ли кто-нибудь объяснить мне простым языком, как это обычно делается? Я думал об этом, но это, кажется, не чище, чем мой предыдущий подход, если у меня есть правильное мышление. Вот то, что я предполагаю, что процесс:
- Выберите tag_id из tag_translations
- Выберите наибольшее число в наборе результатов + 1
- Создать новый запрос (для вставки)
- Определите некоторую дополнительную стратегию для обеспечения того, чтобы идентификаторы для новых записей tag_id никогда не дублировались, когда теги создаются в более или менее одинаковую микросекунду
Если это процесс, я думаю, что мне лучше придерживаться моей существующей схемы наличия дополнительной таблицы для автоматического увеличения идентификаторов. Мне все еще нужно выполнить дополнительный запрос, чтобы сначала проверить уникальный идентификатор (сегодня я торгую по одному соединению в будущем для вставки). Если я думаю, что головной болью сохранения моих идентификаторов, когда они должны быть уникальными, я могу отказаться от этого подхода и придерживаться того, что у меня есть. Мой мыслительный звук?