powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Древовидная структура с пропуском уровней
25 сообщений из 77, страница 2 из 4
Древовидная структура с пропуском уровней
    #34768693
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyКласть в почтовый ящик.
Абсолютно верно. Теперь вернись к своему примеру и скажи, почему Ване - класть в почтовый ящик, а директору - нести в собственные руки?
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34768747
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer BelyКласть в почтовый ящик.
Абсолютно верно. Теперь вернись к своему примеру и скажи, почему Ване - класть в почтовый ящик, а директору - нести в собственные руки?Потому что если в доме 5 магазинов, то отнести надо в правильный магазин.
А там письмо отдается секретарю, который передает это человеку, который указан в графе "Получатель".

В случае с коммуналкой - там либо один почтовый ящик на всех и жильцы сами разбираются кому чего, либо несколько ящиков с фамилиями и тогда опускать надо по фамилии.
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34768782
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyПотому что если в доме 5 магазинов, то отнести надо в правильный магазин.
Далеко не всегда. Довольно часто отдается вахтеру/охраннику/прочему человеку на проходной, а дальше уже люди "из офисов" у него забирают.

BelyВ случае с коммуналкой - там либо один почтовый ящик на всех и жильцы сами разбираются кому чего, либо несколько ящиков с фамилиями и тогда опускать надо по фамилии.
Еще лучше. Так фамилия / название магазина - это таки часть адреса или нет?
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34768816
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer BelyПотому что если в доме 5 магазинов, то отнести надо в правильный магазин.
Далеко не всегда. Довольно часто отдается вахтеру/охраннику/прочему человеку на проходной, а дальше уже люди "из офисов" у него забирают.Это либо 2 организации, либо есть лотки с названими организаций.
т.е. именованные почтовые ящики.
Вахтер не возьмет письмо для абы-какой организации.

softwarer BelyВ случае с коммуналкой - там либо один почтовый ящик на всех и жильцы сами разбираются кому чего, либо несколько ящиков с фамилиями и тогда опускать надо по фамилии.
Еще лучше. Так фамилия / название магазина - это таки часть адреса или нет?За комунальные квартиры не скажу, но название магазина - это часть адреса.
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34770328
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что эта штуковина вовсе не дерево.
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34770882
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и деревом можно

-------

Так какие проблемы с адресами? :))

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34771174
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще по адресу "Ленина 167", между 165-м и 169-м домами, находится военный городок, и у него полтора десятка домов с собственной нумерацией от единицы.

Короче говоря, нужно не заморачиваться. Предложенная изначально древовидная структура вполне жизнеспособна. А для отсутствующих элементов, с чего собственно начинался вопрос, нужно создать "фиктивные" элементы. Например, улицу "нет улицы", район "областное подчинение", улицу "ул. Ленина 167 (воен. гор).". В таблице "улица" могут быть и проспекты, и переулки (тип улицы вынести в классификатор), и парки, и тупики, и овраги, и перелески. И все получится.
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34771207
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherАА для отсутствующих элементов, с чего собственно начинался вопрос, нужно создать "фиктивные" элементы. Например, улицу "нет улицы", район "областное подчинение",
В баню фиктивные элементы.

Cane Cat FisherИ все получится.
Ну если под "все" понимать "геморрой", то "все" и получится. Весь мир спокойно работает со skip-level hierarchies, а нам обязательно нужно придумать квадратные колеса...
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34772064
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
В баню фиктивные элементы

А чем они плохи? Если через список районов нужно добраться до любого города, то логично, если города, не относящиеся ни к какому району, будут сидеть за пунктом справочника "города областного подчинения". Или лучше, чтобы они просто перемешались с районами?
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34772138
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherА чем они плохи?
Тем, что про них надо постоянно помнить и постоянно исключать "откуда не надо". Это трудоемко и ненадежно; можно быть уверенным, что ошибки "есть и будут вноситься", если конечно модуль мало-мальски нетривиальный.

Единственный известный мне случай, в котором их применение бывает удачно - хранилища данных, заточенные под визуальную отчетность.

Cane Cat FisherЕсли через список районов нужно добраться до любого города, то логично, если города, не относящиеся ни к какому району, будут сидеть за пунктом справочника "города областного подчинения". Или лучше, чтобы они просто перемешались с районами?
Вы попадаете точно в одну из моих любимых тем: "Одной из наиболее частых ошибок, совершаемых разработчиками, является попытка установить взаимно однозначное соответствие между представлением данных в клиентском интерфейсе и структурой данных на сервере".
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34772438
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerОдной из наиболее частых ошибок, совершаемых разработчиками, является попытка установить взаимно однозначное соответствие между представлением данных в клиентском интерфейсе и структурой данных на сервере

