На це вже було багато хороших відповідей, що значною мірою зводиться до "Залежно від обставини", і я нічого не можу додати до них.
Однак, на мою думку, потрібно згадати одне, що ніколи не слід повторно використовувати первинні ключі, створені послідовністю або системою AUTO_INCREMENT.
Коли ви видалите елемент, якому така система присвоїв первинний ключ, у стовпці первинного ключа залишаться прогалини, залишені видаленими даними. Існує велика спокуса переназначити ці прогалини новим елементам, коли вони додаються, або ще гірше, перетасувати наявні дані, щоб надати йому новий ідентифікатор для усунення прогалин, але це призведе до виникнення проблем, які ви могли б ніколи не доведеться мати справу, якщо ви просто залишили ключі в спокої.
Скажімо, ви зберігаєте базу даних принтерів для керування упорядкуванням витратних матеріалів. Принтер 13, старий лазерний принтер, виходить з ладу після економічного ремонту, щоб ви його викинули. Тим часом з незв'язаної причини хтось замовляє новий термопринтер для того, щоб робити друк штрих-коду на складі, і цей принтер приходить до заміни принтера 13. Адміністратор записує цей новий принтер у базу даних, оскільки 13 зараз безкоштовні і ви переробляєте ідентифікатори, новому тепловому принтеру виділяється 13 як його ідентифікатор.
Тепер хтось каже вам, що принтер 13 майже не має чорнила. Ви пам’ятаєте, що принтер 13 - це лазерний принтер, тому ви не турбуєтесь шукати його в базі даних, і ви замовляєте картридж з тонером. Щоб замовити термічну чорнильну упаковку, вам потрібно було лише те, що принтер 13 вже не є лазерним принтером. Коли картридж з тонером надійде, ви не можете його використовувати, оскільки це неправильна заправка чорнила для принтера, ви не можете роздрукувати більше штрих-кодів і не можете відправити замовлення, які очікують на їх відправлення.
Ще гірше, що станеться, якщо ви видалите принтер 13 і перетасуйте всі принтери, що йдуть після нього, щоб заповнити проміжок? Принтер 14 (деяка старенька крапка матриці) стає принтером 13, принтер 15 стає принтером 14 тощо.
На всіх принтерах є етикетки, щоб вони могли бути перехресними посиланнями на базу даних, але тепер усі етикетки застаріли. Вам доведеться об'їхати, знайти кожен принтер у бізнесі (який може працювати в сотні!) Та відновити їх. Це навряд чи ефективне використання часу. І це також процес, схильний до помилок, і що станеться, якщо його просто ніколи не зробити? Хтось зателефонував, щоб сказати, що принтер 14 зламався і потребує термінового виправлення, тому ви шукаєте його і виявляєте, що принтер 14 - це струменевий принтер у розділі Прийом. Тільки тому, що ви перетасували ідентифікатори навколо, насправді точковий матричний принтер потребує термінового виправлення. Хлопець, який зателефонував у цій проблемі, залишається повішеним, в той час як у ресепшн є хлопець із технічної підтримки, якого вона ніколи не закликала звернутися, щоб виправити принтер, який не зламався.
Ви повинні думати про ідентифікатори, присвоєні системою автоматичного збільшення, як постійні, вони незмінні і не можуть бути використані повторно, навіть якщо те, на що йдеться, припиняє своє існування. Деякі люди стверджують, що їм не хочеться турбуватися про втрату ідентифікаторів, але навіть при наявності 32-бітових систем та підписаних ідентифікаторів є ще 2 мільярди або близько ідентифікаторів. Якщо ви можете зробити стовпчик ідентифікатора без підпису, то це подвоюється до 4 мільярдів, а в 64-бітних системах кількість доступних ідентифікаторів буквально перевищує кількість зірок на небі. Ви не збираєтеся закінчувати ідентифікатори.