|
|
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Организация работы с динамическими параметрами объекта.
|
|||
|---|---|---|---|
|
#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?all=1&fid=32&tid=1544847]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
188ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
108ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 585ms |

| 0 / 0 |
