|
|
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Добрый день. MSSQL 2005 Есть объекты, обладающие несколькими ( от 0 и до бесконечности) свойствами(их количество заранее неизвестно и они могут как добавляться, так и удаляться). Перечень свойств описан в таблице Domains id Name TableName ------------------------------------ 1 Категория Category 2 Статус Statuses ........ Возможные значения свойств хранятся в таблицах, указанных в поле TableName: Category: id ValName ---------------- 1 Общая 2 Дополнительная ........... Statuses: id ValName ----------------- 1 Прямой 2 Обратный 3 Циклический ....... Для объект создана таблица DomainValue: idObject idDomains idValName ---------------------------------------------- 1 1 2 1 2 3 34 1 1 34 2 1 .............. В разрабатываемой программе конечный пользователь должен иметь возможость добавлять свойства, изменять их значения для конкретного объекта, сохранять изменения для каждого конкретного объекта... В общем, полный набор .. Подскажите, правильна ли сама концепция хранения данных таким образом или сразу нужно смотреть в другую сторону? С уважением, Влад ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 21:58 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
> до бесконечности Так-таки до бесконечности? Ссылочку будьте любезны на вендора, предлагающего СХД бесконечной емкости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 00:16 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
DomainValue(idObject, idDomains, idValName) естественней джойнится с единой таблицей XXXX (idDomains, idValName, ValName) чем с кучей отдельных однотипных. А вообще-то в поиск: Object = Entity Domain= Attribute Value= Value ODV =EAV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 09:47 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
guest_20040621> до бесконечности Так-таки до бесконечности? Ссылочку будьте любезны на вендора, предлагающего СХД бесконечной емкости. "Зурабов и К". С их бесконечными нац. проектами.... Пример: есть человек - пациент амбулаторной поликлиники. У пациента, помимо стандарного набора (ФИО, дата рождения, пол,адрес и т.д.) есть специфические свойства, которые могут быть добавлены в любой момент: например, завтра вышеуказанная контора придумает "нацпроект" специально для голубоглазых брюнетов (вводится два параметра: цвет глаз и цвет волос). Это, конечно утрировано, но смысл тот же. Нужно иметь возможность добавлять параметры не меняя структуры БД. Например, у пациента(в данном случае пациентки ЖК) нужно добавить параметр "Беременность по счету", т.е. какая беременность по счету:1-я, 2-я или 25-я....Т.е. этот параметр не выбирается из справочника, а вводится вручную. А завтра нужен будет параметр, который необходимо выбрать из какого-либо справочника, а послезавтра еще один, который вводится вручную, но вводить нужно не из справочника, а вручную, но тип данных - логический (приведен к логическому) или что-то еще... В общем, дурдом.... Вот и прошу совета у всемирного разума.. Ведь наверняка кто-то это уже делал... С уважением, Влад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 10:30 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Владд<...>Есть объекты, обладающие несколькими ( от 0 и до бесконечности) свойствами(их количество заранее неизвестно и они могут как добавляться, так и удаляться). <...>В разрабатываемой программе конечный пользователь должен иметь возможость добавлять свойства, изменять их значения для конкретного объекта, сохранять изменения для каждого конкретного объекта... В общем, полный набор .. Подскажите, правильна ли сама концепция хранения данных таким образом или сразу нужно смотреть в другую сторону? С уважением, Влад Действительно, EAV подойдёт. Но только если Вы уверены, что сможете справиться с её сложностью. Если количество свойств и типов свойств ограничено и разумно (где-нибудь до 200), и используются простые типы данных - проще (хотя и не обзательно "лучше") создать одну таблицу с большим запасом столбцов. Если же количество "динамических" свойств велико (больше 200) и/или у этих свойств могут быть сложные типы - Вам дорога в сторону экзотики, ООСУБД или ОРСУБД. Считаю, что нужно подумать вот над чем: действительно ли пользователь должен иметь возможность добавлять произвольное количество "динамических атрибутов" произвольного типа с произвольным названием ? Зачем ему это? Может, такого варианта использования системы и нет? И на самом деле всё, что нужно, можно уложить в обычную реляционную структуру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 10:40 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Владдд<...> Вот и прошу совета у всемирного разума.. Ведь наверняка кто-то это уже делал... С уважением, Влад. Делал. Причём тоже был связан с Зурабовым :) - работал в области паспортизации, сертификации и оценки санаторно-курортных организаций. Притом что критерии оценки изменяются, более того - вырабатываются при обработке результатов экпертных опросов. Которые (экпертные опросы) тоже надо было автоматизировать. Т.е. система сама для себя генерировала структуру данных и алгоритм их обработки :) . Использовал EAV, причём для хранения сложных типов данных (перечисления, множественные значения, даже EAV в EAV) - тоже. Мой прототип работал и нравился, но как он это делает - объяснить было сложно. Хотя, возможно, проблема была в том, что все хотели только писать - и никто не хотел читать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 10:52 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
> "Зурабов и К". У-у-у... Вам можно только посочувствовать. Не думаю, что Зурабов останется работать министром, так что два раза подумайте, есть ли смысл напрягаться. > Нужно иметь возможность добавлять параметры не меняя структуры БД. Задача хорошая. Но решить ее на хорошем уровне сложно. Примитивное решение будет выглядеть примерно так: entity -> constraints -> attribute -> constraints -> value (плюс то же самое для связей, плюс типы (домены) значений и мультипликаторы). В общем, реализовать это можно по-разному, но я не вижу приемлемого решения без семантической модели базы данных. А если Вы напишете хорошую структуру для семантической модели, думаю, смело можете забить на идиотские проекты и найти себе нормальную работу за достойные деньги. ;) > Ведь наверняка кто-то это уже делал... Огорчу: вряд ли Вы найдете готовую реализацию приемлемого качества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 16:33 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
ВладддПример: есть человек - пациент амбулаторной поликлиники. У пациента, помимо стандарного набора (ФИО, дата рождения, пол,адрес и т.д.) есть специфические свойства, которые могут быть добавлены в любой момент: например, завтра вышеуказанная контора придумает "нацпроект" специально для голубоглазых брюнетов (вводится два параметра: цвет глаз и цвет волос). Это, конечно утрировано, но смысл тот же. Нужно иметь возможность добавлять параметры не меняя структуры БД. Например, у пациента(в данном случае пациентки ЖК) нужно добавить параметр "Беременность по счету", т.е. какая беременность по счету:1-я, 2-я или 25-я....Т.е. этот параметр не выбирается из справочника, а вводится вручную. А завтра нужен будет параметр, который необходимо выбрать из какого-либо справочника, а послезавтра еще один, который вводится вручную, но вводить нужно не из справочника, а вручную, но тип данных - логический (приведен к логическому) или что-то еще...У меня внезапно возник вопрос, простенький, но со вкусом. Предположим, мы реализовали модель EAV и пользователи легко и непринужденно добавляют атрибут "Цвет глаз" или "Номер беременности". Что с этими атрибутами предполагается делать дальше? Как ИС будет обрабатывать эти атрибуты? Где именно будет написано что-то вроде Код: plaintext 1. 2. 3. 4. 5. 6. Ну и, заодно, кто будет писать эти процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 20:37 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
1.как показал мой опыт - люди,любящие eav любят иметь еще и свой язык программирования,но в любом случае обработчики таких вещей обычно лежат в базе либо в виде хп,либо скриптами. 2.прямо в коде процедуры,например CalcComission,а далее в нужной форме вызываться (есть имитация наследования-вызовется по цепочке (может если умная реализация,то и overide сделает метода,т.е. просто что-то не вызовет)).В чем вопрос то? 3.А писать,как не удивительно будем их мы,скромные добрые программеры :)Само точно писаться не будет.Хотя если построить как-нибудь умно справочники-возможно сделается и само. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 20:52 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
новый гостьУ меня внезапно возник вопрос, простенький, но со вкусом. Предположим, мы реализовали модель EAV и пользователи легко и непринужденно добавляют атрибут "Цвет глаз" или "Номер беременности". Что с этими атрибутами предполагается делать дальше? Как ИС будет обрабатывать эти атрибуты? Где именно будет написано что-то вроде Код: plaintext 1. 2. 3. 4. 5. 6. Ну и, заодно, кто будет писать эти процедуры? Как я понял, будет написано что-то вроде Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 22:26 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
новый гость вы путаете 2 вещи: - EAV позволяет легко добавить новый атрибут пользователем, но не имеет никакого отношения к новой бизнес-логике по его использованию. За исключениме того, что в запросах SELECT пользователь его увидит автоматом, т.к. он не в полях, а записях. Бизнес логика с пособиями одинаково пишется что в EAV что в ROT.... (где-то же надо писать про добвленную колонку разрез-глаз) ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 10:31 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
ну как же.eav спасет всех.кто сделал ее реализацию - у того будет делаться все само. Сорри,не удержался... Пятница... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 10:41 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
новый гостьПредположим, пользователи легко и непринужденно добавляют атрибут Что с этими атрибутами предполагается делать дальше? Как ИС будет обрабатывать эти атрибуты? Все очень просто: есть заранее написанные функции для доступа к любым (и новым и старым) атрибутам сущностей (даже еще не существующих). Эти функции используются везде: в обработчиках, в отчетах, в формулах и т.д. Т.о. можно добавлять новые сущности и (или) атрибуты и тут же их использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 12:28 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Если рассмотреть задачу атрибутов пациента амбулаторной поликлиники по-глубже... 1) Атрибуты типа ФИО, ДР... тут особых сложностей не наблюдается - хранится полями в таблице, вносится ручками пользователей (справочники для ФИО не рассматриваются). 2) Рост, Вес, коментарий, дата чего-то-там и тд: таблица - справочник атрибутов (наименование, тип, имя таблицы значений). таблица значений атрибутов пациентов на каждый тип значения. Значения разных атрибутов одинаковых типов - в одной таблице. 3) Цвет глаз, волос, группа крови и тд: Цвет глаз - отображается "Карий", хранится "Карий" + в формате RGB Кровь - Группа+резус Цвет волос - какой именно, собственный или крашеный, если крашеный, то какой краской и тд, но это уже отступление от Амбулаторной поликлиники, даже для Зурабова 4) Взрослые/подростки/дети, число полных лет,месяцев дней, участок.... Все эти атрибуты расчитываются соответственно дети - организованные/неорг, стоит на учете в детск шк милиции/не стоит,... взрослые и подростки - работающие/неработ., те, кто работают - в бюджетн/коммерч организациях, с вредн/невредн условиями труда взрослые - пенсионеры/не пенс, а на пенсию выходят в зависимости от работы... И по половине атрибутов еще и история потребуется. Вобщем просто дурдом. Shtockну как же.eav спасет всех.кто сделал ее реализацию - у того будет делаться все само. Сорри,не удержался... Пятница... У меня зарождаются большие сомнения в самой возможности реализовать это "динамически" Кто-нибудь разбирал такую (подобную) задАницу? Есть еще на что надеяться??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 14:49 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Или автоматически генерируемое для каждого типа плоское представление/запрос/процедра возвращающая таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 14:53 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Задача трудная, но решаемая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 14:53 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
> задачу атрибутов пациента амбулаторной поликлиники по-глубже... Для начала Вам стоит изучить проблему хотя бы поверхностно. Hint: суть в том, что здравоохранение - абсолютно регламентированная сфера услуг. Описано невероятное количество характеристик человека с точки зрения любого раздела медицины. Описаны и классифицированы все применяемые методики диагностики, терапии или оперативного вмешательства. Описаны и классифицированы лекарственные средства, биологически активные добавки, медицинская техника и пр., - все, чем, собственно, располагает врач или пациент. Естественно, описаны и классифицированы заболевания. Нет ни одной проблемы построить информационную систему любой сложности на основании перечисленного. Ни о каких кривых EAV речь идти не должна. Ы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 15:37 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
BonDyУ меня зарождаются большие сомнения в самой возможности реализовать это "динамически" А в чем проблема ? У многих это сделано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 15:51 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Описано невероятное количество характеристик человека с точки зрения любого раздела медицины. Описаны и классифицированы все применяемые методики диагностики, терапии или оперативного вмешательства. Описаны и классифицированы лекарственные средства, биологически активные добавки, медицинская техника и пр., - все, чем, собственно, располагает врач или пациент. Естественно, описаны и классифицированы заболевания.Во. Тут-то ленивый наш брат разработчик и думает - и это мне самому все эти таблицы генерить?!?! Да я лучше сваяю генератор, сделаю красивую морду лица, даже хелп напишу, и пусть старшие доктора сами вбивают классы и параметры, какая добавка чем характеризуется и у какого анализа какие параметры. Чтобы младшие медсестры получали экранчики для ввода данных, а научные сотрудники статистику для диссертаций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 17:09 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
guest_20040621> задачу атрибутов пациента амбулаторной поликлиники по-глубже... Для начала Вам стоит изучить проблему хотя бы поверхностно. Hint: суть в том, что здравоохранение - абсолютно регламентированная сфера услуг. Описано невероятное количество характеристик человека с точки зрения любого раздела медицины. Описаны и классифицированы все применяемые методики диагностики, терапии или оперативного вмешательства. Описаны и классифицированы лекарственные средства, биологически активные добавки, медицинская техника и пр., - все, чем, собственно, располагает врач или пациент. Естественно, описаны и классифицированы заболевания. Нет ни одной проблемы построить информационную систему любой сложности на основании перечисленного. Ни о каких кривых EAV речь идти не должна. Ы? Тогда поясните принцип построения такой системы, на структуре которой не отразилось бы введение в оборот родовых сертификатов, необходимость выставлять счета по дополнительной диспансеризации и тд? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 17:34 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
> не отразилось бы введение в оборот родовых сертификатов Постройте модель расчетов с учетом в т. ч. суррогатных выплат. С участием и государственных структур социального страхования, и независимых страховщиков. > необходимость выставлять счета по дополнительной диспансеризации Читайте нормативную документацию по страхованию. > и тд? Это предложение работы? Боюсь, Вы не сможете предложить удовлетворительный уровень компенсации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 18:07 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
Shtock1.как показал мой опыт - люди,любящие eav любят иметь еще и свой язык программирования,но в любом случае обработчики таких вещей обычно лежат в базе либо в виде хп,либо скриптами.Т.е., пользователь, добавив атрибут, должен еще и написать на SQL-расширении БД или, того хуже, на скриптовом языке приложения код, обрабатывающий вновь добавленный атрибут? Shtock2.прямо в коде процедуры,например CalcComission,а далее в нужной форме вызываться (есть имитация наследования-вызовется по цепочке (может если умная реализация,то и overide сделает метода,т.е. просто что-то не вызовет)).В чем вопрос то?Вопрос простой - для чего нужно городить огород с EAV, если преимуществ от него никаких - скорость выборки низкая, запросы неоправданно усложнены, а от DDL мы никуда не делись - хранимую процедуру все равно пишем. Правда возможен вариант, когда эту самую процедуру процедурой не оформляем, а интерпретируем на ходу, использую динамический SQL, но это еще больше снижает производительность приложения. Shtock3.А писать,как не удивительно будем их мы,скромные добрые программеры :)Само точно писаться не будет.Хотя если построить как-нибудь умно справочники-возможно сделается и само.Т.о., ничто не мешает "скромным добрым программерам" добавить в таблицу поле, описывающее новый атрибут. модВсе очень просто: есть заранее написанные функции для доступа к любым (и новым и старым) атрибутам сущностей (даже еще не существующих). Эти функции используются везде: в обработчиках, в отчетах, в формулах и т.д. Т.о. можно добавлять новые сущности и (или) атрибуты и тут же их использовать.Функция доступа, извлекающая значение тривиальна, поэтому интереса не представляет. Вопрос был сформулирован иначе - в чем смысл предоставления пользователю приложения возможности добавления новых атрибутов, если он не сможет эти новые атрибуты обрабатывать? Petro123 новый гость вы путаете 2 вещи: - EAV позволяет легко добавить новый атрибут пользователем, но не имеет никакого отношения к новой бизнес-логике по его использованию. За исключениме того, что в запросах SELECT пользователь его увидит автоматом, т.к. он не в полях, а записях. Бизнес логика с пособиями одинаково пишется что в EAV что в ROT.... (где-то же надо писать про добвленную колонку разрез-глаз)Не путаю, в том-то все и дело. Именно поэтому и спрашиваю - откуда такой восторг по поводу этого подхода, если плюс у него только один - "в запросах SELECT пользователь его увидит автоматом"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 18:53 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
>Боюсь, Вы не сможете предложить удовлетворительный уровень компенсации. Не стоит этого бояться =) А если серьезно, то, и притивники "кривых EAV" и сторонники приямых похоже правы. Надо еще раз подумать, а потом делать..... Буду думать. Огромное спасибо всем кто откликнулся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 19:07 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Читайте нормативную документацию по страхованию. Например, я уже 6 лет ее читаю, и не только читаю, но и в жизнь претворяю ... т.к. работю в области медицинского страхования. И чем больше ее читаю, тем больше мне кажется, что все эти нормативные документы по формам отчетности, порядком взаиморасчетов между лечебным учреждением и страховой компанией и прочие документы "а-ля документация по страхованию" пишется людьми, которые имеют к здравоохранению такое же отношение, как Буцефал к полетам в космос.... Бред ТАКОЙ, что диву даешься... Ладно, не будем флудить....... Спасибо всем, кто откликнулся. С уважением, Влад ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 22:37 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Hint: суть в том, что здравоохранение - абсолютно регламентированная сфера услуг. Описано невероятное количество характеристик человека с точки зрения любого раздела медицины. Описаны и классифицированы все применяемые методики диагностики, терапии или оперативного вмешательства. Описаны и классифицированы лекарственные средства, биологически активные добавки, медицинская техника и пр., - все, чем, собственно, располагает врач или пациент. Только служба г-на Зурабова об этом, наверное, не знает....:)) Структура (читай, структура справочника) лекарственных препаратов по льготному обеспечению с момента выхода в начале 2005 года менялась 5 !!!! раз. Из них 4 раза - задним числом. И с 1 января меняется 6-й!!!! И опять в министерстве разъяснили, что изменения, которые вступят в силу с 1 января, будут готовы не раньше конца февраля. Подчеркиваю, что меняется не просто перечень препаратов! Меняется группировка, кодирование и прочие атрибуты. guest_20040621> Нет ни одной проблемы построить информационную систему любой сложности на основании перечисленного. Ни о каких кривых EAV речь идти не должна. Ы? Очень интересная мысль. Особенно после вполне реального Владд >например, завтра вышеуказанная контора придумает "нацпроект" специально для голубоглазых брюнетов (вводится два параметра: цвет глаз и цвет волос). Это, конечно утрировано, но смысл тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 22:48 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34165686&tid=1544847]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
196ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 573ms |

| 0 / 0 |
