dr.MIG писал(а):не затянется ли выборка подчиненных элементов — ведь для этого придется использовать в запросе Like для 192 тысяч элементов, содержащихся в базе.
dr.MIG писал(а):И не оптимальнее ли будет заменить это поле двумя — id (идентификатор элемента), pid (указатель на id родительского элемента)?
alibek писал(а):Запрос Like для строк типа 'abc%' не сильно сказывается на производительности (при наличии индексов и с учетом того, что работа со строками медленнее работы с числами).
Замена на дерево вида ID-ParentID часть вопросов снимет, но добавит другие. Скажем, в таком дереве отобрать ветку со всеми потомками в одном запросе будет не совсем тривиальной задачей.
Так что выделяй задачи, в которых тебе нужны эти данные и сам определяй, какая схема для тебя будет оптимальной.
C появлением CTE эта задача стала почти тривиальной, правда нужен 2008й MSSQL. А при использовании Nested Sets — чуть более, чем полностью, и база может быть любой.Замена на дерево вида ID-ParentID часть вопросов снимет, но добавит другие. Скажем, в таком дереве отобрать ветку со всеми потомками в одном запросе будет не совсем тривиальной задачей.
Ramzes писал(а):Поддерживаю, лучше как минимум вынести все кода в отдельные поля, как максимум в отдельные таблицы (и привести БД к 3-ей нормальной форме)
Antonariy писал(а):C появлением CTE эта задача стала почти тривиальной, правда нужен 2008й MSSQL.
MSSQL2008помимо MSSQL2000
и запретом ввода данных, которых нет в базе, наиболее оптимальный вариант.
Proxy писал(а):Ещё вопрос на засыпку...
dr.MIG писал(а):Можно это как-то побороть?
Ну, я предложил вариант максимально защищенный от ошибки. А вообще, везде, где пользователи вводят данные своими кривыми руками, ошибки будут, это аксиома.Proxy писал(а):и запретом ввода данных, которых нет в базе, наиболее оптимальный вариант.
Ну-ну... А где гарантии, что с момента появления базы в неком городе Урюпинске улица Копылёва не была переименована в Путинную и т.п. Это нерациональная загрузка технической поддержки проекта. Или где гарантии, что улица Блуцевич не была по ошибке написана как "ул. Блуцевича"? В моём городе такая улица в картах написана в первом варианте (т.к. Блуцевич таки девушка), во всяческих департаментах числится как ул. Блуцевича и т.д, а подписи на домах 50 на 50.
Сделать жирнющую надпись, предписывающую вводить идентификатор школы начиная с цифр, типа "13, МОУ СОШ". И обеспечить это технически. Плюс T9 и изложенное выше.dr.MIG писал(а):Ведь как показала практика одну и ту же школу назовут СОШ № 13, МОУ СОШ № 13, средняя общеобразовательная школа 13 и т.п. Можно это как-то побороть?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39