|
|
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Народ, скажите что думаете!!! Есть таблица, допустим "ОБЪЯВЛЕНИЯ", одно объявление может принадлежать разным городам и странам. Т.е. связь с "LOCATIONS" МНОГОЕ КО МНОГИМ. Объявление может принадлежать как Стране, так и Области или Городу и тп. Огранизация дерева "LOCATIONS" использовал принцип DBTree. А теперь, для того чтоб выбрать все объявления к примеру России, нужно выбрать всех детей, а затем либо сабселектом либо джойном выбрать объявления (+ всякие фильтры + сортировка). В программе %50 всех запросов будет такого рода. Получается при выборке всегда нужно использовать 3 таблицы. А вот собственно вопрос. Может использовать схему: ID_LOCATION имеет номер до 1 000 000 000 000 (INTEGER) 000 -- районы города 000 000 -- города 000 000 000 -- области 000 000 000 000 -- страны Например Россия имеет код 1 000 000 000. Таким образом мы исключаем выборку детей, т.к. знаем что дети России это число между 1 000 000 000 и 2 000 000 000. Если Москва имеет 1 000 001 000 то дети будут числом между 1 000 002 000. Итак имея число, оно является левой границей поиска, мы должны вычислить правую границу, что не так сложно, и получим диапазон всех детей. Кто что скажет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 15:58 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
может диапазона для детей-то и не хватить... [hint]одно дело - Москва, другое дело - Урюпинск[/hint] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 18:11 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
egorychможет диапазона для детей-то и не хватить... одно дело - Москва, другое дело - Урюпинск Вы хотите сказать что Урюпинск может иметь больше единиц детей чем Москва? Получается что на каждую сущность для детей отводится по 1000 ячеек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 18:24 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
вообще я хотел сказать обратное (про москву и урюпинск если), но суть вы уловили правильно. что случится, если потребуется создать 1001-го ребёнка? ну и вы уверены, что в России всего 1000 городов... и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 18:36 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
egorychвообще я хотел сказать обратное (про москву и урюпинск если), но суть вы уловили правильно. что случится, если потребуется создать 1001-го ребёнка? ну и вы уверены, что в России всего 1000 городов... и т.д. Согласен. Что ещё можете сказать на счёт такого подхода? Стоит ли так заморачиваться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 18:58 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
anydasaegorychвообще я хотел сказать обратное (про москву и урюпинск если), но суть вы уловили правильно. что случится, если потребуется создать 1001-го ребёнка? ну и вы уверены, что в России всего 1000 городов... и т.д. Согласен. Что ещё можете сказать на счёт такого подхода? Стоит ли так заморачиваться? Хотя не согласен, в Стране есть возможность хранить 1 000 000 городов или 1 000 областей у каждой из которых по 1 000 городов. Вряд ли где то не хватит разряда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 19:01 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
anydasa[quot egorych]Что ещё можете сказать на счёт такого подхода? Стоит ли так заморачиваться? тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 19:44 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
proposed amendmentanydasa[quot egorych]Что ещё можете сказать на счёт такого подхода? Стоит ли так заморачиваться? тынц proposed amendment, спасибо за ссылку, не догадался что это называется "интервальное дерево". как думаешь, в данной задаче этот метод подойдёт выгоден? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 20:11 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
открой КЛАДР и посмотри ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 20:24 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
proposed amendmentоткрой КЛАДР и посмотриТо ж я думаю, что то это мне напоминает. Поубивал бы авторов КЛАДРА... :) Шучу, конечно. Но для современных СУБД я бы выбрал обычные деревья. авторИтак имея число, оно является левой границей поиска, мы должны вычислить правую границу, что не так сложно, и получим диапазон всех детей. Кто что скажет?Скажу. Проблема будет такая же, как и в КЛАДРЕ. Для краткости: оптимизатор не может использовать индексы для предикатов типа LIKE '%001%'. Увы. В КЛАДРЕ коды в виде строки, а Вы хотите использовать числа, но сути не меняет. ИМХО, Вы слишком "заряжены" на один тип запросов, забывая об остальных. Конкретный пример. Попробуйте составить запрос, выборки всех объявлений, сделанных в городах областного подчинения. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 21:29 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Senya_LКонкретный пример. Попробуйте составить запрос, выборки всех объявлений, сделанных в городах областного подчинения. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 21:58 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
anydasaSenya_LКонкретный пример. Попробуйте составить запрос, выборки всех объявлений, сделанных в городах областного подчинения. ;)В смысле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 22:15 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Senya_L Проблема будет такая же, как и в КЛАДРЕ. Для краткости: оптимизатор не может использовать индексы для предикатов типа LIKE '%001%'. Увы. В КЛАДРЕ коды в виде строки, а Вы хотите использовать числа, но сути не меняет. Почему, по моему это совсем разные вещи. Например Код: plaintext Код: plaintext где get_right_key() функция которое просто вычисляет правый ключ. Senya_L Конкретный пример. Попробуйте составить запрос, выборки всех объявлений, сделанных в городах областного подчинения. ;) :) Интересно, а при какой структуре это будет легко? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 22:26 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Senya_LВ смысле? Запал Ctrl на буке, и нажал Enter, что и привело к отправке сообщения, сорри ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 22:28 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
anydasaили Код: plaintext anydasa:) Интересно, а при какой структуре это будет легко?Нормальное древо + CTE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 22:40 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Senya_LВычисляемое выражение и индекс не может быть использован. table scan со всеми вытекающими. Простите за возможно глупый вопрос, а это правило для всех СУБД? Senya_LНормальное древо + CTE Использую PostgreSQL, там такого ещё нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 22:57 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
anydasaSenya_LВычисляемое выражение и индекс не может быть использован. table scan со всеми вытекающими. Простите за возможно глупый вопрос, а это правило для всех СУБД?Для краткости - да. anydasaSenya_LНормальное древо + CTE Использую PostgreSQL, там такого ещё нет.Жаль. Используйте Firebird (из бесплатных), начиная с версии 2.1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 23:03 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Senya_L Используйте Firebird (из бесплатных), начиная с версии 2.1. Я только на Postres перешёл :). Да и потом в следующей версии обещают эту фичу прикрутить. Вобщем, думаю пока буду использовать это . Спасибо за отзыв. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 23:31 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Автор топика только что изобрел ОКАТО. Правда, в ОКАТО нет кода страны, но кто мешает его добавить? Рекомендую отыскать в инете справочник ОКАТО и посмотреть степени его детализации для регионов, городов и районов города. Коды стран, кстати, тоже выдумывать не надо, есть международные коды. И еще, каждый разряд никто не мешает записать в свое поле, по которым можно построить составной ключ. Либо же тригерами собирать из них единый уникальный ID и записывать в свое поле. Ну или наоборот, вводишь ID, а тригера разносят значения по отдельным колонкам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 23:43 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Сергей из СамарыИ еще, каждый разряд никто не мешает записать в свое поле, по которым можно построить составной ключ. Либо же тригерами собирать из них единый уникальный ID и записывать в свое поле. Ну или наоборот, вводишь ID, а тригера разносят значения по отдельным колонкам Хорошая идея, Сергей! Нужно обдумать. Ложить по типам, кода в разные ячейки. И работать с таблицей легко будет, и код будет самоописывающим. Можно ещё ввести всякие правила, например: Сталица страны имеет код вида *** *** 001 *** и тп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 10:58 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
anydasaСталица страны имеет код вида *** *** 001 *** и тп. угу... начинается колхоз... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 12:26 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
proposed amendmentугу... начинается колхоз... Грубо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 12:32 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
anydasaСергей из СамарыИ еще, каждый разряд никто не мешает записать в свое поле, по которым можно построить составной ключ. Либо же тригерами собирать из них единый уникальный ID и записывать в свое поле. Ну или наоборот, вводишь ID, а тригера разносят значения по отдельным колонкам Хорошая идея, Сергей! Нужно обдумать. Ложить по типам, кода в разные ячейки. И работать с таблицей легко будет, и код будет самоописывающим. Можно ещё ввести всякие правила, например: Сталица страны имеет код вида *** *** 001 *** и тп. И справочник можно по каждому типу построить. Страны с кодами, регионы с кодами и т.п.. Щелкаешь, выбираешь страну, регион, город и т.п. А вот про столицу не понял. И главное зачем? Столицу можно и по-другому отмечать, а такая нумерация будет выбиваться из общей логики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 12:38 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Сергей из Самары И справочник можно по каждому типу построить. Страны с кодами, регионы с кодами и т.п.. Щелкаешь, выбираешь страну, регион, город и т.п. Сергей из Самары Если Вы имели ввиду реальные кода, то мне кажется это создаст больше проблем. Захочется следить за этими кодами, а при изменении кода, нужно обновить код у всех детей и следовательно обновится ID у всех затронутых записях, что не очень хорошо. А вот про столицу не понял. И главное зачем? Столицу можно и по-другому отмечать, а такая нумерация будет выбиваться из общей логики. А зачем, только из-за городов вводить новое поле? Если можно описать так? И почему это назвали колхозом я тоже не понял:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 12:48 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Сергей из Самары И справочник можно по каждому типу построить. Страны с кодами, регионы с кодами и т.п.. Щелкаешь, выбираешь страну, регион, город и т.п. Если Вы имели ввиду реальные кода, то мне кажется это создаст больше проблем. Захочется следить за этими кодами, а при изменении кода, нужно обновить код у всех детей и следовательно обновится ID у всех затронутых записях, что не очень хорошо. Сергей из Самары А вот про столицу не понял. И главное зачем? Столицу можно и по-другому отмечать, а такая нумерация будет выбиваться из общей логики. А зачем, только из-за городов вводить новое поле? Если можно описать так? И почему это назвали колхозом я тоже не понял:)[/quot] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 12:49 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
anydasaИ почему это назвали колхозом я тоже не понял:)Прийдет - время поймете. Поля-флаги и всякие хитропопые "самоописывающиеся правила" до добра не доведут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 14:15 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
anydasaproposed amendmentугу... начинается колхоз... Грубо! выбросите лишнее слово Страна Область Город Район Столица ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 17:29 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Senya_LПрийдет - время поймете. Поля-флаги и всякие хитропопые "самоописывающиеся правила" до добра не доведут. А если, предположим, есть такое дерево (страны-города), то как отметить, что город является столицей без поля-флага? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 20:04 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
TomasVercettiSenya_LПрийдет - время поймете. Поля-флаги и всякие хитропопые "самоописывающиеся правила" до добра не доведут. А если, предположим, есть такое дерево (страны-города), то как отметить, что город является столицей без поля-флага? простокопецкокойто. детский сад - штаны на лямках... столица - атрибут государства (страны) и единственное ей место в таблице "Страны" или в таблице "столицы" флаг в записи "город" типа "столица" Yes | No это не просто колхоз. за такое **** надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 20:26 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
proposed amendment Пока не надо меня **** :) Я ещё только начал читать умные книжки и спрашивать знающих людей на форуме :) Спасибо за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 20:45 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
TomasVercettiproposed amendment Пока не надо меня **** :) Я ещё только начал читать умные книжки и спрашивать знающих людей на форуме :) Спасибо за ответ.Книжки читайте, да думать своей головой не забывайте. Когда придумывают подобного рода флаги - это признак, что не хотели/умели думать. TomasVercettiSenya_LПрийдет - время поймете. Поля-флаги и всякие хитропопые "самоописывающиеся правила" до добра не доведут. А если, предположим, есть такое дерево (страны-города), то как отметить, что город является столицей без поля-флага?Столица сама по себе - исключение из правил, с ней и обращаться надо особо. Равно как и с головным филиалом и прочими исключениями из правил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 23:34 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Senya_LСтолица сама по себе - исключение из правил, с ней и обращаться надо особо. Равно как и с головным филиалом и прочими исключениями из правил. вот, кстати, в КЛАДР считают иначе... Министерство Российской Федерации по налогам и сборам Система классификации и кодирования технико-экономической информации Ведомственный классификатор адресов Российской Федерации (КЛАДР) <...> раздел 3. Правила назначения классификационных кодов адресным объектам 3.1... 3.2. Район, центр которого является одновременно и центром региона, имеет порядковый номер "001", <skiped> 3.3. Городам/населенным пунктам, являющимся центрами регионов (районов), присваивается номер "001" <skiped> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2009, 09:41 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
BULK INSERTвот, кстати, в КЛАДР считают иначе... И это есть хорошо по-вашему? :) ЗЫ. Я обычно импортирую данные из КЛАДРА и меняю структуру на обычную древовидную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2009, 13:07 |
|
||
|
иерархия дерева (страны города)
|
|||
|---|---|---|---|
|
#18+
Senya_LBULK INSERTвот, кстати, в КЛАДР считают иначе... И это есть хорошо по-вашему? :) это есть непрофессионально, как всегда... и, конечно, плохо, как всегда как они с Коми-Пермяцким округом выкрутились, интересно... Вы не в курсе? авторВ соответствии с указанным законом новый субъект Российской Федерации — Пермский край — считается образованным с 1 декабря 2005 года, с этого же дня прекращают существование Пермская область и Коми-Пермяцкий автономный округ, при этом в границах автономного округа создается административно-территориальная единица — Коми-Пермяцкий округ. да и мало ли их еще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2009, 13:30 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1543450]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 351ms |

| 0 / 0 |