Но ведь это не значит, что если представление данных в БД совпало с одной из форм его представлений клиенту, то такое решение обязательно ошибочно.

Ведь идеально отвязанное от всех интерфейсных решений представление данных в БД также создает проблему "постоянно помнить о...", поскольку для организации его ввода-вывода придется применять программные прослойки. Например, я согласен, что при печати адреса ул."нет улицы" некрасиво. Но в то же время при вводе адреса в форму понятие "нет улицы" хорошо бы видеть явно...
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34772463
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherНо в то же время при вводе адреса в форму понятие "нет улицы" хорошо бы видеть явно...Зачем его видеть явно?
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34772466
2b&2b
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Cane Cat Fisher
Я тоже раньше думал, что если умею написать адрес на почтовом конверте, то я знаю все об адресной системе
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34772469
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherНо ведь это не значит, что если представление данных в БД совпало с одной из форм его представлений клиенту, то такое решение обязательно ошибочно.
Не значит. Это значит, что Ваш аргумент не относится к делу (поскольку Ваш аргумент ссылается на интерфейс, а тот в общем случае не определяет структуру данных).

Cane Cat FisherНапример, я согласен, что при печати адреса ул."нет улицы" некрасиво. Но в то же время при вводе адреса в форму понятие "нет улицы" хорошо бы видеть явно...
Конкретно с этим "хорошо бы" я скорее не соглашусь, но это не так важно; разумеется, где-то специально нужно помнить и о "null с последствиями". Однако, сугубо практически - иметь дело с потребностью второго типа намного приятнее. Почему именно так - не готов уверенно судить; это просто "статистика по моему опыту".
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34772521
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherЕсли через список районов нужно добраться до любого города, то логично, если города, не относящиеся ни к какому району, будут сидеть за пунктом справочника "города областного подчинения". Или лучше, чтобы они просто перемешались с районами?По конституции к г.г. Москва и СанктПетербург - сами по себе субъекты РФ. Значит, плюс пункт федеральные города, плюс пункт населенные пукты в городах. И сколько таких пунктов плодить?
Логичнее из базы получить список объектов, подчиненных данному, а как его сортировать/перемешивать (по типу или наименованию) - действительно вопрос интерфейса.
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34772673
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to 2b&2b: Я? Умею писать адрес на конверте? С чего Вы взяли?

to softwarer:
ok, я допускаю, что хранение информации в БД без фиктивных сущностей правильнее, чем с ними. Но приведите пожалуйста структуру данных правильного хранения адресной информации. Я хочу понять, какой же должен быть слой логики, чтобы привести ее в вид, удобный для пользователя - как для ввода, так и для вывода. И не забудем выборки по адресным условиям.
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34772714
2b&2b
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но приведите пожалуйста структуру данных правильного хранения адресной информации.

Смотрите мой пост выше.
Только таким образом
1) удалось справиться с вакханалией адресных систем различных городов и привязаться к общероссийским и ведомственным (типа КЛАДРА, Почта) классификаторам
2) представить информацию в естественном для пользователей виде
3) и уложить все это в реляционную модель
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34773470
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2b&2b 2) для каждого элемента указывалось может ли он быть контейнером (т.е. содержать другие элементы) и перечень таких элементов

То есть для улицы указываем, что это контейнер, и может содержать дома. Для населенного пункта указываем, что это контейнер, и может содержать улицы, либо (при отсутствии улиц) напрямую дома.

А как же потом различать, следует ли для конкретного населенного пункта разрешать вводить дома напрямую, без улиц? Для каждого населенного пункта хранить признак "есть/нет улицы"? И для других уровней дерева тоже? Как это формализуется?
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34773518
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat Fisher 2b&2b 2) для каждого элемента указывалось может ли он быть контейнером (т.е. содержать другие элементы) и перечень таких элементов

То есть для улицы указываем, что это контейнер, и может содержать дома. Для населенного пункта указываем, что это контейнер, и может содержать улицы, либо (при отсутствии улиц) напрямую дома.

А как же потом различать, следует ли для конкретного населенного пункта разрешать вводить дома напрямую, без улиц? Для каждого населенного пункта хранить признак "есть/нет улицы"? И для других уровней дерева тоже? Как это формализуется?
Это бред какой-то.
Потому что в итоге все-равно будут разрешены все включения, зато сложности и проблем будет на порядок больше.

