Здраствуйте. Можно ли сделать один автоинкремент на несколько таблиц? В пределах одной бд. Или создавать отдельную таблицу со ссылками на другие? Различный по типу материал раскидан по разным таблицам, а доступ к конкретному материалу идет типо www.site.ru/21/ где 21 - уникальный номер материала.
Тут нарушен один из принципов доступа к данным - либо данные ошибочно разнесены по различным таблицам. либо навигация неправильная. Самым разумным выходом при невозможности переделать по уму это -
Чем неправильна навигация? Сваливать разные данные в одну таблицу - не намного умнее чем сваливать разные данные по разным таблицам.
Насколько эти данные разные? Если вобще не схожи, то почему бы не юзать для каждой таблицы свой автоинкремент, а в URI добавлять префикс, который скажет скрипту, что за данные надо получить?
это еще один вариант ответа. не умнее не глупее. потому что так не надо. остается завести отдельную таблицу.
Какой вопрос, такой и ответ. Для нормального ответа нужно информация - со своими супер секретными тайнами, опередившими время на пару геологических периодов, разбирайтесь тогда сами.
Горбунов Олег +1. Видел я одну систему, где использовался такой подход (общий ID для сущностей разного типа). Это был Ужос Имхо, гораздо разумнее для каждого типа сущности (т.е. для каждой таблицы) использовать свой счетчик, и передавать тип сущности вместе с ID. Diver Опиши словами, что ты пытаешься реализовать, какую задачу.
да вот и есть вся задача. есть разные "типы сущностей" (не важно какие), которые хранятся в разных таблицах. почему в разных? есть сущность с тремя полями. а есть с тридцать тремя. зачем сущности с тремя полями, остальные тридцать? и передовать имя сущности в гет запросе тоже не вижу смысла. зачем если можно без него?
Если сущности абсолютно разные - для навигации по ним должно быть два параметра - id сущности, и id категории сущности.
Здравый смысл. Потому что если сразу сделать так, вопросы как у тебя не возникают. Да и десяток других вопросов тоже.
Скажи сразу что тебе так больше нравится и все. Зачем прикрываться здравым смыслом? Пока что все твои доводы на уровне первого класса средней школы. Так все-таки есть здравые причины или только личная неприязнь?
Блин... Если все равно сделаешь по своему, зачем спрашиваешь? Это опыт. Опыт разработчика биллинговых систем. Это 8 с лишним лет программинга. Это куча статей, это лекции по теории БД, которые и слушал, и сам читал. Это теория управления производством, и еще много чего. Я всего лишь советую. Если интересно - почему так - пройди так же свой путь, что бы иметь свое мнение и не считаться с чужим. И все. Тему закрываю в связи ее вырождением в бессмыслицу. Ответ Как сделать был дан, с перечислением вариантов. На вопрос почему была попытка ответить в общих чертах. Думаю, этого достаточно.