|
|
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Господа разработчики и АБД У меня к вам следующий вопрос возник. Наверное каждому из вас в той или иной степени приходится бороться с двойными записями в ваших БД (будь то БД по клиентам, посетителям больницы и т.п.), ведь человеческий фактор еще никто не отменял. Так вот и возник вопрос как бы написать такой запросище, чтобы это дело присекать. Хотелось бы услышать ваше мнение по этому вопросу. вот несколько соображений по этой теме. Двойники могут появляться 1 если какой нибудь ПЕТЯ начнет вводить клиента "Солнечный путь", а яжык переключит только после 2 буквы и тогда мы получим, что чистое сравнение на Name=Name пропустит, это хотя визуально их разве что БГ и отличит 2 тот же ПЕТЯ поставит лишний " " (пробел) или "."(точка) в фирме "ЗАО ХЕ регистр" Как кто решает такие проблемы извиняюсь если не сильно внятно объяснил, но надеюсь вы поняли в чем суть проблемы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 17:23:08 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
ИМХО, это надо лечить на клиенте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 17:25:46 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
ИМХО, это надо лечить на клиенте Это не на клиенте надо лечить, это тому Васе, который БД проектировал ручки поотрывать и выбросить нафиг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 17:31:22 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
А что кроме имен у них нет других более нормальных аттрибутов,которые являлись бы уникальными(или набора аттрибутов),ведь "Солнечный путей" может быть сотня,но очень врядли что-бы у них был один р\с,или адресс,телефон или все вместе. Вот при добавке и проверяй все ето,у меня ето все зашито в ХП которая отвечает за insert. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 17:33:43 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Как ? За спиной у каждого сотрудника, который может ввесли клиента стоять и долбить "А вы точно уверены что никто из 500 человек до вас не мог ввести этого клиента в БД под немного другим наименованием!!!" ??? нет тут на клиенте не побороть есть конечно несколько способ решения данной проблемы 1(и самый верный наверное) из них это растрел на месте того, кто нечаянно ввел клиента который уже был. Но мы ведь не месняки, правильно ;) хотя иногда руки к автомату тянутся. 2 метод это наверное всё таки поставить какие либо проверки в административных рассылках и капать этим товарищам переодически на лысину серной кислотой. Это наш метод ..., но как такую процу написать. несколько идей составление функции выдающей степень похожести одной строки на другую. так несколько правил которыми мы люди руководствуемся А (B & C) == A(B&C) == A (B&C) == и т.д. но это моё мнение (и я его конечно реализую) мне также интересно как другие смотрят на эту проблему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 17:38:17 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
А что кроме имен у них нет других более нормальных аттрибутов,которые являлись бы уникальными(или набора аттрибутов),ведь "Солнечный путей" может быть сотня,но очень врядли что-бы у них был один р\с,или адресс,телефон или все вместе. Вот при добавке и проверяй все ето,у меня ето все зашито в ХП которая отвечает за insert. Мне бы может тоже хотелось это вшить в ХП но в этом то проблема и есть сначала вводят имя клиента, которое конечно же уникально, а уже потом указывают(возможно гораздо позднее) его р/с и прочие по настоящему уникальные атрибуты. Но первый человек ввел "солнечный путь" с первой английской буквы и поэтомы второй ПЕТЯ не задумываясь вводит и у нас совершенно благополучно существуют 2 клиента (2 баланса по ним). Т.е. вопрос не о том какие мы уродские разработчики, а о том как мы умеем решать поставленные проблемы. Проблема поставлена, как же вы её решаете ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 17:43:24 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Тю блин ,а чем проблемма? Написать две ХП и прилепить на форму пару другую контролов + какой нибудь мсгбокс? И что месаж лень вывести "Вы уверенны в том что делаете". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 17:45:06 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Почемучка, Вам Maxx уже объяснил суть Вашей проблемы. Ведь в жизни Вы как то отличаете соседа Петю и сослуживца Петю, у которых одинаковое имя но тем не менее это не один и тот же человек. И даже если они одинакового роста и по необъяснимой прихоти природы похожи друг на друга как близнецы их все равно можно отличить например по номеру паспорта. Дубли в таблицы могут быть только в двух случаях, точнее даже все равно в одном, в случае неправильного проектирования, когда нет возможности выделить РК. И даже если совершенно по независящим от Вас причинам у Вас нет полной информации о сущьности, все равно нужно предусмотреть какой то искусственный механизм для их различия. Ну например, каждому клиенту вручать идентификационную карточку, номер которой уникален и по которому можно будет различать записи о клиентах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 17:47:46 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
все таки конкретно это проблему я считаю нужно решать на клиенте.... реализаций может быть несколько... включая поиск вхождений похожих названий до добовления новой записи + диалог с пользователем... ЗЫ предусмотреть все глупые ошибки пользователя невозможно... но свести к минимуму / ;) муму / нужно стараться... потому и существует практика бэттатестирования.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 17:50:12 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
И всеже либо у Вас 2 Солнечных пути с одинаковыми атрибутами или один пустой(Одно название в мешанной кодировке),или извените - полное безобразие:))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 17:53:35 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
MiCe Я конечно же соглсен, что на клиенте это делать вещь замечательная. Либо в ХП занимающейся insert в БД клиентов. Так вот каким же собственно методом можно определить что любимому ПЕТЕ №2 нужно сообщить мол есть уже такая хрень, т.е. проца должна определить это и выдать что такой есть и юзай его. Не уж то у вас у всех БД с числовыми значениями и клиентов ваши работники различают по р/с и IdKlient :))) Какие проверки вы делаете перед тем как ввести новую запись. то Мaxx хуже у меня у обоих всё заполнено и по обоим куча документов выписано уже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 18:00:49 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Да ну фиг там(простите),при заполнении проверяеш в ХП все аттрибуты,если двойник сохраняеш в темповую таблу,возвращаеш клиенту данные с просьбой потвердить или чего еще сделать.....ждеш пока клиент думает,дождавшись ответа если да - инсертиш,если нет -делит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 18:07:18 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
у нас схожая ситуация... может поя вится сначала клиент, а уж потом дополнительная инфа .... а при создании нового клиента как я уже говорил поиск на вхождения таких же названий... предупреждения если слово смешанное(смесь кирилицы и латиницы)... обязательное выделение фрмы собственности в отделное поле... абревиатуру ( типа ТД, ПФГ, ...) расшифровывать и выносить так же в отдельное поле(таблицу)... оч много вариантов.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 18:07:50 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
а вот такой вопрос, как клиенту можно выписать счет, документы и т.п., если эти параметры еще не известны? вообще задача совершенно не тривиальная. я бы предложил как вариант на момент ввода некого уникального значения (например, ИНН, р/с, номер паспорта, что угодно)... вываливать пользователю список возможных конфликтов/совпадений. в этом случае можно заставить пользователя выбрать клиента из уже существующих или добавить нового... Если это уникальное значение не вводится, тогда забить на проверку вообще до тех пор, пока оно не будет введено. кроме того, как не крути, придется писать тулзы для объединения уже существующих под разными именами клиентов в одного... Например пЕтЮ_ и пЕТЮ в Петю. Ну и постоянно проверять БД, постепенно избавляюсь от глюков... старых и новых... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 18:13:50 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
согласен... тулз на объединение обязательно нужен... переодический скан(в конце дня,в конце недели...).. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 18:23:29 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
A voobsche-to u kazhdogo predpriyaiya est` registratzionniy nomer, a u kazhdogo cheloveka - nomer pasporta - dostatochno dlya unikal`nosti, po-moemu. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 18:47:16 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
не всегда есть возможность сразу узнать.... приходится исползовать некий докуммент до того как появятся детальная информация... просто таких нужно специально выделять.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 18:50:54 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Это надо решать административными методами. Прежде чем завести клиента в БД надо получить от него исчерпывающую информацию. Кто он, что он и откуда. И самое главное определится с атрибутом который бы однозначно определял клиента. В случае фирмы это ИНН, в случае больницы - № паспорта или медицинского полиса. И проверку вешать на этот атрибут. Название фирмы, как бы точно ты его не ввел, может повторяться: какое-нибудь ООО "Надежда" из Москвы и ООО "Надежда" из Ставрополя вполне может быть. И Ивановых Иван Ивановичей тоже полно. И добавлять его в базу должен не первый попавшийся оператор, а специально выделенный человек. Если же на вводе сидят несколько человек, то в при добавлении надо автоматом записывать информацию кто ввел клиента и когда. В случае дублирования всегда найдется тот, кто это сделал. Я в одной фирме сделал подобную вещь, а директор издал приказ - в случае обнаружения дублей с виновника - 2% от зарплаты. Через неделю проблема была снята. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 19:07:32 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
угу.... ИМХО КЛИНТ ВСЕГДА ПРАВ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 19:19:46 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
На мой взгляд, стопроцентного решения этой проблемы не существует, хотя все посланные ответы помогают решить ее частично. Даже лишение 50% зарплаты может не помочь в случае увольняющегося завтра оператора. Возможны ведь и другие ситуации. Например, какая-то фирма становится правопремницей другой. Пациент меняет фамилию, имя, отчество, пол, адрес, паспорт, а ИНН у него сроду не было, так как это противоречит его религиозным убеждениям. Ко всем данным решениям я бы посоветовал поставить на форме справочника ма-а-ленкую кнопочку - "Слияние". Если кто-то, неважно, сервер ли, по совпадающему ИНН, юзер ли, по знакомой морде посетителя, обнаружил двойников, то нажимается эта кнопочка, выбираются оба двойника и во всех таблицах ID "Второго" заменяется на ID "Первого". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2002, 21:06:36 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Можно как угодно и сколь угодно помогать оператору не вводить инфу второй раз - вплоть до вывода списка похожих названий на основе аглоритма определения похожести звучания названий. И это есть правильно! Еще круче вариант (гы-гы-гы) - отличать их по ИНН, т.к. как я понимаю речь идет о юридических лицах. Вот и сделайте превое поле для ввода - ИНН. И все. Но вообще, если такая проблема уж существует и вдойников навводили - необходимо делать механизм слияния двойников для слияния из в ведомости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 07:30:46 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Да уж, проблемка животрепетная. И своего опыта: определите правила написания организации-например имеем два имени предприятия - краткое(для поиска, отображения) и полное (для отчетов, документов). Краткое пишется без кавычек и правовая форма в конце, например ООО "Ромашка" будет выглядеть как Ромашка ООО. Хорошо помогает избежать ввода двойников на первом этапе - "посмотри, нет ли уже такого в базе", особенно когда инфу заносит несколько операторов. Всегда отслеживайте и показывайте кто и когда завел запись, последним ее редактировал. Очень знаете дисциплинирует пользователя. К сожалению ИНН и номер паспорта (осообенно во времена смены таковых) не являются естественными ключами, да и информация на начальном уровне может быть неполная. К примеру для выписки счета достаточно наименование фирмы, а для счета фактуры данные уже нужны в большем объеме. Еще есть процедура проверки данных, запускается по желанию администратором или пользователем и возвращает сведения о подозрительных данных, неполных сведениях, каких-либо несоответствиях и т.д., вообщем чего бизнес-логика базы данных навеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 08:44:51 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
to: Cat2 Зря Вы так ! на самом деле лишение 50% зарплаты помогает всегда ! Просто надо точно указать кого лишать ... но ето тоже не лучший выход ! Например можно подумать о следующем : Предположим, что речь идет о названии компании ... 1. Запретите вводить название в разных раскладках. 2. Ввод назввания производите в разных формах ввода, например ОАО вводить в водном поле а в другом "Солнечный ..." . 3. Запретите использовать заглавные и строчные буквы. Все ! Это решит проблему .... А как же с названиями, которые могут содержать и то и другое ... ? Да просто : Наделите одного человека правами создания таких названий и все ... Удачи ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 09:18:49 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Polnostyu soglasen s AlexB. Nuzhno razrabotat` opredelonniy tehnologicheskiy protzess i utverdit` ego administrativno. Delal proekti v 3-h kontorah (po 200-300 rabotnikov kazhdaya) - vsyudu pomoglo reshit` bol`shinstvo problem. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 09:36:44 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Вертим круг без точила ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2002, 10:32:12 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#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 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Ниже приведена функция на VB, которая сравнивает две строки и возвращает некий показатель их похожести. Приведения одинаковых по начертанию букв, а также большие-малегнькие нет, но это уже сможет добавить каждый. Под MSAccess если ее вставить в запрос, то на таблице в 15 тыс записей запрос отрабатывал 2-3 сек на Celeron500. Под SQLServer пытался ее реалитзовать, но скорость работы была просто удручающей - на той-же таблице в 15 тыс записей она отрабатывала 5-6 минут :-(( P.S. Это не панацея конечно, но избежать очепяток помогает конкретно. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 13:44:03 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Уже давно доказано, что совершенно разные организации могут иметь совершенно одинаковые названия. Правил заведения организаций в БД могут быть десятки или даже сотни, но я предлагаю один из наиболее правильных, максимально исключающих ошибки. 1. Обязательное введение поля ОКПО. 2. Т.к. далеко не каждый согласится терять клиента только потому что он не знает ОКПО своей конторы, в объекте со ссылкой на клиент в отдельном поле просто вписывается название организации, а ссылка должна указаывать на фиктивного клиента вроде "Клиент без ОКПО". 3. С определенной периодичностью человек, ответственный за ведение справочника клиентов запускает процедурку, берет телефон, обзванивает клиентов, узнает коды ОКПО, передает процедурке, которая в свою очередь доводит объекты с фиктивной ссылкой до ума. И ещё есть рад хороших методов. Не учитесь на своих ошибках - многое придумано за вас! :) Я не дочитал ветку до конца, может кто предлагал подобный подход. Если чего, приношу свои извинения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 17:05:33 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
2АлексейК текста процедурки к сожалению привести не могу, а вот о времени ее работы - пжалста: в справочнике городов с 2 тысячами записей (ну вот так мало их пока) проводился поиск города "Нижний Новгород" - (я там живу, там мой дом...-почти цитата). Дык вот, а всего "Нижних Новгородов" там было 4, а именно: 1. Н.Новгород 2. Н.-Новгород 3. Ниж.Новгород 4. Нижний Новгород Кроме этого, было пару городов нашей, Нижегородской, области, записанных в виде "г. Павлово Нижегородской обл.", еще Нижний Тагил, Новгород (который Великий) и т.д. В результате 2-х (ДВУХ) секундного поиска было выбраны все Нижние Новгороды (правильный и 3 неправильных), все Новгороды и Нижний Тагил, причем Нижний Новгород стоял ессно на первом месте в списке найденных. Затем я решил поискать неправильно набранные Нижние Новгороды, а так же ошибаясь преднамеренно при наборе выражения "Нижний Новгород" ближе к середине (НижнЫй НАвгород и т.д.). Результат по времени такой же, а вот выборка получилась чуть больше... По поводу порядка в головах, пример из собственной практики: на предыдущем месте работы в частной конторе 3 оператора набили за 2 года не больше десятка похожих организаций (когда одна и та же, но записана по разному). А на текущем месте - в НИИ, за 2 месяца тоже 3 оператора таблицу убили так, что ее можно было чистить практически вдвое: максимум я обнаружил 11 (ОДИННАДЦАТЬ) версий одной и той же организации..., еще встречались по 9, 8, 6 и т.д.... я плакал, когда это видел.... причем угрозами и наказаниями не поможешь - уволилось 2 человека, взяли других - лучше не стало...., так что как говорится "кадры решают всё" (не помню кто сказал)... И сейчас у меня политика такая - как можно меньше надо задавать юзеру вопросов (в проге в смысле)- он от них в ступор впадает и не скоро выходит! Как говориться, идеальный вариант - нажал батон - и все само работает... Ладно, чё-то у меня уже словесная диарея началась, пойду домой .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 18:31:24 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Для Garya с его историей про склад. Очень грустная история. Наверное, это был молодой и не опытный по жизни программист. Наверняка теперь он, защищая свой правильный подход, доходит до самого верхнего начальства. Но можно было выкрутится и в описываемом случае. "Хорошо, то, что вы не можете найти в базе, но точно знаете, что оно есть, выписывайте "от руки", но потом, все же найдите и проведите через компьютер". Можно несколько облегчит поиск изделий. Во-первых, можно использовать систему номенклатурных номеров. То есть родственные позиции должны получать номер, начинающийся с определенной комбинации символов. Во-вторых, можно сразу разбит позиции на группы и организовать клиента таким образом, что бы юзер работал с позициями после захода в группу. Намного легче найти кабеля в группе "Кабели", чем в полном списке. Да вот еще. Список остатков должен всегда отображаться на экране! Простой скроллинг может оказаться эффективнее любых, самых изощренных хеш-функций. Большое спасибо Почемучке, который открыл эту очень важную тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 20:36:57 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Я как-то в базе насчитал 12 способов написания улицы Красноярский рабочий. я уж не говорю об улице 665-летия октября :)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 07:31:00 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
По поводу порядка в головах, пример из собственной практики: на предыдущем месте работы в частной конторе 3 оператора набили за 2 года не больше десятка похожих организаций (когда одна и та же, но записана по разному). А на текущем месте - в НИИ, за 2 месяца тоже 3 оператора таблицу убили так, что ее можно было чистить практически вдвое: максимум я обнаружил 11 (ОДИННАДЦАТЬ) версий одной и той же организации..., еще встречались по 9, 8, 6 и т.д.... Вот блин, сколько раз я здесь уже выступил и ни разу меня не поняли. Оператор здесь не причем, разработчик обязан разрабатывать систему так, что бы не давать оператору ошибаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 10:50:58 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что самым действенным способом решения этой задачи ... при введении наименований предоставление оператору списка похожих... естественно должен быть программерский ультра-алгоритм отбора этих похожих наименований и вслед за этим все это должен проверять еще один оператор (этот метод называется послед-контроль). А ваще проблема в том, что мы сравнивает мало информации ... а если бы мы сравнивали и имя и инн и адрес и дату ... то все было бы легче ... я думаю что при сравнении этих четырех можно принимать решение автоматически БЕЗ ЧЕЛОВЕКА ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 11:35:21 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
без человека нельзя.... на ком тогда ответсвенность?... я, лично, на себя таку ответственность не хочу брать.... обсоблемо когда несколько милионов тугриков пойдет не туда.... ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 11:48:18 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
to MiCe ТОЧНО!!!! :) как же нам без Зингельшухера(я не про евреев).... Случись что ... а у нас ни одного Зингельшухера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 11:58:29 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
оператор за то и деньги получает - что правильно выписывает... а вот облегчить ему принятие решения - это другое дело... предаставить ему дополнительную информацию(схожие наменования, текущие остатки, и тд.)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 12:06:09 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
to MarchCat А ваще проблема в том, что мы сравнивает мало информации ... а если бы мы сравнивали и имя и инн и адрес и дату ... то все было бы легче ... я думаю что при сравнении этих четырех можно принимать решение автоматически БЕЗ ЧЕЛОВЕКА ! При такой постановке задачи, еще сложнее принять решение, так как вероятность описки в 4 полях несколько побольше, а если еще есть и адрес, который операторы могли просто напросто не расслышать или записать Нижн. Новгород, вместо Нижний Новгород, другими словами с полями типа автор, ответственное (контактное) лицо и т.п. связываться вообще не стоит даже. Хотя это всего лишь моё мнение. Вот жаль что Denis_Ka не может поделиться с нами своим супер-пупер алгоритмом распознования Новгородов. to Genady Вот блин, сколько раз я здесь уже выступил и ни разу меня не поняли. Оператор здесь не причем, разработчик обязан разрабатывать систему так, что бы не давать оператору ошибаться. Разработчик все учесть не может по определению, так изощренные юзеры иной раз такое выдумают, что и в страшном сне не приснится, а ссориться с начальством об зарубании очердной прихоти пользователей тоже бесконечно не будешь. вот и появляются разные условности, для чего и нужны методы борьбы в сложившейся ситуацией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 12:11:30 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
ту Почемучка ну да .... при 50% совпадении 10 полей мне легче принять решение, чем при 99% совпадении 1-го :) Наверное ... я не претендую на аксиому ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 12:28:49 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Разработчик все учесть не может по определению Разработчик должен учесть все возможные и невозможные ошибки юзера и пресечь их на этапе разработки для этого существуют соответствующие технологии. Впрочем я устал говорить об очевидных вещах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 12:37:11 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
2 Genady Вы были бы абсолютно правы, если бы речь шла о некой идеальной программе. Чтобы было понятнее о чем речь, до некоторой степени эту задачу можно сравнить с задачей о нормализации базы данных. Все знают, что есть 5 уровней нормализации базы данных, однако, в большинстве задач почему не только останавливаются на 3 нормальной форме, но зачастую нарушают вообще все принципы нормализации. Это вовсе не говорит о том, что задачи писали дилетанты ничего не смыслящие в принципах построения базы данных. На это нарушение идут вполне осознано. И причин тому великое множество. То же самое можно сказать о работе со справочниками. Да, можно заставить пользователей вводить ВСЕ (или хотя бы несколько ключевых) полей справочника, но это приведет лишь к тому, что вы получите мусор иного рода. Например, пользователь не знает ИНН организации, так он введет первые попавшиеся циферки, лишь бы программа его пропустила. А искать в последствии записи с неверным ИНН вряд ли кто будет. Лично я думаю, что совсем исключить повторы в справочниках вряд ли удасться. Программно можно лишь несколько уменьшить вероятность их появления. Слишком много тут зависит от конкретных пользователей программы и организации работ (не постановки задачи, а именно стиля работы в организации). А с другой стороны, если в справочнике появились дубли. Соответсвенно, справки и отчеты будут давать неверные результаты. И если пользователи программы не замечают этих расхождений - какие претензии могут быть к программисту? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 13:42:33 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
не с программером проблем не будет ... неee ..... просто выведут за забор в чистое поле ………………... и будут думать что вот какие плохие программы , программисты и больше ни когда не обратятся к SQL. Утрирую конечно … но сплошь и рядом ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 13:53:13 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
MarchCat Риск есть всегда :) Например, в нашей организации довольно долго ко мне приставали с вопросами типа "программа неправильно считает". Т.е. она выдает не то, что они ожидали увидеть. Приходилось садится рядом с ними с калькулятором и показывать, что вот как раз программа-то считает правильно. А вы говорите "справочники" .... :)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 14:04:08 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
2 Genady_. Я очень рад, что на Земле еще есть такие люди как ты. Нет, кроме шуток. Оптимизм - это здорово! К сожалению, с возрастом проходит. Была когда-то плоскою планета, но появился Коперник, Джордано Бруно e t.c., которые-таки скомкали ее в шарик и заставили крутиться. А то! Как бы космические корабли вокруг трех китов-то летали? Честно, нет у меня желания тебя переубеждать. Может быть ты вправду наклепаешь программу, которая при обнаружении двух одинаковых наименований предприятий будет автоматом заставлять перезванивать и задавать дополнительные вопросы (когда пришла заявка по факсу). А если юзер этого не сделает, то будет бить током через электростул-манипулятор. Если же юзер окажется в отпуске, то будет обращаться в телефонную базу, где зафиксировался номер, определенный АОНом по прошлому звонку, автоматом определять его номер с номером на факсе и желать вывод, две это разные организации из разных городов, или из одного и того же. Ежели окажется, что город один и тот же, но телефонные номера разные, то понадобится также автоматом через инет залезть в базу данных ФСБ, сравнить образец голоса, зафиксированный по звонку, выяснить конкретно, что за человек звонил, качнуть послужной список, автоматом залезть в БД организации, в которой (которых, если их несколько) он числится, и перебрать записи приказов на командировки - а вдруг он звонил не из своего города или не из своей организации? И вообще, чего там человеку-то делать? Программа сама задаст все вопросы, все как надо зафиксирует. Где есть сомнения - проверит. Следующий этап - написать программу, которая сама проводит обследование предприятия, составляет пилотный проект и т.д. и т.п. и в конце концов пишет программу автоматизации. А человеки - они в это время нежатся на пляжах с бутылками пива, обрастают жирком и пишут стихи и прозу. Genady_, я тебя люблю! Воплощай в жизнь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 16:00:29 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Подожди лет 15-20, всё так и будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 16:11:12 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
2 Garya & ВладимирМ Насколько я понял, у вас сложилось обо мне мнение как о некоем юноше, который осознал как оно бывает круто если все делать правильно. Отчасти это верно, однако я понимаю прозу жизни, вот сейчас мне приходится возиться с очередным шедевром гениального проектировщика, который не просто создал ненормализованные таблицы а распихал атрибуты одних сушностей по другим. Проблема с которой столкнулся Почемучка, это комплексная проблема, связанная с нехваткой квалифицированных специалистов, таких как бизнес-аналитики, системные аналитики и архитекторы баз данных. Поверьте мне, совсем недавно я так же несерьезно относился к проектированию БД и сталкивался с такими же проблемами, я просто призываю не придумывать супер пупер алгоритмы выявления каких то ошибок в проектах, а для начала изучить существующие технолгии проектирования информационных систем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 20:55:55 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Коллеги!!! Вы о разном говорите!!!! Геннадий вам о том, как надо РАЗРАБАТЫВАТЬ системы, а вы ему - о том что они ничего не понимает.... А ведь он прав - если система чего-то делает не так, значит НА ЭТАПЕ АНАЛИЗА И ДИЗАЙНА чего-то не предусмотрели, где-то не задали вопрос, где-то что-то предположили, а это оказалось неверным. Ошибка, не пойманная на этапе анализа, выливается в 10-кратно более серъезную ошибка на этапе дизайна, в 100-кратно более серъезную ошибку на этапе писания кода и вообще черт знает во что на этапе эксплуатации. Второй вопрос - как исправить то, что уже сделано. На эту тему тут и без меня надавали кучу дельных советов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2002, 02:04:56 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Поделюсь своим опытом решения подобных проблем %) Жизнь большого софта связана с четырьмя группами 1.Программистами 2.Постановщиками 3.Пользователями 4.Начальством (имеется в виду начальство программистов, пользователей, постановщиков) так вот: если уж случилось за двоение данных, которое приведет к потере прибыли предприятия или к любой другой серьезной проблеме… то устранение такой проблемы должно приниматься коллегиально!!! Если решение принято, то все извещаются о том, что будет делаться при исправлении, выверке и сведении данных…а как же о возможных косяках. Если у вас это все прошло то в дальнейшем можете делать все что хотите, на и лучше в выходной день. Специфичность ошибки задвоения данных в том что исправлять ее нужно только программисту а проверять только пользователю(лям). Толку от остальных групп будет мало. И еще … не по теме … подумайте сначала, а потом делайте. Обычно данные страдают не от первоначальной проблемы, а от того что их не думая, исправили. При дальнейшем рассмотрении проблемы первоначальная проблема кажется ерундой по сравнению с тем, что наделали не думая. Алгоритм не привожу, потому что у всех своя специфика … ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2002, 07:19:31 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Были тут у меня выходные и залез я в инет ... просто так посмотреть на форум и осинило меня ! Народ ! Мы говорим о вещах РАЗНЫХ ! Дело в том, что у каждого проекта свой бюджет и свое количество времени отведенное на разработку этого проекта ! короче, я имею ввиду что для проекта, за который платят $1000000 можно придумать алгаритм и реализовать в таком виде , в котором предложил Garya пять сообщений назад , если же за проект говорят только спасибо , то и то что поставщики вообще сохраняются радоваться надо ! Это я к тому, что ненадо придумывать супер бупер авторизацию для текстового редактора, ну и конечно не следует на сейф вешать замочек китайского производства ... (а теперь к теме) Наверно надо оценить, а следует ли вообще что то делать ! алгаритм алгаритмом, а дело делом. У каждого есть свои условия, в которых каждый человек (и программа) работает, в некоторых случаях имеет смысл сделать крутой алгаритм, в некоторых дать по шапке сотрудникам ... При этом отношение должно быть (на мой взгляд) чем больше платят операторам и программистам, тем более гибкой (и умной) должна быть программа, чем меньше , тем проще ... и от этого никуда не деться .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2002, 19:23:46 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Проблема зашла слишком далеко... если рассматривать детально, где могут помешать двойники, она решается э л е м е н т а р н о . -бухгалтерия Проблема 1. Выпишут счет на одну организацию (в базе данных), а отрузят другой? Ответ.- у вас есть идентификатор счета, вот и дерзайте. Зачем нам точное название организации?? Проблема 2. В справочник предприятий добавлено 500 новых записей, а отгружено по 3 новым адресам. Сколько у нас новых клиентов? Ответ. 3! Таким образом к справочнику предприятий нужно относиться как к функции автозаполнения адресов в Интернет эксплорере... А вот если Ваша функция подскажет, что товар по счету 3395 для ООО Пупкина ИНН:1111111111, отрузить за счет средств переведённых по счету 8893 от ООО Пупкина ИНН:1111111111, тогда Вам и по голове... ВЫВОД: Проблема довольно интересная с точки зрения головоломки или задачки по программированию, но в реальной жизни имеет свою область жизни, и чаще всего простое решение. Потомуто бухгалтера разбераются с этим без всякиз консилиумов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2002, 05:08:08 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
У кого есть мысли ... начните тему по новый. PS не катит выкачивать 70 сообщений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2002, 05:34:26 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
До чего же все просто! А теперь представьте ситуацию. ВЫ (ну то есть конкретно ВЫ ) выписываете счет по телефону на сетевую карточку. А у вас начинают спрашивать ИНН, ОКОНХ, номер паспорта и год вступления в ВЛКСМ. Товарисчи! Поднимите указатель мыши те, которые на память помнят свой ИНН (я, кстати, помню, но считаю себя исключением из общего правила) и кого подобные вопросы не поставят в тупик. Есть простые-элементарные законы рынка. Счета выписывают там, где сделать это проще без лишней (ДЛЯ КЛИЕНТА лишней) головной боли. Итог - вы выписали счет НЕ в той фирме, которая задает лишние вопросы, а в той, которая их не задает. И идете в бухгалтерию с этим счетом. А вот есть ли деньги на расчетном счете - это уже не ваша головная боль. А их-то как раз и нету. Зато есть огромные суммы задолженностей ваших контрагентов. Бухгалтерия самостоятельно связывавется с менеджером, который контролирует конкретную задолженность, и просит написать письмо, чтобы наш должник оплатил наш счет вместо нас - и менеджер отправляет такое письмо вместе с копией счета. Дальше еще интереснее. У нашего должника тоже нет денег на счету, но много своих должников. Он переадресовывает счет уже своему должнику. Оплатит этот счет должник должника должника должника нашего должника :))). А теперь переносимся в компьютерную фирму, которая выставила счет на оплату. Получает она платежку с некоторой суммой, в назначении платежа которой нет ссылки на номер счета (ну нет, и все тут), зато есть ссылка на три номера письма о взаимозачете между фирмами "Ропыта и копыта", "Рога и кога" и "Рожки да ножки". А счет выписывался на фирму "АЗОТ". А теперь вопрос для Genady. Что конкретно должна сделать программа, чтобы она догадалась привязать пришедший платеж к выставленному счету на фирму "АЗОТ"? Это не надуманная ситуация, а очень даже реальная. И таких (или подобных) ситуаций огромное множество. Вы проводите обследование - и на них наталкиваетесь. Задаете вопрос - как с этими ситуациями борются в доавтоматизационную эпоху и получаете ответ - а кто как. И это действительно зависит от добросовестности и исполнительности конкретного коммерсанта. Один предпочтет свалить такие платежи в кучу нераспознанных платежей до момента, когда разгневанный клиент сам не позвонит и не прояснит ситуацию. Другой начнет обзванивать 10 клиентов, которым выставлялся счет на ту же сумму. Есть еще третий, четвертый и пятый метод, но они обычно задействуются, если у полученной суммы ну очень много нулей. А решение принимается интуитвно-индивидуально. И за мучение руководства вопросами по поводу прояснению того, а как же это все на самом деле должно делаться, можно весьма и весьма поплатиться. Не барское это дело - вникать в структуру дорожной пыли. Этим занимаются менеджеры среднего (и прочих звеньев) и тоже на индивидуально-интуитивной основе. И алгоритм принятия подобных решений загнать в программу в принципе невозможно. Тфу-тьфу-тьфу! Все-таки скатился на переубеждение! Прямо-таки инквизитор (святой - ха-ха-ха). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2002, 10:53:41 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
А вот кто еще из вас работал с оптовой фирмой, имеющей сеть реализаторов (магазинов, с которыми заключены партнерские соглашения)? Продукция/товар отгружается реализатору на основе договора, в котором указано, что отгруженные ТМЦ должны быть либо реализованы, либо возвернуты в течение такого-то срока. Отгрузили раз, вдва, пять, десять. Все одно и то же, да по разным ценам. А реализатор периодически делает платежи, причем получаемые суммы из сумм отгруженного ранее ну никак не складываются. Ну прикинули они, что должны нам что-то около 50 тыс.рублей, а в наличии есть только 20 тыс. рублей. Сделали платежку скопом на 20 тыс.рублей... А ты - бухгалтер, которому этот платеж пришел (даю установку, Кашпировски копирайт). Внимание! Нужно определить, что из отгруженного КОНКРЕТНО оплачено, а что нет. Причем так, чтобы реализатор потом не возникал, что ему штрафные санкции начислены, и чтобы от 20 тыс.рублей не осталось копеек, подвисших в воздухе. Распределили? Молодец! А теперь получите акт о возврате товара, который реализатор в срок не смог реализовать и который числится у вас проданным. Нет, ну как же! Конечно же реализатор обязан в срок подавать отчет комиссионера, акт, спецификацию или что-то подобное. Но некогда ему. У него лишних бумагомарак нет и не предвидится. И дает он эти акты с опозданием в несколько месяцев и после назойливого жужжания в ухо. А ведь реализатор - это не собственное подразделение. Его на подоконнике не построишь и зарплаты не лишишь. Можно, конечно, вообще отказаться от его услуг (как мы и стали делать, и в итоге перестали работать с реализаторами вообще). Рынок, братцы мои, под реляционную теорию, далеко не всегда подстраивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2002, 11:15:05 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Что конкретно должна сделать программа, чтобы она догадалась привязать пришедший платеж к выставленному счету на фирму "АЗОТ"? Любая автоматизация подразумевает реорганизацию бизнес процесса, задача бизнес аналитика убедить руководство, что текущее положение дел ему не выгодно. В общем я здесь дальше появляюсь только в режиме read only. Так как либо я плохо доношу свою мысль, либо меня не слушают, впрочем не все. Спасибо за внимание. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2002, 11:24:41 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Genady, ты на меня не сердись. Я очень и очень долго думал так же как ты. Только жизнь вносит свои коррективы. Начальство - люди весьма и весьма занятые. И очень оне не любят, когда им задают вопросы, которых штук этак примерно 5000, в которых нужно разобраться и четко описать (или хотя бы устно кому-то высказать), что и в каких ситуациях должен делать конкретный человек. Ситуаций-то море! Самый дружелюбный ответ - отстань, такие ситуации бывают редко. Да, редко. Но бывают! Достаточно только одной этой самой редкой ситуации, с которой программа не сможет справится, чтобы тебя закидали тухлыми помидорами. И еще. Любая автоматизация - не самоцель. Это средство облегчить труд людей. Если же процесс автоматизации совпадает с процессом наведения порядка в бизнес-процессах как таковых, то труд некоторых людей может стать не только не легче, но и гораздо труднее чем до атвоматизации. Конкретный пример: Отгружали раньше со склада сложное техническое оборудование гуртом. Заводские номера не записывали. Наступила эра автоматизации - навели порядок. Теперь перед тем, как загрузить (или разгрузить) три железнодорожных вагона с железными бревнами (каждое килограмм 300), кладовщик обязан перевернуть такое бревно, найти на нем шильдик и списать с него данные. Кроме того, должен взять отвертку, открутить N болтов на крышке, извлечь из-под нее техпаспорт (если он есть :) ) и сверить, а сходится ли заводской номер на шильдике с указанным в техпаспорте (должен сразу сказать, что не всегда сходится, и не всегда техпаспорт есть). Результат автоматизации - грузчики, ворочая железные бревна, постепенно увольняются или накачиваются как Шварценегеры. Вагоны грузятся/разгружаются в 10 раз медленнее, чем раньше. Суммы за простой вагонов, штрафы на просроченную отгрузку и т.п. раз в 100 превышают прежние убытки от возвратов по гарантии "не своего" оборудования. Так стОит ли игра свеч? Выходит, что не всегда наведение порядка экономически оправдано. Genady, в споре рождается истина. Ничего личного. А твой оптимизм мне даже очень симпатичен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2002, 11:48:53 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Ладно, фиг с ним напишу все таки. :-) Genady, ты на меня не сердись Я могу сердиться только на явные наезды, таковых от тебя не поступало. :-) Выходит, что не всегда наведение порядка экономически оправдано. Это смотря как наводить, про пример с бревнами мне нечего сказать, т.к. не знаком со спецификой, но думаю что навести порядок там можно было, но скорее всего в другом месте а не на разгрузке. А твой оптимизм мне даже очень симпатичен. Не оптимизм это, просто мне чаще всего достается наследство, вот и хотелось бы что бы люди разрабатывающие свои системы больше думали, тогда и у них и у меня геморроя будеть меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2002, 12:14:23 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Тема разраслась уже до неприличия. Видимо, задела за живое... Genady Ваш подход к проблеме лично я считаю абсолютно правильным. Только, как мне кажется, Вы кое-что воспринимаете как само-собой разумеющееся и не требующее пояснений. Как Вы совершенно правильно написали, начинать написание программы надо с разработки бизнес-логики. Т.е. строго говоря, это даже еще не программирование, а элементарное наведение порядка в организации. При этом, Вы исходите из предположения, что: 1. Заказчик заинтересован в наведении порядка 2. Вы независимы от заказчика. Т.е. в любой момент можете повернуться и уйти. К сожалению, лично я не могу сказать, что в моем случае выполняются оба этих условия. Как правило, заказчик ставит вопрос так: Автоматизируй, то что сейчас есть, а некоторые случаи, вообще автоматизировать не надо. Подводя краткий итог, можно сказать, что поставленная задача сотоит из 2 частей: 1. Организационная 2. Программная При этом, организационная часть более важна чем программная. Поскольку, правильной организацией работы можно свести к минимуму повторы даже при полном отсутсвии контроля со стороны программы. Но если заказчик не заинтересован в наведении у себя порядка, то никакая программа ему не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2002, 13:59:01 |
|
||
|
убей двойника
|
|||
|---|---|---|---|
|
#18+
Это точно. Как говорил мой первый шеф, автоматизированный бардак - бардак вдвойне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2002, 14:01:42 |
|
||
|
|

start [/forum/topic.php?all=1&fid=46&tid=1821209]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 362ms |

| 0 / 0 |
