powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Привязка к единому названию
25 сообщений из 30, страница 1 из 2
Привязка к единому названию
    #34963380
Delphinarium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем и безлимитного!

Возникла такая проблема. В БД по медикаментам есть записи типа:
Антиполицай,таб,№2
Антиполицай таб № 2
Антиполицай, таб № 2

Естественно для железяки это разные названия, но фактчески одно и тоже. Как привязать к единому названию, может запрос какой-то сформулировать или как? Ума не приложу. Парсинг возможен но очень не хотелось бы, потому что вариантов написания уйма...

Помогите советом или решением, очень надо!!!
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34963420
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphinariumАнтиполицай,таб,№2

нет решений, кроме ненужных за нужные деньги.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34963421
Baykin Ilya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эти все названия записаны в одной колонке в БД ?

У Кодда есть 1 НФ, которая говорит, что данные в одном столбце в БД должны быть атомарны! То есть, грубо говоря, фамилимя и адрес клиента должны хранится в разных столбцах (ну или имя и фиамилия клиента).

Насколько я понял, в данном примере данные должны хранится в 3 столбцах.
Код: plaintext
1.
2.
3.
Название     | Форма выпуска | Дозировка? (или что-то вроде...)
----------------------------------------------------------------
Антиполицай  | таб           | № 2

А выполняя запрос, вы просто соединяете нужные вам столбцы в БД, используя нужный символ разделителя.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34963425
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baykin IlyaЭти все названия записаны в одной колонке в БД ?

У Кодда есть 1 НФ, которая говорит, что данные в одном столбце в БД должны быть атомарны! То есть, грубо говоря, фамилимя и адрес клиента должны хранится в разных столбцах (ну или имя и фиамилия клиента).

Насколько я понял, в данном примере данные должны хранится в 3 столбцах.
Код: plaintext
1.
2.
3.
Название     | Форма выпуска | Дозировка? (или что-то вроде...)
----------------------------------------------------------------
Антиполицай  | таб           | № 2

А выполняя запрос, вы просто соединяете нужные вам столбцы в БД, используя нужный символ разделителя.
не хочу Вас поучать, но все же... поближе к жизни, подальше от бульварной прессы. Это только мое мнение, так сказать имхо.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34963454
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphinariumДоброго всем и безлимитного!

Возникла такая проблема. В БД по медикаментам есть записи типа:
Антиполицай,таб,№2
Антиполицай таб № 2
Антиполицай, таб № 2

Естественно для железяки это разные названия, но фактчески одно и тоже. Как привязать к единому названию, может запрос какой-то сформулировать или как? Ума не приложу. Парсинг возможен но очень не хотелось бы, потому что вариантов написания уйма...

Помогите советом или решением, очень надо!!!


1. сгруппируйте первично по некоторой функции сходства
2. предоставьте утилиту, которая дат возможность пользователю выбрать основное значение и дубликаты
3. Удалите дубликаты
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34966056
anjey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парсинг к сожалению невозможен :( , в смысле, что бесполезен.
Придётся посадить человека, который выправит этот ваш справочник, как посоветовал drev
А на будущее попробуйте использовать штрих-коды, для того что бы в справочнике не плодились названия-дублёры... (хотя всё равно же будут ;) )
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34966101
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Помогите советом или решением, очень надо!!!

Немедленно уволить архитектора этой поделки. Нанять нормального человека.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34966446
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решать Вашу проблему имеет смысл если только Вы готовы поработать и привести данные к 3 нормальной форме.
Иначе - все будет впустую (никто из разработчикао БД не производит нормализацию специально - если Вы знаете что такое нормальные формы - структуры получаются хорошие практически сами собой - и это не бульварные романы или как там у Вас).

Если Вы готовы - пожалуйте.
Добавьте в "отвратительную" таблицу суррогатный ключ.
Создайте, наконец, боее-менее хорошую таблицу.
Создайте перекодировочную таблицу которая переводит сурогатный ключ в ключ хорошей таблицы.

Дальше работа практически ручная. Можно рекомендовать добавить в исходную таблицу сторковое поле, в которое переписать наименование без пробелов, точек, запятых, тире и тому подобных символов. Это поможет сравнить несравнимое.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34966540
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delphinarium

