#mysql #primary-key #reindex
#mysql #первичный ключ #переиндексировать
Вопрос:
У меня есть таблицы, связанные следующим образом
Таблица: пользователи
ID_EMP | ID_AREA |
---|---|
1 | 5 |
3 | 7 |
6 | 2 |
7 | 9 |
Таблица: область
ID_AREA | Имя |
---|---|
2 | a |
5 | b |
7 | c |
9 | d |
И я бы хотел, чтобы они были такими
ID_EMP | ID_AREA |
---|---|
1 | 2 |
2 | 3 |
3 | 1 |
4 | 4 |
ID_AREA | Имя |
---|---|
1 | a |
2 | b |
3 | c |
4 | d |
За исключением того, что это продолжается для сотен записей и множества таблиц. Я хочу упорядочить первичные ключи и внешние ключи, связанные с измененным pk.
Кроме того, я использовал идентификатор (1 , 1) для создания первичных ключей.
Есть предложения?
Спасибо за вашу помощь.
Комментарии:
1. 1) mysql не имеет типа identity (1,1), он имеет auto_increment . Вы перепутали mysql с ms sql server? 2) почему вы хотите присвоить новые значения pks?
Ответ №1:
Не делайте этого.
Основная особенность первичного ключа заключается в том, что он должен быть уникальным. Он не должен быть сексуальным, красивым или следовать определенному шаблону или структуре. Если это так, то вы, вероятно, захотите предоставить его в пользовательском интерфейсе или в другом приложении в качестве веб-службы или другого.
Красивые ключи обычно идут рука об руку с «естественными ключами». Избегайте естественных ключей, поскольку они являются ключами… пока это не так. Если ключ отображается в пользовательском интерфейсе (или в другом приложении / клиенте), его значение будет иметь значение для кого-то, и этот кто-то захочет изменить его в какой-то момент. Даже SSN могут быть переработаны.
Если вам нужно предоставить «ключ», затем создайте вторичный сгенерированный уникальный столбец, который может служить «экспортированным ключом» для других клиентов.
Внутренне ваш ключ прост и, прежде всего, уникален (и уродлив, кого это волнует).