Qwerty
Новичок
Временные идентификаторы (и записи) в таблице БД
Это не тема про поиск ошибки, это поиск пути решения задачи (доводить до кода не потребуется, только алгоритм).
К сожалению (или к счастью) одна подобная, не моя, тема была закрыта из-за опасной формулировки и не менее опасного для широкой публики обсуждения, я же постаряюсь здесь описать задачу максимально политкорректно.
Предполагается, что работать мы будем с базой данных, поэтому для темы и выбран этот раздел. Кроме того, в нем же была расположена злополучная закрытая тема. Однако предложения без использования БД приветствуются.
Итак, достаточно для вступления.
При решении некоторой задачи (полностью описывать которую долго и ненужно) возникла необходимость выдавать пользователям некоторый числовой код для выполнения некоторых действий. Этот код должен быть уникальным в течение своего времени жизни (несколько часов) и быть максимально коротким. Кроме этого кода в записи, разумеется, есть еще поля, но сейчас суть не в этом.
Почему выбрана именно временная уникальность? Потому что кодов выдается очень много, требуется генерировать новый код при каждой загрузке страницы. Подавляющее большинство из них даже никак не используется и становится ненужным по истечении своего времени жизни (удаляются).
Таким образом, если в виде этого кода будет использоваться идентификатор auto_increment primary key, то его значение очень быстро перевалит, скажем, за 1000000 и будет увеличиваться в течение всего времени жизни сайта, тогда как реально в таблице будет существовать одновременно только около 1000 записей. Помня, что выдаваемый пользователю код должен быть максимально коротким, лучше бы выдать 3-значное число для указания одной из этих 1000 реально существующих записей, а не 6-7-значное, равное primary key, для указания номера записи за всё время существования сайта.
Так как вмешиваться в работу auto_increment и использовать уже использовавшиеся идентификаторы для нас табу (из-за этого и была закрыта вышеупомянутая тема), придется, вероятно, для хранения кода ввести дополнительное поле code (хотя мой варинт был с вмешательством в auto_increment, приводить не буду, опять попаду в немилось
).
Так вот. Интересуют предложения по реализации.
Если что-то осталось неясным, я напишу подробнее.
На самом деле сложно было всё это сформулировать. Возможно, получилось не совсем ясно...
Это не тема про поиск ошибки, это поиск пути решения задачи (доводить до кода не потребуется, только алгоритм).
К сожалению (или к счастью) одна подобная, не моя, тема была закрыта из-за опасной формулировки и не менее опасного для широкой публики обсуждения, я же постаряюсь здесь описать задачу максимально политкорректно.

Предполагается, что работать мы будем с базой данных, поэтому для темы и выбран этот раздел. Кроме того, в нем же была расположена злополучная закрытая тема. Однако предложения без использования БД приветствуются.
Итак, достаточно для вступления.
При решении некоторой задачи (полностью описывать которую долго и ненужно) возникла необходимость выдавать пользователям некоторый числовой код для выполнения некоторых действий. Этот код должен быть уникальным в течение своего времени жизни (несколько часов) и быть максимально коротким. Кроме этого кода в записи, разумеется, есть еще поля, но сейчас суть не в этом.
Почему выбрана именно временная уникальность? Потому что кодов выдается очень много, требуется генерировать новый код при каждой загрузке страницы. Подавляющее большинство из них даже никак не используется и становится ненужным по истечении своего времени жизни (удаляются).
Таким образом, если в виде этого кода будет использоваться идентификатор auto_increment primary key, то его значение очень быстро перевалит, скажем, за 1000000 и будет увеличиваться в течение всего времени жизни сайта, тогда как реально в таблице будет существовать одновременно только около 1000 записей. Помня, что выдаваемый пользователю код должен быть максимально коротким, лучше бы выдать 3-значное число для указания одной из этих 1000 реально существующих записей, а не 6-7-значное, равное primary key, для указания номера записи за всё время существования сайта.
Так как вмешиваться в работу auto_increment и использовать уже использовавшиеся идентификаторы для нас табу (из-за этого и была закрыта вышеупомянутая тема), придется, вероятно, для хранения кода ввести дополнительное поле code (хотя мой варинт был с вмешательством в auto_increment, приводить не буду, опять попаду в немилось

Так вот. Интересуют предложения по реализации.
Если что-то осталось неясным, я напишу подробнее.
На самом деле сложно было всё это сформулировать. Возможно, получилось не совсем ясно...