|
|
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
BelyКласть в почтовый ящик. Абсолютно верно. Теперь вернись к своему примеру и скажи, почему Ване - класть в почтовый ящик, а директору - нести в собственные руки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 16:44 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
softwarer BelyКласть в почтовый ящик. Абсолютно верно. Теперь вернись к своему примеру и скажи, почему Ване - класть в почтовый ящик, а директору - нести в собственные руки?Потому что если в доме 5 магазинов, то отнести надо в правильный магазин. А там письмо отдается секретарю, который передает это человеку, который указан в графе "Получатель". В случае с коммуналкой - там либо один почтовый ящик на всех и жильцы сами разбираются кому чего, либо несколько ящиков с фамилиями и тогда опускать надо по фамилии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 16:55 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
BelyПотому что если в доме 5 магазинов, то отнести надо в правильный магазин. Далеко не всегда. Довольно часто отдается вахтеру/охраннику/прочему человеку на проходной, а дальше уже люди "из офисов" у него забирают. BelyВ случае с коммуналкой - там либо один почтовый ящик на всех и жильцы сами разбираются кому чего, либо несколько ящиков с фамилиями и тогда опускать надо по фамилии. Еще лучше. Так фамилия / название магазина - это таки часть адреса или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 17:03 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
softwarer BelyПотому что если в доме 5 магазинов, то отнести надо в правильный магазин. Далеко не всегда. Довольно часто отдается вахтеру/охраннику/прочему человеку на проходной, а дальше уже люди "из офисов" у него забирают.Это либо 2 организации, либо есть лотки с названими организаций. т.е. именованные почтовые ящики. Вахтер не возьмет письмо для абы-какой организации. softwarer BelyВ случае с коммуналкой - там либо один почтовый ящик на всех и жильцы сами разбираются кому чего, либо несколько ящиков с фамилиями и тогда опускать надо по фамилии. Еще лучше. Так фамилия / название магазина - это таки часть адреса или нет?За комунальные квартиры не скажу, но название магазина - это часть адреса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 17:13 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
Дело в том, что эта штуковина вовсе не дерево. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2007, 17:36 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
Да и деревом можно ------- Так какие проблемы с адресами? :)) -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 10:27 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
А еще по адресу "Ленина 167", между 165-м и 169-м домами, находится военный городок, и у него полтора десятка домов с собственной нумерацией от единицы. Короче говоря, нужно не заморачиваться. Предложенная изначально древовидная структура вполне жизнеспособна. А для отсутствующих элементов, с чего собственно начинался вопрос, нужно создать "фиктивные" элементы. Например, улицу "нет улицы", район "областное подчинение", улицу "ул. Ленина 167 (воен. гор).". В таблице "улица" могут быть и проспекты, и переулки (тип улицы вынести в классификатор), и парки, и тупики, и овраги, и перелески. И все получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 11:54 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherАА для отсутствующих элементов, с чего собственно начинался вопрос, нужно создать "фиктивные" элементы. Например, улицу "нет улицы", район "областное подчинение", В баню фиктивные элементы. Cane Cat FisherИ все получится. Ну если под "все" понимать "геморрой", то "все" и получится. Весь мир спокойно работает со skip-level hierarchies, а нам обязательно нужно придумать квадратные колеса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 12:04 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
softwarer В баню фиктивные элементы А чем они плохи? Если через список районов нужно добраться до любого города, то логично, если города, не относящиеся ни к какому району, будут сидеть за пунктом справочника "города областного подчинения". Или лучше, чтобы они просто перемешались с районами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 15:31 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherА чем они плохи? Тем, что про них надо постоянно помнить и постоянно исключать "откуда не надо". Это трудоемко и ненадежно; можно быть уверенным, что ошибки "есть и будут вноситься", если конечно модуль мало-мальски нетривиальный. Единственный известный мне случай, в котором их применение бывает удачно - хранилища данных, заточенные под визуальную отчетность. Cane Cat FisherЕсли через список районов нужно добраться до любого города, то логично, если города, не относящиеся ни к какому району, будут сидеть за пунктом справочника "города областного подчинения". Или лучше, чтобы они просто перемешались с районами? Вы попадаете точно в одну из моих любимых тем: "Одной из наиболее частых ошибок, совершаемых разработчиками, является попытка установить взаимно однозначное соответствие между представлением данных в клиентском интерфейсе и структурой данных на сервере". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 15:51 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
softwarerОдной из наиболее частых ошибок, совершаемых разработчиками, является попытка установить взаимно однозначное соответствие между представлением данных в клиентском интерфейсе и структурой данных на сервере Но ведь это не значит, что если представление данных в БД совпало с одной из форм его представлений клиенту, то такое решение обязательно ошибочно. Ведь идеально отвязанное от всех интерфейсных решений представление данных в БД также создает проблему "постоянно помнить о...", поскольку для организации его ввода-вывода придется применять программные прослойки. Например, я согласен, что при печати адреса ул."нет улицы" некрасиво. Но в то же время при вводе адреса в форму понятие "нет улицы" хорошо бы видеть явно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 16:57 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherНо в то же время при вводе адреса в форму понятие "нет улицы" хорошо бы видеть явно...Зачем его видеть явно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 17:05 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
2 Cane Cat Fisher Я тоже раньше думал, что если умею написать адрес на почтовом конверте, то я знаю все об адресной системе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 17:07 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherНо ведь это не значит, что если представление данных в БД совпало с одной из форм его представлений клиенту, то такое решение обязательно ошибочно. Не значит. Это значит, что Ваш аргумент не относится к делу (поскольку Ваш аргумент ссылается на интерфейс, а тот в общем случае не определяет структуру данных). Cane Cat FisherНапример, я согласен, что при печати адреса ул."нет улицы" некрасиво. Но в то же время при вводе адреса в форму понятие "нет улицы" хорошо бы видеть явно... Конкретно с этим "хорошо бы" я скорее не соглашусь, но это не так важно; разумеется, где-то специально нужно помнить и о "null с последствиями". Однако, сугубо практически - иметь дело с потребностью второго типа намного приятнее. Почему именно так - не готов уверенно судить; это просто "статистика по моему опыту". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 17:08 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherЕсли через список районов нужно добраться до любого города, то логично, если города, не относящиеся ни к какому району, будут сидеть за пунктом справочника "города областного подчинения". Или лучше, чтобы они просто перемешались с районами?По конституции к г.г. Москва и СанктПетербург - сами по себе субъекты РФ. Значит, плюс пункт федеральные города, плюс пункт населенные пукты в городах. И сколько таких пунктов плодить? Логичнее из базы получить список объектов, подчиненных данному, а как его сортировать/перемешивать (по типу или наименованию) - действительно вопрос интерфейса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 17:22 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
to 2b&2b: Я? Умею писать адрес на конверте? С чего Вы взяли? to softwarer: ok, я допускаю, что хранение информации в БД без фиктивных сущностей правильнее, чем с ними. Но приведите пожалуйста структуру данных правильного хранения адресной информации. Я хочу понять, какой же должен быть слой логики, чтобы привести ее в вид, удобный для пользователя - как для ввода, так и для вывода. И не забудем выборки по адресным условиям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 18:17 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
Но приведите пожалуйста структуру данных правильного хранения адресной информации. Смотрите мой пост выше. Только таким образом 1) удалось справиться с вакханалией адресных систем различных городов и привязаться к общероссийским и ведомственным (типа КЛАДРА, Почта) классификаторам 2) представить информацию в естественном для пользователей виде 3) и уложить все это в реляционную модель ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 18:36 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
2b&2b 2) для каждого элемента указывалось может ли он быть контейнером (т.е. содержать другие элементы) и перечень таких элементов То есть для улицы указываем, что это контейнер, и может содержать дома. Для населенного пункта указываем, что это контейнер, и может содержать улицы, либо (при отсутствии улиц) напрямую дома. А как же потом различать, следует ли для конкретного населенного пункта разрешать вводить дома напрямую, без улиц? Для каждого населенного пункта хранить признак "есть/нет улицы"? И для других уровней дерева тоже? Как это формализуется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 10:23 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
Cane Cat Fisher 2b&2b 2) для каждого элемента указывалось может ли он быть контейнером (т.е. содержать другие элементы) и перечень таких элементов То есть для улицы указываем, что это контейнер, и может содержать дома. Для населенного пункта указываем, что это контейнер, и может содержать улицы, либо (при отсутствии улиц) напрямую дома. А как же потом различать, следует ли для конкретного населенного пункта разрешать вводить дома напрямую, без улиц? Для каждого населенного пункта хранить признак "есть/нет улицы"? И для других уровней дерева тоже? Как это формализуется? Это бред какой-то. Потому что в итоге все-равно будут разрешены все включения, зато сложности и проблем будет на порядок больше. Уже все и всё сказали - нет никаких ограничений, что куда хошь, туда и привязывай, тока укажи, что это. Зачем квадратные колеса изобретать? -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 10:37 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
Cane Cat Fisherok, я допускаю, что хранение информации в БД без фиктивных сущностей правильнее, чем с ними. Но приведите пожалуйста структуру данных правильного хранения адресной информации. Я хочу понять, какой же должен быть слой логики, чтобы привести ее в вид, удобный для пользователя - как для ввода, так и для вывода. И не забудем выборки по адресным условиям. Единственно правильной структуры все же не существует - зависит от. Скажем, приведенная схема с контейнерами вполне хороша с точки зрения "на ходу учесть любой адрес, с которым только придется столкнуться". Для задачи топикстартера, думаю, оптимальной будет одна таблица с кучей полей, большинство из которых допускают null. Поля соответствуют разным возможным фрагментам адреса, включая все названные здесь "километры", "микрорайоны" и прочие извращения; при этом не следует жадничать и пытаться упихать в одно поле несколько разных смыслов (типа - если так, то это номер дома, а если эдак, то это номер километра МКАД; лучше завести два поля. Возможно, даже номер дома-владения и квартиры-офиса лучше делать разными полями, тут уже надо думать). С помощью check constraint-ов описываются правила заполнения (скажем, "если задан номер квартиры, то должен быть задан и номер дома" или "если задан микрорайон, то улица уже не задается"). Фактически это - жестко заданный вариант тех же контейнеров, но статическая линейная структура таблицы позволяет очень легко работать с этими данными: формировать адрес, искать такие же/близкие адреса, делать поиск по части адреса, реализовывать любой интерфейс ввода и обмен с источниками. Недостатком можно назвать тормознутость некоторых операций в существенно иерархическом интерфейсе (скажем, если мы, стоя на "улице", разворачиваем список домов), но это лечится дополнительными индексами или materialized view. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 10:58 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
Cane Cat Fisher А как же потом различать, следует ли для конкретного населенного пункта разрешать вводить дома напрямую, без улиц? Для каждого населенного пункта хранить признак "есть/нет улицы"? И для других уровней дерева тоже? Как это формализуется? Я у себя сделал отдельный граф разрешений (ограничений). Правда на уровне типов (а не как Вы хотите - на уровне объектов). Определенные товарищи считают, что можно просто пронумеровать уровни и разрешить вхождение во все высшие уровни. Н у я дума, комнатам в квартире нечего привязываться к городам и планетам. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 11:01 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
tygraЭто бред какой-то. Потому что в итоге все-равно будут разрешены все включения, зато сложности и проблем будет на порядок больше. 1) Ну .. попробуйте (на чем я лично не наставиваю) подумать еще раз ... для вас ранее были приведены реальные примеры адресов (кроме того на gisa.ru есть информация по адресным системам). 2) Вы рассматриваете вопрос текстового адреса , а мне необходимо отразить его на карте (см. технологии ГИС, подсказываю площадные и точечные объекты (условные знаки) и слои карты которые их содержат). softwarer Фактически это - жестко заданный вариант тех же контейнеров Вы практически угадали техническую реализацию приведенной схемы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 14:58 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
2 Cane Cat Fisher Вы мыслите слишком консервативно. Вернее мыслите как разработчик, а не как проектировщик. _____________________________________________________________ - Вот изобрел автомат для бритья - Но лица же у всех разные - Да это только первый раз разные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 15:04 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
tygraв итоге все-равно будут разрешены все включения, зато сложности и проблем будет на порядок больше. Уже все и всё сказали - нет никаких ограничений, что куда хошь, туда и привязывай, тока укажи, что это. Тогда встает вопрос проверки правильности (допустимости) адреса. Является ли адрес "г. Москва, кв.1" правильным? Как это определить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 15:56 |
|
||
|
Древовидная структура с пропуском уровней
|
|||
|---|---|---|---|
|
#18+
softwarerС помощью check constraint-ов описываются правила заполнения (скажем, "если задан номер квартиры, то должен быть задан и номер дома" или "если задан микрорайон, то улица уже не задается"). Верно, если задан номер квартиры, понятно, что требуется номер дома. Но если задан номер дома, то требуется ли улица? По сути, это зависит от конкретного населенного пункта - есть в нем вообще улицы, или это деревня из пяти сараев на опушке. Мы говорим о skip-level-tree. Вот я и добиваюсь - где лежит этот признак (пропуска уровня дерева для объекта)? А все говорят, что он как-бы и не нужен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 16:05 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34772466&tid=1544316]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
196ms |
get topic data: |
5ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 501ms |

| 0 / 0 |