Помогите советом или решением, очень надо!!!

Увы, вас ждёт тупая ручная работа. Для выявления такого рода дублей я пользовался следующей методой.

1. Писал функцию f, которая преобразует большинство дубликатов к такому виду, чтобы в результате агрегирования в большинстве случаев строки с дубликатами располагались в одной группе. Группа, в которую входит более одного уникального названия является подозрительной.

В частости Вам можо в функции f удалить из названий все пробелы и пунктуацию, символы типа № и т.п., поднять регистр.

select f(dd), count(distinct dd)
from t
where <отбираем подмножество, на котором функция f хорошо работает>
group by f(dd)
having count(distinct dd) > 1

2. Из полученного списка удаляем ложные срабатывания, остальные преобразуем в команды update.

3. Просто получаем упорядоченный список всех (или подмножества) значений и просматриваем его глазами на предмет невыявленных косяков. Опять таки сортировать можно не только тупо по исходному значению но и по функции от него. Например в такой функции можно отбросить или переместить префиксы, и т.п. подстроки, в которых встречается больше всего ошибок и на передние позиции поместить наиболее "стабильные" подстроки. Для просмотра можно написать процедуру, которая будет оценивать похожесть каждой следующей строки в списке на предыдыщую и выдавать похожие строки.

В ощем такая вот процедура...

Могу ещё добавить, что качество данных зависит от их использования. Если единообразное написание названий медикаментов не является критичным для функционирования вашего бизнеса, то хоть убейся, ошибки будут накапливаться. Для устранения ошибок нужна обратная связь. Хорошо, когда она является естественной, т.е. есть люди или механизмы которые в процессе полезной работы выявляют и исправляют ошибки. Если таких людей нет, то придётся заниматься этой работой в рамках непроизводственных процессов. Так сказать, периодически проверять и восстанавливать целостность БД.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34966570
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baykin IlyaЭти все названия записаны в одной колонке в БД ?

У Кодда есть 1 НФ, которая говорит, что данные в одном столбце в БД должны быть атомарны! То есть, грубо говоря, фамилимя и адрес клиента должны хранится в разных столбцах (ну или имя и фиамилия клиента).

Насколько я понял, в данном примере данные должны хранится в 3 столбцах.
Код: plaintext
1.
2.
3.
Название     | Форма выпуска | Дозировка? (или что-то вроде...)
----------------------------------------------------------------
Антиполицай  | таб           | № 2

А выполняя запрос, вы просто соединяете нужные вам столбцы в БД, используя нужный символ разделителя.

Как то вы плохо читали Кодда. Если у автора домен является множеством именно таких вот назнаний медикаментов, то и нарушения атомарности в этом нет, поскольку атрибут содержит только одно полное название медикамента.

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

Паконец, у автора не стоит задача перекраивать БД, а если и встанет, то чистка данных всё равно потребуется.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34966880
Tosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphinariumВозникла такая проблема. В БД по медикаментам есть записи типа:
Антиполицай,таб,№2
Антиполицай таб № 2
Антиполицай, таб № 2

Проведи анализ - если у тебя действительно разделителем является запятая всегда и везде - тебе повезло - от этого ипляши ... а вообще в ветеке по SQL Server уже подобный вопрос от пользователя "Аленочка" был - можешь поискать - там много интересного было
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34967444
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё в мире сделано до нас
http://www.sql.ru/forum/actualthread.aspx?tid=319685&pg=4&hl=xml?#2960843

/topic/319685&pg=5&hl=xml#2961028
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34973720
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме приведения БД к нормальности есть еще проблема ОРГАНИЗАЦИИ ввода и контроля данных.

Можно слишком пережать процедуру, вводить данные будет сложно и люди будут этого боятся.
Можно, наоборот, предоставить полную свободу, когда появляются приведеные строки.
Организовать по ходу процедуры ненавязчивую проверку, старающуюся подобрать подходящие данные, вовремя переспросить или промолчать - это искусство.

ОЧЕНЬ полезно периодически перетряхивать справочники, выявлять и давить дубликаты.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34986575
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К слову.

Как бывший фармацевт ;-) утверждаю, что писать "Антиполицай таб №2" - неверно.
Надо писать "Антиполицай таб N2", потому что это не символ "Номер", а сокращение от латинского Numero (в количестве).

