|
|
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
> Структура (читай, структура справочника) лекарственных препаратов > по льготному обеспечению с момента выхода в начале 2005 года менялась 5 !!!! раз. Структура данных справочника осталась неизменной (если это не так, значит, изначально она была построена плохо). Изменилась классификация. И здесь нет ни одной проблемы. Классификация - это типовая задача, имеющая типовые же решения. Изменение любых классификаторов может носить темпоральный характер, - решение также типовое. Видите ли, в чем дело: иногда я даже предположить боюсь, откуда люди, проектирующие базы данных (причем, очень не маленькие и отнюдь не для персонального применения), черпают свои знания. Иногда есть ощущение, что основной источник - надписи на заборах или бабки на скамейках. Любая ошибка, публично описанная в форуме, книжке, статье, тиражируется с тем большей готовностью, чем она глупее. Такой вот парадокс. > специально для голубоглазых брюнетов (вводится два параметра: цвет глаз и цвет волос) Н-да... собственно, для этого случая написан абзац выше. Цвет глаз и цвет волос - обычные характеристики стандартных органов человека и нет ни одного повода не использовать их для построения ограничений наравне с другими такими же характеристиками или их производными. Вот если бы нацпроект в качестве ограничений использовал... хм... ну, например, членство в партии, - тогда да, структуру данных нужно было переделывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2006, 03:37 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
guest_20040621<...>Ни о каких кривых EAV речь идти не должна. Ы? IMHO EAV и связанные с ней "скрипты" нужны просто для того, чтобы пользователь сам мог изменять структуру своих данных. При этом количество задач по поддержке (не столько трудных, сколько рутинных), которые ложатся на разработчика, становится меньше. Почему бы не дать пользователю возможность модифицировать таблицы напрямую? Т.к. это слишком мощное и гибкое средство, которое может позволить пользователю разрушить систему до основания. В случае же использования EAV для того, чтобы восстановить систему, вегда достаточно просто удалить пользовательские настройки. guest_20040621 Видите ли, в чем дело: иногда я даже предположить боюсь, откуда люди, проектирующие базы данных (причем, очень не маленькие и отнюдь не для персонального применения), черпают свои знания. Иногда есть ощущение, что основной источник - надписи на заборах или бабки на скамейках. Любая ошибка, публично описанная в форуме, книжке, статье, тиражируется с тем большей готовностью, чем она глупее. Такой вот парадокс.<...> В моём понимании система, которая построена по ошибочному подходу, не работает и/или не приносит прибыли (не обязательно бухгалтерской). А "изящность", "алгоритмическая правильность", "типовое решение" - очень субъективные понятия, напрямую не связанные с решением системой поставленных перед ней задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2006, 15:27 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Извините, AlexTheRaven, дискуссии с дилетантами, как я уже говорил, мне не интересны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2006, 17:10 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
guest_20040621Извините, AlexTheRaven, дискуссии с дилетантами, как я уже говорил, мне не интересны. Дружище, вы просто не можете аргументировать свою точку зрения - и потому говорите, что это вам неинтересно. А личную компетентность нужно доказывать пользователям (и ещё иногда заказчикам с работодателями) - но не коллегам, и уж точно не участникам форума. Господа, извините за оффтоп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 11:33 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
> вы просто не можете Отнюдь. Я просто не хочу. Я не хочу рассказывать, почему именно FreeBSD - это не энтерпрайз операционная система. Я не хочу тыкать Вас носом в HCL FreeBSD и списки рекомендованных ОС на сайтах SUN, IBM, HP, SM, Fujitsu, Dell и прочая, прочая, прочая. Не хочу. Потому как считаю это бессмысленным занятием. Точно так же и сейчас: я не хочу убеждать Вас в том, что Вы несете полную чушь, - потому как это тоже бессмысленное, долгое и не интересное занятие. Извините. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 13:07 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven guest_20040621<...>Ни о каких кривых EAV речь идти не должна. Ы? IMHO EAV и связанные с ней "скрипты" нужны просто для того, чтобы пользователь сам мог изменять структуру своих данных. При этом количество задач по поддержке (не столько трудных, сколько рутинных), которые ложатся на разработчика, становится меньше.То, что программистам интересно в очередной раз изобретать велосипед никаких сомнений не вызывает. А вот добавление нового атрибута, который не поддерживается системой, практически никаких плюсов по сопровождению не предоставляет. AlexTheRavenПочему бы не дать пользователю возможность модифицировать таблицы напрямую? Т.к. это слишком мощное и гибкое средство, которое может позволить пользователю разрушить систему до основания. В случае же использования EAV для того, чтобы восстановить систему, вегда достаточно просто удалить пользовательские настройки.Разрушить систему добавлением полей в таблицы - это, IMHO, надо постараться. Другое дело, что добавленное поле не появится в клиенте без неких дополнительных усилий, но, с одной стороны, эта задача вполне решаема, а с другой стороны, система становится управляемой, получает прозрачную (и самодокументируемую) структуру. Кстати, в случае с EAV, удаление пользовательских настроек без разрушения системы не вполне тривиальная задача, которую можно решать только понимая как предметную область, так и подход, применяемый EAV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 22:08 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Вы, PL99, узковато понимаете глобальные задачи проектирования. Какой функционал должен обязательно быть заложен в любую проектируемую базу данных? Возможность ее эволюционного развития, возможность агрегации данных нескольких экземпляров базы данных, возможность ее интеграции в комплексные информационные системы. Для случая проектирования баз данных официального применения (здесь говорили о социальном страховании), последний пункт принимает стратегически важное значение. В первую очередь поэтому ни о каких извратах в виде не реляционных структур разработчику даже думать категорически нельзя. Если бы эти простые принципы соблюдались, и если бы информационными технологиями в стране рулили не полные бараны, давно была бы возможность построить комплексную информационную систему любого уровня, и проблемы, которые пришлось бы при этом решать, носили бы исключительно технический характер. Пока, к сожалению, я вынужден читать об элементарных ошибках тех, кто пытается проектировать такие базы данных. Конечно, я понимаю, что 90% наиболее квалифицированных разработчиков, говорящих на русском языке, проживают за пределами РФ, я понимаю, что проектированию баз данных, в общем, нигде и не учат, - но есть куча источников, которыми можно руководствоваться при решении любых проблем проектирования. К базам данных корпоративного уровня сказанное относится, пожалуй, даже в большей степени. Потому, что относительная цена ошибки выше. Выше в том смысле, что плохо спроектированную базу данных МИД, например, государство переживет. А вот криво спроектированная учетная софтинка вполне может помочь лавчонке загнуться: что такое налоговые претензии, полагаю, объяснять не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 02:45 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
новый гостьв чем смысл предоставления пользователю приложения возможности добавления новых атрибутов, если он не сможет эти новые атрибуты обрабатывать? Я что, непонятно объяснил ? С помощью стандартных функций пользователь получает возможность обрабатывать и новые атрибуты и вообще любые новые объекты. В этом и состоит главное преимущество EAV: не просто добавить новый атрибут, но и дать возможность с ним работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 09:38 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
новый гость модВсе очень просто: есть заранее написанные функции для доступа к любым (и новым и старым) атрибутам сущностей (даже еще не существующих). Эти функции используются везде: в обработчиках, в отчетах, в формулах и т.д. Т.о. можно добавлять новые сущности и (или) атрибуты и тут же их использовать.Функция доступа, извлекающая значение тривиальна, поэтому интереса не представляет. Вопрос был сформулирован иначе - в чем смысл предоставления пользователю приложения возможности добавления новых атрибутов, если он не сможет эти новые атрибуты обрабатывать? Petro123 новый гость вы путаете 2 вещи: - EAV позволяет легко добавить новый атрибут пользователем, но не имеет никакого отношения к новой бизнес-логике по его использованию. За исключениме того, что в запросах SELECT пользователь его увидит автоматом, т.к. он не в полях, а записях. Бизнес логика с пособиями одинаково пишется что в EAV что в ROT.... (где-то же надо писать про добвленную колонку разрез-глаз)Не путаю, в том-то все и дело. Именно поэтому и спрашиваю - откуда такой восторг по поводу этого подхода, если плюс у него только один - "в запросах SELECT пользователь его увидит автоматом"? Обработка-обработке рознь. Есть куча учётных задач, где обработка сводится к SELECT UPDATE DELETE атрибутов добавленных пользователем во время эксплуатации БД. Обычно ссылаются на EAV при справочнике товаров с динамическими атрибутами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 11:19 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
пример медицинской системы http://iskondopoga.snw.ru/system/isk_6_tech_docmodel.htm ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 11:58 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Petro123 Есть куча учётных задач, Есть такая задача : стандартный бухучет: пользователь пишет формулу для расчета суммы проводки, использую только-что добавленные новые объекты и их атрибуты. При проведении формула автоматически вычисляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 12:43 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
PL99Разрушить систему добавлением полей в таблицы - это, IMHO, надо постараться. Но давая человеку права на добавление нужно дать и на удаление - а кто ж за ним ошибки чистить будет? ИМХО главное в том, что хоть по горизонтали хоть по вертикали, но динамические параметры требуют словаря данных приложения. В общем случае словарь для каждого параметра задает таблицу, колонку и тип строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 12:48 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
мод Petro123 Есть куча учётных задач, Есть такая задача : стандартный бухучет: пользователь пишет формулу для расчета суммы проводки, использую только-что добавленные новые объекты и их атрибуты. При проведении формула автоматически вычисляется. ну да, только она несколько отличается от логики приведённой автором: Если SSSSSS то ..... Если ВВВВВВВ то ..... Т.е. если логика обработки атрибутов однотипна, то нет никаких проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 12:50 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
ModelRИМХО главное в том, что хоть по горизонтали хоть по вертикали, но динамические параметры требуют словаря данных приложения. В общем случае словарь для каждого параметра задает таблицу, колонку и тип строки. Именно так и есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 14:09 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Petro123ну да, только она несколько отличается от логики приведённой автором: Если SSSSSS то ..... Если ВВВВВВВ то ..... Т.е. если логика обработки атрибутов однотипна, то нет никаких проблем. Если вы получили значение атрибута то делайте с ним что угодно, однотипность не требуется. if atrr('имя_объекта', 'имя_атрибута', id объекта)='зеленый' then ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 14:18 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
мод ModelRИМХО главное в том, что хоть по горизонтали хоть по вертикали, но динамические параметры требуют словаря данных приложения. В общем случае словарь для каждого параметра задает таблицу, колонку и тип строки. Именно так и есть. таблица и колонка в EAV выносятся из словаря, т.к. константы IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 14:20 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
ModelR PL99Разрушить систему добавлением полей в таблицы - это, IMHO, надо постараться. Но давая человеку права на добавление нужно дать и на удаление - а кто ж за ним ошибки чистить будет? Ситуация с удалением полей принципиально не отличается от ситуации Код: plaintext ModelRИМХО главное в том, что хоть по горизонтали хоть по вертикали, но динамические параметры требуют словаря данных приложения. В общем случае словарь для каждого параметра задает таблицу, колонку и тип строки.Я это и имел ввиду, когда говорил PL99...добавленное поле не появится в клиенте без неких дополнительных усилий, но... эта задача вполне решаема ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 15:15 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Petro123таблица и колонка в EAV выносятся из словаря, т.к. константы IMHOВ данном случае конечно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 15:57 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Petro123таблица и колонка в EAV выносятся из словаря, т.к. константы IMHO Реальные таблицы - конечно константы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 17:48 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
guest_20040621<...>Какой функционал должен обязательно быть заложен в любую проектируемую базу данных? Возможность ее эволюционного развития, возможность агрегации данных нескольких экземпляров базы данных, возможность ее интеграции в комплексные информационные системы.<...> В любую БД должен быть заложен ровно тот функционал, которого достаточно для решения проблем заказчика. Если заказчик хочет БД для АСУ небольшого склада, то впаривать ему суперинтегрируемое гипермасштабируемое решение - ещё один сравнительно честный способ отъёма денег и/или первый шаг к неудачному проекту. guest_20040621<...>Для случая проектирования баз данных официального применения (здесь говорили о социальном страховании), последний пункт принимает стратегически важное значение. В первую очередь поэтому ни о каких извратах в виде не реляционных структур разработчику даже думать категорически нельзя. <...> Интегрироваться можно не только на уровне БД. И далеко не всегда этот способ - лучший. Поэтому "извраты" использовать можно, но только если они действительно нужны. guest_20040621<...>Если бы эти простые принципы соблюдались, и если бы информационными технологиями в стране рулили не полные бараны, давно была бы возможность построить комплексную информационную систему любого уровня, и проблемы, которые пришлось бы при этом решать, носили бы исключительно технический характер.<...> Главная сложность - не в различии в структур БД, а в "политике", сферах влияния, нечестности тендеров и нежелании читать тех. документацию. И ещё в том, что каждый второй считает свой подход единственно верным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 01:02 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven, Вы не поняли. Не "реализован", а "заложен". Другими словами, архитектор базы данных должен рассуждать примерно так: если мне понадобится вести историю изменений, я сделаю это посредством [...] без глобальных изменений структуры данных; если мне потребуется выделить несколько экземпляров базы данных для разных подразделений/задач, я сделаю это посредством [...] и агрегировать данные буду [...]. Если мне потребуется мультиязычный интерфейс, я сделаю это посредством [...]. И так далее, с учетом всех типовых задач. Практический результат такого подхода выражается в осмысленной декомпозиции структуры данных. Никаких "ФИО, дата рождения, номер паспорта" не получится по определению. Эволюционность развития - это возможность добавления описания сущностей без дополнительной декомпозиции существующей структуры данных. Практически это та же декомпозиция, но выполяемая не только с точки зрения классического проектирования, а и с точки зрения максимизации количества информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 03:07 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
guest_20040621AlexTheRaven, Вы не поняли. Не "реализован", а "заложен".<...> Совершенно согласен с Вами, что нужно думать о будущих перспективах развития, заранее "подстилать себе соломку". Но ещё важно, чтобы это не слишком отражалось на сложности и производительности системы прямо сейчас. Хотя, с другой стороны, правильные решения - обычно просты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 10:59 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
У меня похжая трабла была в зарплате (нескажу почему). Писал на аксе. Создал справочник свойств объекта: таблица типа Код свойства, Наименование свойства, тип свойства (дата, строка, число) вторая таблица: Код человека, код свойства, значение (хратнится в строковом поле) далее строил запрос перекрестный который раворачивал в заголовки столбцов - имена свойств, в в "заголовки строк - код человека", в "перекрестье заголовков" - значения - и вот с таким запросом я потом работал - как с обычной таблицей - это кстати позволило ввести формульный расчет в зарплате. тока в аксе есть ограничение - не более 250 (или 255) полей возможно _______________________ Проблема маленькая - перезагрузись. Проблема большая - переустанови. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 20:04 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34174818&tid=1544847]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
167ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 509ms |

| 0 / 0 |