Уже все и всё сказали - нет никаких ограничений, что куда хошь, туда и привязывай, тока укажи, что это.
Зачем квадратные колеса изобретать?

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34773604
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat Fisherok, я допускаю, что хранение информации в БД без фиктивных сущностей правильнее, чем с ними. Но приведите пожалуйста структуру данных правильного хранения адресной информации. Я хочу понять, какой же должен быть слой логики, чтобы привести ее в вид, удобный для пользователя - как для ввода, так и для вывода. И не забудем выборки по адресным условиям.
Единственно правильной структуры все же не существует - зависит от. Скажем, приведенная схема с контейнерами вполне хороша с точки зрения "на ходу учесть любой адрес, с которым только придется столкнуться".

Для задачи топикстартера, думаю, оптимальной будет одна таблица с кучей полей, большинство из которых допускают null. Поля соответствуют разным возможным фрагментам адреса, включая все названные здесь "километры", "микрорайоны" и прочие извращения; при этом не следует жадничать и пытаться упихать в одно поле несколько разных смыслов (типа - если так, то это номер дома, а если эдак, то это номер километра МКАД; лучше завести два поля. Возможно, даже номер дома-владения и квартиры-офиса лучше делать разными полями, тут уже надо думать). С помощью check constraint-ов описываются правила заполнения (скажем, "если задан номер квартиры, то должен быть задан и номер дома" или "если задан микрорайон, то улица уже не задается").

Фактически это - жестко заданный вариант тех же контейнеров, но статическая линейная структура таблицы позволяет очень легко работать с этими данными: формировать адрес, искать такие же/близкие адреса, делать поиск по части адреса, реализовывать любой интерфейс ввода и обмен с источниками. Недостатком можно назвать тормознутость некоторых операций в существенно иерархическом интерфейсе (скажем, если мы, стоя на "улице", разворачиваем список домов), но это лечится дополнительными индексами или materialized view.
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34773615
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat Fisher
А как же потом различать, следует ли для конкретного населенного пункта разрешать вводить дома напрямую, без улиц? Для каждого населенного пункта хранить признак "есть/нет улицы"? И для других уровней дерева тоже? Как это формализуется?

Я у себя сделал отдельный граф разрешений (ограничений). Правда на уровне типов (а не как Вы хотите - на уровне объектов). Определенные товарищи считают, что можно просто пронумеровать уровни и разрешить вхождение во все высшие уровни. Н у я дума, комнатам в квартире нечего привязываться к городам и планетам. :)
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34774713
2b&2b
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tygraЭто бред какой-то.
Потому что в итоге все-равно будут разрешены все включения, зато сложности и проблем будет на порядок больше.

1) Ну .. попробуйте (на чем я лично не наставиваю) подумать еще раз ... для вас ранее были приведены реальные примеры адресов (кроме того на gisa.ru есть информация по адресным системам).
2) Вы рассматриваете вопрос текстового адреса , а мне необходимо отразить его на карте (см. технологии ГИС, подсказываю площадные и точечные объекты (условные знаки) и слои карты которые их содержат).

softwarer Фактически это - жестко заданный вариант тех же контейнеров

Вы практически угадали техническую реализацию приведенной схемы
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34774740
2b&2b
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Cane Cat Fisher
Вы мыслите слишком консервативно. Вернее мыслите как разработчик, а не как проектировщик.

_____________________________________________________________
- Вот изобрел автомат для бритья
- Но лица же у всех разные
- Да это только первый раз разные
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34774980
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraв итоге все-равно будут разрешены все включения, зато сложности и проблем будет на порядок больше.

Уже все и всё сказали - нет никаких ограничений, что куда хошь, туда и привязывай, тока укажи, что это.

Тогда встает вопрос проверки правильности (допустимости) адреса. Является ли адрес "г. Москва, кв.1" правильным? Как это определить?
...
Рейтинг: 0 / 0
Древовидная структура с пропуском уровней
    #34775031
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerС помощью check constraint-ов описываются правила заполнения (скажем, "если задан номер квартиры, то должен быть задан и номер дома" или "если задан микрорайон, то улица уже не задается").

Верно, если задан номер квартиры, понятно, что требуется номер дома. Но если задан номер дома, то требуется ли улица? По сути, это зависит от конкретного населенного пункта - есть в нем вообще улицы, или это деревня из пяти сараев на опушке. Мы говорим о skip-level-tree. Вот я и добиваюсь - где лежит этот признак (пропуска уровня дерева для объекта)? А все говорят, что он как-бы и не нужен...
...
Рейтинг: 0 / 0
25 сообщений из 77, страница 2 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Древовидная структура с пропуском уровней
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]