Преимущества и недостатки базы данных автоматического генератора номеров для каждой строки по сравнению с ручной нумерацией для каждой строки - PullRequest
0 голосов
/ 04 ноября 2018

Представьте себе две таблицы, которые реализованы следующим образом:

  1. Первые номера строк таблицы, созданные системным администратором базы данных автоматически.
  2. Номера строк второй таблицы создаются вручную программистом в последовательном порядке.

Главный вопрос: каковы преимущества и недостатки этих двух подходов?

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Одно явное преимущество того, что база данных управляет автоматической нумерацией по сравнению с их созданием вручную, заключается в том, что реализация базы данных является поточно-ориентированной - и их создание вручную обычно (в 99,9% случаев) - нет (это трудно сделать правильно) .

С другой стороны, реализация базы данных не гарантирует последовательную нумерацию - в числах могут быть пробелы.

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

Обратите внимание, что при использовании суррогатного ключа лучше всего также обеспечить уникальность естественного ключа - в противном случае вы можете получить строки, в которых все данные дублируются, за исключением суррогатного ключа.

0 голосов
/ 04 ноября 2018

Когда база данных автоматически создает номера, у вас будет меньше работы. Подумайте о системе регистрации, у вас есть поля, такие как имя, адрес электронной почты, пароль и так далее:

1.) Число генерируется базой данных, поэтому вы можете просто вставить данные в таблицу.

2.) Если это не так, вы должны получить последний номер, поэтому перед вставкой в ​​вас нужно получить последний идентификатор, так что вместо вставки в вас есть выбор + вставка в.

Другая причина в том, что произошло, когда вы удалили строку в своей таблице? Возможно, на форуме вы хотите удалить учетную запись, но не все его сообщения, поэтому вы можете работать с обходным путем, и когда сообщение не имеет user_id, вы знаете, что это / было удалено или заблокировано - если вы даете новый пользователь номер от удаленного пользователя вы попадете в беду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...