Бе-бе-бе ;-)
________
Не дадим распространиться заразе политкорректности!
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34986717
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Надо писать "Антиполицай таб N2"

Правильно. Внимание, вопрос: какая дополнительная структура данных нужна, чтобы можно было адекватно регистрировать "Антиполицай таб N2"? ;)
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34989480
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уж не про единый ли городской классификатор уважаемый guest_20040621 сейчас говорит?
Или про "Гармед" от фирмы "Гарант" (там типичнейшая схема "звезда" была)?
________
Не дадим распространиться заразе политкорректности!
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34989601
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> не про единый ли городской классификатор

Нет. Боюсь, я не видел устраивавшей меня реализации. Вопрос - теоретический.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34989614
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Надо писать "Антиполицай таб N2"

Правильно. Внимание, вопрос: какая дополнительная структура данных нужна, чтобы можно было адекватно регистрировать "Антиполицай таб N2"? ;)

Иметь set всех названий вполне достаточно.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34992924
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> не про единый ли городской классификатор

Нет. Боюсь, я не видел устраивавшей меня реализации. Вопрос - теоретический.Ну... на теоретический вопрос, боюсь, я ответа дать не смогу. Тут ведь много сугубо практических факторов вмешивается. О них и буду рассуждать.

Вот взять, например, популярный фармацевтический справочник Видаль. За основу, в смысле, взять. Так там только одних классификаций лекарственных препаратов несколько штук разных. По фармакологической группе, по фармакокинетической, по еще каким-то признакам (сейчас уже не вспомню, каким именно, давно вышел из этого бизнеса).
Далее, есть производители, торговые (брендовые, патентованные) наименования, "общечеловеческое" название (хорошо если активный компонент в таблетке один, а если несколько?), аналоги других производителей, формы выпуска, типы упаковки, дозировка, количество доз в упаковке и т.д.

Ну а на практике многое из этого для описания номенклатуры оказывается ненужным. Например, я никогда не мог отличить блистера от контурно-ячейковой упаковки - да даже и аптекам, наверное, один хрен, в блистерах таблетки или в контурных ячейках.
Если речь идет о таких ходовых и дешевых препаратах обязательного ассортимента, как активированный уголь, то, конечно, у клиентов аптек может быть предпочитаемый производитель, но при отсутствии у дистрибутора этих таблеток аптека возьмет уголь любого другого производителя. Если же речь идет о брендовых препаратах, которые производятся строго в одной форме, дозировке и упаковке, то для описания вообще может оказаться достаточно только наименования. А если это аэрозоль 50 мл, то на упаковке может также стоять пометка "200 доз" - так это можно указать, а можно и опустить, провизоры и сами знают, сколько там доз.

На практике все дистрибуторы пришли к тому, что препараты в их прайсах называются примерно одинаково, наименование состоит из примерно одного и того же (в общем, неполного, с точки зрения Видаля, но достаточного для ведения бизнеса) набора сегментов. В их справочниках позиций сегменты, как правило, располагаются в одном и том же порядке, но заводятся с отличиями, например, таб - таб. - табл., наличие/отсутствие пробелов и т.д.

Я всегда был сторонником того, чтобы крупные дистрибуторы договорились о принятии единого справочника (хотя бы того же ЕГК, за неимением чего-то лучшего). Это бы дало возможность во многом облегчить жизнь всем игрокам на этом рынке, ну и ИТ-шникам, в том числе. Даже выступал с этим призывом на одной из конференций, устроенной одним из крупных региональных игроков, куда пришли представители "большой четверки" фармдистрибуторов (состава того момента, с тех пор прошло уже более 5 лет). К сожалению, в ответ на этот призыв народ покивал-покивал, с тем и разошлись.

