Під час одного з останніх уроків в університеті (я студент), викладач попросив нас розробити базу даних (якщо це має значення MySQL Server) та крихітний клієнтський додаток, який би використовував базу даних як джерело даних.
Одна з вимог полягала в тому, що стовпець ідентичності (який є ПК у кожній таблиці) повинен бути послідовним, оскільки це хороша практика (відповідно до слів лектора). Тобто, коли рядок таблиці видалено, PK необхідно повторно використовувати в наступних вставках. Я маю середні знання в RDBMS, ПК та стовпцях ідентичності. Як я розумію, цей стовпець ідентичності - це лише спосіб дозволити БД автоматично генерувати ПК при вставлянні рядків і більше нічого. І значення стовпця ідентичності жодним чином не має стосуватися атрибутів рядків (доки це не є природним ключем).
Ця вимога (строго послідовний стовпець ідентичності) була для мене підозрілою. Я намагався запитати викладача, що не так, якщо ідентичність не є послідовною (з прогалинами, викликаними видаленням), але отримала дуже абстрактну відповідь на кшталт "це зручно для користувачів і корисно для адміністраторів БД, які підтримують базу даних". Конкретних прикладів немає. Аргумент "зручний для користувачів" звучить нерозумно, оскільки він не має жодного значення в діловій сфері.
Тому мені цікаво, чи ці причини справжні? Я можу думати лише про один випадок, коли потрібна повторна повторна передача стовпця особи - коли простір ідентичності вичерпано. Але це більше питання дизайну, коли тип стовпця ідентичності вибрано неправильно, скажімо, простий int
замість bigint
або uniqueidentifier
коли таблиця містить мільярди рядків. Припустимо, стовпець ідентичності - це кластерний індекс: чи можуть пробіли в стовпці ідентичності впливати на ефективність індексу? Можливо, є й інші реальні причини автоматичного повторного нанесення стовпця особи після кожного видалення, про який я не знаю?
Спасибі заздалегідь!