Есть галерея. В нее пользователи могут заливать фото. Залитый файл переименовывается - ему присваивается номер по порядку, просто цифра: 1, 2, 3 ... 20 ... 45. В таблицу photos эта цифра записывается в столбец name. Скажите, нужен ли в таблице дополнительный столбец id_photo auto_increment с первичным ключом? Или оставить первичный ключ в столбце name? Прочитал в учебнике, что даже если в таблице есть естественный первичный ключ, то все равно лучше использовать суррогатный ключ, чтобы абстрагировать первичный ключ от реальных данных. И теперь я в сомнениях. Хотелось бы услышать мнение более опытных коллег по этому поводу.
э мое такое мнение, что этот номер у тебя и должен был быть изначально этим самым автоинкрементным. ты его, что руками накручиваешь? а одновременно две фотки с одним именем не боишься заиметь?
имхо не нужен тут никакой суррогатный ключ. Есть id primary auto_increment от него и плясать. пусть он и будет именем если так хочется. Используй его в качестве name.
Номер скрипт задает. Фото загружается во временную папку, скрипт считывает имена всех фото в папке (а они из цифр), выделяет максимальный номер, добавляет единицу и после проверки типа и расширения копирует файл из временной папки к остальным фото и присваивает ему новый вычисленный номер. Вот как-то так... Повторов не будет - все номера уникальны и идут по порядку.
я вобще по-тупому генерил 64 чтоли символа имя рандомно. и хер забить на id, все равно не повторится никогда.
igordata Тоже по тупому генерил, только не 64, а 20 символов. Хватало) Но по id можно с другими таблицами связать))))
а id уже как раз автоикр в строке в бд. id, file name, original file name, mime type, description и др
Хм... А точно не повторится? А вдруг )) Я генерил рандомную строку, проверял, есть ли такая, если есть - генерил новую и снова проверял (в цикле, и так до тех пор пока не сгенерируется строка, которой ещё нет), ну а если нет такой - возвращал её.
(о_О) повториться может конечно... если брать от души то 36 в 64 степени это БОЛЬШОЕ число... оно даже в 20й не малое.
Коллеги, как думаете имя новому файлу - номер по порядку - задавать скриптом как я в 5-м посте расписал или создавать запись в таблице photos, а потом присваивать загруженному фото id этой записи? Что лучше?