|
|
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Действительно проблема серьезная. если нет идентификатора как для организаций ИНН приходится "мудрить". написал на клиенте модуль определения "созвучности" т.е ему пофигу пропущена ли буква или стоит другая.. преребирает названия и в случае совпадения буквосочетаний - запоминает степень "похожести" чем больше букв (от 3 до 19)- тем больше добавляемое число (число совпавших букв - определяют степень добавляемого числа) потом сидел развлекался - брал различные слова и смотрел кто из клиентов на что смахивает ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 11:04:50 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Hi All! Хочу поделиться соображениями по всем вышеозначенным способам решения данной проблемы: 1. уникальность названия (точки, запятые, пробелы, кавычки и прочие знаки препинания в названии) - такие знаки нужно искоренять нещадно, оставляем буквенно-циферную строку и назвав ее сигнатурой заносим в отдельное поле. минус - лишняя инфа в БД 2. для поиска ошибок при вводе можно использовать ультрасуперпупермегалазеркульнейший алгоритм поиска по сигнатурам по частям с учетом индекса релевантности (круто сказал :) ) суть его в следующем: берем новое значение (его сигнатуру) и ищем его в БД (сигнатур опять же), то что нашли - во временную таблу с мах индексом, потом режем с хвоста один символ - опять ищем - найденное - в таблу с индексом на единицу меньше и т.д. до середины выражения поиска. Затем процедуру повторяем, но режем с начала выражения. Ессно, что строки во временной таблице должны быть уникальны и упорядочены по убыванию индекса релевантности. Геморно, но зато действенно при совмещении с 1-м и 3-м способами! минус - ежели надо срочно много инфы забить, то все положат на данный способ и потребуют его убрать 3. Назначить администратора справочника (1, мах - 2 человека), которому были бы дадены права на занесение и коррекцию инфы в нем. Остальные в него только смотрят. минус - ежели затруднено общение администратора и пользователей справочников 4. Денежный способ по прежнему является одним из самых действенных во все времена :-) минус - там, где зарплата нищенская могут послать и уволиться и ищите на такую зарплату еще кого-нито... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 11:27:05 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
2 denis_ka Хотелось бы взглянуть на листинг свербыстродействующий процедуры основанной на ультрасуперпупермегалазеркульнейшем алгоритме поиска по сигнатурам по частям с учетом индекса релевантности )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 11:43:07 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Я решаю проблему с двойниками так: Обчыно новые организации появляются в момент выписки счета (человек позвонил, попросил выписать счет на "РОга и копыта" ему этот счет выписали.) Я делаю просто: для того, чтобы ТОЛЬКО выписать счет _НЕОБЯЗАТЕЛЬНО_ заводить нового клиента - достаточно указать в счете название, которое может хоть 100 раз повторяться в справочнике клиентов. А ссылка на клиента проставляется только после того, как пришли деньги по этому счету, или человек пришел с доверенностью получать товар, тоесть тогда, когда появились _достоверные_ данные, по которым можно отличить одного клиента от другого. Имея исходные данные доверенности или банковского платежа, а также сведения о том, что эти движения происходят по данному конкретному счету, sp по реквизитам ищет в справочнике клиента и если его нет, то заводит нового (просит доп данные) и в счете выставляет ссылку на нужную запись. Название - не есть понятие уникальное! - ведь есть десятки организаций с разными реквизитами, но одинаковыми именами! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 11:50:12 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Вы можете быть сильно удивлены, но я сталкивался (и в свою очередь сильно удивлялся) с ситуациями, когда у двух разных организаций одинаковый ИНН (филиал и центральная контора, названия разные, находятся территориально в разных местах). Далее еще интереснее. Есть фирмы (холдинги), у которых сразу несколько ИНН в разных их подразделениях. А по сути, IMHO, с данной проблемой программными средствами бороться соверошенно бесполезно. Для этого имеются средства организационные. Никакие программные средства не смогут выяснить, что "Александр", "Саша" и "Шура" - один и тот же человек, а Дюма и Дюма (старший и младший) - разные. И даже если вы забацаете алгоритм, который Сашу и Шуру распознает как одно название, отличить Александра от Алексана (а вот догадайтесь, опечатка это или действительно такое имя?) все равно будет невозможно без дополнительных изысканий. Слишком много разнообразных критериев. Одним словом, задача эта не систематизируется. Качество ее выполнения напрямую связано с добросовестностью конкретных работников. IMHO, для ее решения в системе должны быть средства тотальной регистрации. Если кто-то систематически нарушает установленный регламент, и не реагирует на устные, письменные замечания и лишения премий, от него избавляются. Вот и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 13:08:26 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
"Разруха, она в головах!" (С) Ввод данных это одна из функций бизнес процесса и если данные можно ввести различными способами, значит либо существуют дублирующие функции, либо кто то что то не учел. В любом случае разработчик БД должен был увидеть, что не может гарантировать уникальность записей, что противоречит реляционной теории, в отношении не может быть двух одинаковых кортежей. Сразу после того, как разработчик увидел это, и понял, что сущность он определил правильно но не хватает информации для определения РК он обязан был задать вопросы для того чтобы эту информацию получить. Проблема, как здесь уже говорили действительно серьезная, но это проблема не в данных, а в квалификации разработчиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 13:38:01 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
2 Genady. Секундочку-секундочку. Есть справочник предприятий. Вы - пользователь, которому нужно сослаться на организацию ОАО "НПП Рога&Копыта ЦАО ЧОП". Вы не знаете, есть ли уже подобная организация в справочнике. Если ее нет, ее нужно добавить, если есть - то использовать существующую запись. Всего в справочнике 50000 организаций. В приложении имеются встроенные средства поиска. Поиск по слову "Рога" находит 300 записей. По слову "копыта" - 250. По совокупности "Рога" и "копыта" находятся 4 записи. Среди них: ОАО "НПП Рога и Копыта ЦАО ЧОП" ОАО "Рога&Копыта" НПП Рога&Копыта ЦАО ОАО "НПП Рога&КопытЫ ЦАО ЧОП" Внимание, вопрос... На какую из них следует (и следует ли?!) ссылаться? Либо следует добавить новую запись, просто потому, что буква-в-букву с заданным наименованием ни одно не сходится? Может быть, вы будете сильно удивлены, но правильный ответ - это все разные организации, и ссылаться на них нельзя! А сослаться нужно было на другую запись: ОАО "НПП Р&К ЦАО ЧОП", которая ВООБЩЕ НЕ БЫЛА ОБНАРУЖЕНА ПРИ ПОИСКЕ, потому что в логотипе документа, с которым работал вчера другой юзер эта организация была указана именно в таком сокращенном виде. А теперь объясните, какие могут быть заложены алгоритмы в программу, которые поогут решить поставленную задачу правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 18:08:42 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
2Garya А вот в етой ситуации проблемма должна решаться должностными инструкциями по предприятию по теме "Ввод новых предприятий в справочники" as for me. Я понимаю что наша общая задача сделать прилижение как можно более дуракоустичивым,но никому еще не удавалось (помоему кроме Б.Страуструпа) сделать невозможное:)) Так что логика приложения - логикой ,а описанный Вами случай нужно решать по другому.Но и Почемучка (или его предшественики ) здорово лопухнулись,жижнь есть жижнь. А нам вот старайся во благо человеческой расхлябоности:)) ЗЫ Да если бы было все просто нам бы всем перестали платить зарплату:))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 18:22:05 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
а вообще для выписки счета и если тагого клиента в справочнике нет - то записать в отдельную табличку... и по приходу денег актуализировать в основной справочник... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 19:16:56 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
У нас следующая организация работы со справочником клиентов: 1. Двухуровневость. Клиент может быть "головным" и "подчиненным". Головной - это физическая организация с которой ведется работа. Подчиненный - множественное обличие головнго клиента(по документам он же "Пупкин", "Хрюпкин" и пр.). Это дает меньше путаницы и незаменимо при построении отчетов. 2. Уникальность названий. Запрещено вводить в каталог клиентов несколько одинаковых наименований. С одной стороны мы прекрасно понимаем, что названия могут дублироваться, с другой, если допустить одинаковые названия, возникнет путаница: счет выпишут на одну ООО "Ромашка", отгрузят другой, платеж забьют на третью. В общем поплакали наши менеджеры, да что-то придумали и теперь не жужжат. 3. Информирование менеджера о существовании "похожих" клиентов в базе. При вводе новой организации вызывается функция определения степени похожести клиента(алгоритм Левинштайна). Она сравнивает нового клиента со всеми в БД. При этом, перед обработкой выкидываются все лишние символы(пробелы, кавычки, тире и пр.), похожие буквы русской и английской раскладки также приводятся к одной. Если находятся близкие по похожести клиенты выдается предупреждение со списком похожих организаций. 4. "Покапывание на лысину менеджеров серной кислотой". Тоже необходимо, разумеется. Что касается одного ответственного, то в силу специфики бизнеса назначить одного ответственного для ведения справочника организаций не представляется возможным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 12:10:08 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
А где бы посмотреть описание данного алгоритма Левинштайна ??? или другие алгоритмы которые могут быть полезны в этой ситуации я пока пришел к тому, что строю некую хэш функцию (количество повторений каждого из символов в этой строке) и значение ключа записываю в таблицу и позднее их сравниваю с тем чтобы определять степень схожести ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 16:13:47 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
2 Garya Что значит есть справочник предприятий? Какой справочник? Кто его создавал? Почему там только наименования предприятий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 16:28:28 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Мне тоже неизвестно про алгоритм Левинштайна. Короче, если Вы публикуете исходники SOUNDEX() по-русски, я поощрю Вас майкой. Сейчас есть совершенно чумовая майка в защиту движения open source (1 экз.) XL, белая, хлопок, 100 г/м2, рисунок: пингвин сидит на льдине и над ним изогнулась в прыжке косатка такая хищная с логотипом Microsoft (тьфу!) на бочине. Надпись по-аглицки, типа защитим идеи свободного софта, ля-ля-ля... Из-под пингвина растекается желтая лужа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 21:24:13 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
2 Genady. Потому что когда просят по телефону на организацию выписать счет, то даже название организации можно расслышать не гарантированно. Что такое справочник предприятий? Это совокупность таблиц, которая позволяет упорядочить информацию в соответствии с (ну хотя бы) 3NF. Если по меньшей мере этого не сделать, то масштабы проблем выйдут далеко за края рассматриваемой лужи и превратятся в большое море. Конечно, там не только наименования предприятий. Но на момент, когда необходимо сослаться на запись, кроме наименования может более ничего не известно. Я о том и говорю, что когда это станет известно, то юзверь должен найти свою запись и поинтересоваться, а правильно ли ранее он ее завел. А можно и не интересоваться. А можно попытаться найти ранее введенную запись, но при этом не особенно натужно ее искать. Если с первого захода не найдется, то просто добавить еще одну. Я вам расскажу один случай из жизни моего знакомого. Жил-был программист (он самый). Сотворил он программу отслеживания движения товара на складе. И сделал он ну все по теории. Естественно, не может быть в номенклатурном справочнике двух записей, соотносящихся с одной и той же номенклатурой. Естественно, что со склада не может уйти товар, которого там просто нет и никогда не было. Ввел он это ограничение (ну чтобы заставить кладовщиков прилагать определенные усилия для сохранения логической целостности информации). И вот приезжает однажды на склад кавалькада грузовиков на погрузку. А кладовщики еще толком не разобрались, где верх/низ у клавиатуры. Ищут они, что нужно отгрузить по наименованию "ЭЦВ 8-18-68 АБВ 220/380"... и не находят. Ну вот же он, под ногами лежит в штабелях! Нету в компьютере, черт возьми! Все глаза проглядели! Пишут они руководству служебку, что, дескать, программа плохая и приводит к задержкам в отгрузке товара. Необходимо разрешить вводить остатки товара, которые внезапно на складе обнаружены (а в программе их почему-то нет) простым внесением (операция "приход товара из подпространства"). Программист пытается сопротивляться, а ему руки заламывают, да хлопают кулаком по начальственному столу с грозным возгласом "Что! Рядиться мне с тобою!". Ну, сделал он как просили... Навводили кладовщики остатков по товарам, которые не обнаруживали... Через месячишко глядь - на складе пусто, а в компьютере всякой всячины в остатках числится видимо-невидимо. Ту номенклатуру, которую искали, оказывается раньше завели в компьютер как "8/18/68 ЭЦВ АБВ" потому и не нашли. И много чего не нашли из того, чего раньше вводили. Короче, остатки в программе совершенно перестали стыковаться с остатками на складе. И той программкой напрочь пользоваться перестали. А программист уволился в сердцах... Такая вот история. Это я все к тому, что порядок должен быть не только в программе, но и вокружающем ее пространстве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 22:12:40 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Программист пытается сопротивляться, а ему руки заламывают, да хлопают кулаком по начальственному столу с грозным возгласом "Что! Рядиться мне с тобою!". Бывает, согласен, только я когда попадал в такие ситуации увольнялся раньше чем мне руки начинали заламывать. Коли начальству лень кладовщиков дороже нормальной работы, нефиг мне на таком предприятии делать. Хотя возможно что и в Вашем примере что то недопроектировали, если есть возможность вводить товар и так и сяк. Это я все к тому, что порядок должен быть не только в программе, но и вокружающем ее пространстве. Соглашусь полностью, только если в окружающем пространстве порядка нет, то и нефиг в этом пространстве сидеть, иногда мозги начальству только рынок может вправить да и то скорее всего поздно будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 08:08:25 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Еще добавлю. Я о том и говорю, что когда это станет известно, то юзверь должен найти свою запись и поинтересоваться, а правильно ли ранее он ее завел Юзверь ничем интересоваться не станет, юзверя надо заставлять интересоваться, а как его заставить это уже дело технологии, можно с помощью юзверевского интерфейса, можно адмнистративно, может еще как то можно но решать это нужна на этапе проектирования и решать так, что бы была уверенность, что дублей в базе не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 08:40:21 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Есть вопрос по теме: Какая собственно разница бухгалтерии Есть ли в базе "Солнечный путь" (запись один) и "Солнечный путь" (запись 2), если нет разницы Есть ли там ООО "Пупкин" и ООО "Ивкин".... т.е. если всё равно сколько организаций в базе, тогда большого значения "похожесть" названий и в целом реквизитов не имеет. Главное на мой взгляд, если выставлен счет для "Солнечный путь" (запись один) то и отгрузку нужно производить и оформлять документы для "Солнечный путь" (запись один) ..... а обеспечить это можно очень многими путями.... 1. можно находить клиента по выписанному счету 2. в книжном магазине ozone определяют клиента по сумме копеек указанной в счете... от которой нельзя отказаться при оплате... и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 09:37:57 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Oops,.. не в ozone, а в allcd.ru .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 10:09:10 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Полностью согласен с Genady_ . Пока нет порядка в организации небудет порядка и в программе ! Как только пользователи поймут (заставят понять), что от их работы зависит их благополучие , то сразу станет все понятно и просто , а главное точно ! Кстати Дуракоустойчивость программы очень сильно зависит от степени заинтересованности конечного пользователя ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 10:20:17 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
насчет дуракоустойчивости: так, просто, где-то прочитал: "программа, которой сможет пользоваться и дурак, только дураку и нужна." :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 10:42:05 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Впринципе Да , но есть некоторые программы , которые должны быть именно такими ! например текстовый редактор ну NOTEPAD например , ведь и для дурака она тоже доступна, хотя какой бы то нибул крутой программист наврядли будет использовать для создания текстового документа шеснадцатиричный редактор ... ps. просто к слову пришлось ... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 10:55:02 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
"программа, которой сможет пользоваться и дурак, только дураку и нужна." Этот принцип придумали нерадивые разработчики. Пользователь должен работать по своей специальности не задумываясь, что и как и куда там записывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 11:09:30 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Ответ очень простой: (даже два) 1) ставишь тригер на вставку, и при вставке проверяешь на присутствие в базе данных хранимой процедурой. Также тригер ставишь при упдэйте, если изменилось поле - запускаешь хранимую процедуру. Если такое существует - сразу откат. Теперь о хранимой процедуре: 1) в переди убераешь пробелы, в конце тоже 2) приводишь в нормальную форму типа, если ввели ИВанов иВАНОВИЧ - > Иванов Иванович PS: это можно с легкостью сделать на клиенте, что немного облегчит жизнь БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 11:36:55 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
проблема действительно серьезная и в различных задачах может решаться по разному. безусловно для различных аспектов учета нужна таблица с уникальными идентификаторами , возможно ли выписать счет клиенту если его нет в таблице - какие проблемы выписывай, укажи для таблицы ид "Неизвестный клиент" и вперед, нужно запомнить кому выписал счет - храни это в отдельной таблице Совершенно другой вопрос как сделать чтобы таблица была уникальна по названию клиента но в то же время поддерживала псевдонимы. тут я вижу три решения : 1 разрешить повторы для ИД клиента и под одним идентификатором держать случайные повторы (в процессе выискивания двойников), истинное название можно пометить доп. атрибутом 2 в доп. поле двойнику указывать ИД настоящего, настоящему в этом поле null в запросе будет его легко привязать через isnull(PSEVDO, ИД) 3. и конечно же дополнительная таблица с псевдонимами -привязанными или нет к главной Но вопрос остается открытым : Процедурку бы , которая на стадии ввода в уникальную таблицу (по названию) БЫСТРО находила все созвучные названия в порядке степени похожести ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 11:47:13 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Я уже 2 дня парю пользователей по результатом этого запроса (запасы серной кислоты уже кончаются :))), начал с товаров, далее клиенты Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 12:26:28 |
|
||
|
|

start [/forum/search_topic.php?author=Dominant&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
6ms |
get forum list: |
20ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
1ms |
| others: | 637ms |
| total: | 837ms |

| 0 / 0 |