А для сравнения номенклатуры с конкурентами я поступал примерно как сказал mcureenab - имел простой set всех названий, который регулярно дополнялся, а маркетологи проставляли соответствие новых вхождений с несколько урезанной версией ЕГК. Поскольку препараты нашей компании также обязательно сопоставлялись с этим справочником, этого было вполне достаточно.
Ну а для снижения уровня помех я перед сравнением формировал "ключ" по хитрому алгоритму с отбрасыванием незначащих символов и конвертированием кириллицы в латиницу (последнее зачем-то надо было, сейчас уже не помню, зачем, вроде, практика показала, что такой ключ для моих условий давал более надежное сравнение), ну и кое-какими еще семантическими приемами.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34992945
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Urri, я полагал, что Вы будете рассуждать в контексте упаковок, форм выпуска и дозировок. С именами, аналогами, действующими веществами все просто. А вопрос назвал теоретическим с тем, чтобы попробовать обобщить понятие "упаковка" с целью унификации использования (в частности, с ограничением в виде "форма выпуска"). В свою очередь, для того, чтобы иметь возможность сравнения эффективной стоимости в пересчете на действующее вещество.

> для сравнения номенклатуры

Да, это понятно.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34995274
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621

> для сравнения номенклатуры

Да, это понятно.

Так вопрос в том и заключался. А всякие расчёты-пересчёты это как бы не в тему, тем более, что содержимое упаковки может быть очень слабо связано с её названием.
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34995493
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чисто теоретически, и такой вопрос имеет право на существование. Но я, если откровенно, не до конца его понял. Прошу точнее поставить задачу, а там и потеоретизируем.
________
Не дадим распространиться заразе политкорректности!
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34995528
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Чисто теоретически

Как раз наоборот, с практической точки зрения. ;)

> точнее поставить задачу

Какой из препаратов имеет наименьшую стоимость действующего вещества (остальные условия для простоты можно опустить)?
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34995601
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С практической точки зрения это бесполезная информация ;-)
Ну кому от этого польза будет, знать, что вот в этой пачке ацетилсалициловой кислоты 1 ее грамм стоит дешевле, чем в другой? А если та, другая - проверено - не помогает? (Вспомним Жванецкого, CH3C2H5 на пару - не помогает).
Впрочем, стоп! Нет, все-таки можно практически эту задачку применить. Представим, у нас гособеспечение льготников по обязательному списку, а государство возмещает по фиксированным ценам, вот тут-то исполнителю гособеспечения для максимализации своей прибыли и надо минимизировать цену за дозу. И, кстати, задача с упаковкой и правда может вылезти. Например, государство положило льготнику 20 доз на рецепт, а минимальная стоимость оказалась в пачке с 30 таблетками. Ну, можно раздеребанить пачку на 3 блистера по 10 таблеток - и льготникам отдавать по 2 блистера на рецепт. Ну и миллиграммы разные тоже могут быть - не помирать же больному, если нет доз по 400 мг, но есть дозы по 200 мг - их просто надо взять вдвое больше. Но потом задача отчитаться возникает - покупали-то по 30 таблеток, а реализовывали по 20. А тут - дроби могут появиться. Количество полученного в результате округлений может стать не равным количеству реализованного.
Короче говоря, чтоб дробей не было (количественных, суммы все равно скорее всего округлять придется), можно основной единицей измерения в информационной системе принимать как раз 1 дозу (или большее количество доз, но только когда их нельзя поделить и использовать отдельно - т.е. не делимую на более мелкие элементы). А оборот строить на производных единицах, которыми и являются пачки.
Таким образом, наша задача вырождается опять-таки в пересчеты ЕИ. А это мы уже обсуждали, в другом топике.
________
Не дадим распространиться заразе политкорректности!
...
Рейтинг: 0 / 0
Привязка к единому названию
    #34995617
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Ну кому от этого польза будет

Любому, у кого будут такие данные. Курс лечения - х условных единиц действующего вещества, оптимальными с точки зрения цены будут [] препараты.

> если та, другая - проверено - не помогает?

Цена - не единственный критерий, я это специально подчеркнул.

> можно основной единицей измерения в информационной системе принимать как раз 1 дозу

Боюсь, что нельзя. Вопрос - он только на вид простой. ;) Нужны дополнительные суррогатные единицы.

> задача вырождается опять-таки в пересчеты ЕИ

Да нет, едиными классификаторами даже не пахнет. Фишка в том, что критерии оценки могут быть сколь угодно сложными. Причем, для ЛС наиболее простое и очевидное решение. ;) Вот с диагностикой, например, все будет сильно интереснее.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Привязка к единому названию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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