powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Организация работы с динамическими параметрами объекта.
48 сообщений из 48, показаны все 2 страниц
Организация работы с динамическими параметрами объекта.
    #34165581
Владд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
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
..............

В разрабатываемой программе конечный пользователь должен иметь возможость добавлять свойства, изменять их значения для конкретного объекта, сохранять изменения для каждого конкретного объекта... В общем, полный набор ..

Подскажите, правильна ли сама концепция хранения данных таким образом или сразу нужно смотреть в другую сторону?

С уважением, Влад
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34165686
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> до бесконечности

Так-таки до бесконечности? Ссылочку будьте любезны на вендора, предлагающего СХД бесконечной емкости.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34166081
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DomainValue(idObject, idDomains, idValName)

естественней джойнится с единой таблицей

XXXX (idDomains, idValName, ValName)

чем с кучей отдельных однотипных.

А вообще-то в поиск:
Object = Entity
Domain= Attribute
Value= Value

ODV =EAV.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34166210
Владдд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> до бесконечности

Так-таки до бесконечности? Ссылочку будьте любезны на вендора, предлагающего СХД бесконечной емкости.
"Зурабов и К".
С их бесконечными нац. проектами....
Пример:
есть человек - пациент амбулаторной поликлиники.
У пациента, помимо стандарного набора (ФИО, дата рождения, пол,адрес и т.д.) есть специфические свойства, которые могут быть добавлены в любой момент: например, завтра вышеуказанная контора придумает "нацпроект" специально для голубоглазых брюнетов (вводится два параметра: цвет глаз и цвет волос). Это, конечно утрировано, но смысл тот же. Нужно иметь возможность добавлять параметры не меняя структуры БД. Например, у пациента(в данном случае пациентки ЖК) нужно добавить параметр "Беременность по счету", т.е. какая беременность по счету:1-я, 2-я или 25-я....Т.е. этот параметр не выбирается из справочника, а вводится вручную.
А завтра нужен будет параметр, который необходимо выбрать из какого-либо справочника, а послезавтра еще один, который вводится вручную, но вводить нужно не из справочника, а вручную, но тип данных - логический (приведен к логическому) или что-то еще...
В общем, дурдом....

Вот и прошу совета у всемирного разума.. Ведь наверняка кто-то это уже делал...
С уважением, Влад.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34166241
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владд<...>Есть объекты, обладающие несколькими ( от 0 и до бесконечности) свойствами(их количество заранее неизвестно и они могут как добавляться, так и удаляться). <...>В разрабатываемой программе конечный пользователь должен иметь возможость добавлять свойства, изменять их значения для конкретного объекта, сохранять изменения для каждого конкретного объекта... В общем, полный набор ..

Подскажите, правильна ли сама концепция хранения данных таким образом или сразу нужно смотреть в другую сторону?

С уважением, Влад
Действительно, EAV подойдёт. Но только если Вы уверены, что сможете справиться с её сложностью.

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

Если же количество "динамических" свойств велико (больше 200) и/или у этих свойств могут быть сложные типы - Вам дорога в сторону экзотики, ООСУБД или ОРСУБД.

Считаю, что нужно подумать вот над чем: действительно ли пользователь должен иметь возможность добавлять произвольное количество "динамических атрибутов" произвольного типа с произвольным названием ? Зачем ему это? Может, такого варианта использования системы и нет? И на самом деле всё, что нужно, можно уложить в обычную реляционную структуру?
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34166281
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владдд<...>
Вот и прошу совета у всемирного разума.. Ведь наверняка кто-то это уже делал...
С уважением, Влад.
Делал. Причём тоже был связан с Зурабовым :) - работал в области паспортизации, сертификации и оценки санаторно-курортных организаций. Притом что критерии оценки изменяются, более того - вырабатываются при обработке результатов экпертных опросов. Которые (экпертные опросы) тоже надо было автоматизировать. Т.е. система сама для себя генерировала структуру данных и алгоритм их обработки :) .

Использовал EAV, причём для хранения сложных типов данных (перечисления, множественные значения, даже EAV в EAV) - тоже. Мой прототип работал и нравился, но как он это делает - объяснить было сложно. Хотя, возможно, проблема была в том, что все хотели только писать - и никто не хотел читать...
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34168030
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> "Зурабов и К".

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

> Нужно иметь возможность добавлять параметры не меняя структуры БД.

Задача хорошая. Но решить ее на хорошем уровне сложно. Примитивное решение будет выглядеть примерно так: entity -> constraints -> attribute -> constraints -> value (плюс то же самое для связей, плюс типы (домены) значений и мультипликаторы).

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

> Ведь наверняка кто-то это уже делал...

Огорчу: вряд ли Вы найдете готовую реализацию приемлемого качества.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34168813
ВладддПример:
есть человек - пациент амбулаторной поликлиники.
У пациента, помимо стандарного набора (ФИО, дата рождения, пол,адрес и т.д.) есть специфические свойства, которые могут быть добавлены в любой момент: например, завтра вышеуказанная контора придумает "нацпроект" специально для голубоглазых брюнетов (вводится два параметра: цвет глаз и цвет волос). Это, конечно утрировано, но смысл тот же. Нужно иметь возможность добавлять параметры не меняя структуры БД. Например, у пациента(в данном случае пациентки ЖК) нужно добавить параметр "Беременность по счету", т.е. какая беременность по счету:1-я, 2-я или 25-я....Т.е. этот параметр не выбирается из справочника, а вводится вручную.
А завтра нужен будет параметр, который необходимо выбрать из какого-либо справочника, а послезавтра еще один, который вводится вручную, но вводить нужно не из справочника, а вручную, но тип данных - логический (приведен к логическому) или что-то еще...У меня внезапно возник вопрос, простенький, но со вкусом. Предположим, мы реализовали модель EAV и пользователи легко и непринужденно добавляют атрибут "Цвет глаз" или "Номер беременности". Что с этими атрибутами предполагается делать дальше? Как ИС будет обрабатывать эти атрибуты? Где именно будет написано что-то вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
if цвет_глаз = "голубой" then 
--выполнить процедуру выдачи дополнительного пособия
elsif цвет_глаз = "карий" then
--выполнить процедуру снижения пособия на 5%
else
--выполнить стандартную процедуру обработки
end if;
Где будет храниться реализация этих процедур?
Ну и, заодно, кто будет писать эти процедуры?
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34168835
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.как показал мой опыт - люди,любящие eav любят иметь еще и свой язык программирования,но в любом случае обработчики таких вещей обычно лежат в базе либо в виде хп,либо скриптами.
2.прямо в коде процедуры,например CalcComission,а далее в нужной форме вызываться (есть имитация наследования-вызовется по цепочке (может если умная реализация,то и overide сделает метода,т.е. просто что-то не вызовет)).В чем вопрос то?
3.А писать,как не удивительно будем их мы,скромные добрые программеры :)Само точно писаться не будет.Хотя если построить как-нибудь умно справочники-возможно сделается и само.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34168942
BonDy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
новый гостьУ меня внезапно возник вопрос, простенький, но со вкусом. Предположим, мы реализовали модель EAV и пользователи легко и непринужденно добавляют атрибут "Цвет глаз" или "Номер беременности". Что с этими атрибутами предполагается делать дальше? Как ИС будет обрабатывать эти атрибуты? Где именно будет написано что-то вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
if цвет_глаз = "голубой" then 
--выполнить процедуру выдачи дополнительного пособия
elsif цвет_глаз = "карий" then
--выполнить процедуру снижения пособия на 5%
else
--выполнить стандартную процедуру обработки
end if;
Где будет храниться реализация этих процедур?
Ну и, заодно, кто будет писать эти процедуры?
Как я понял, будет написано что-то вроде
Код: plaintext
1.
2.
3.
if (CurDomain/*текущий атрибут*/ = NeededDomain/*необходимый атрибут*/) then 
...
    if (CurVal/*значение текущего атрибута*/ = NeededVal/*значение необходимого*/) then 
/*выполнить процедуру выдачи дополнительного пособия*/
А кому и какие платить пособия (напимер тем у кого цвет_глаз = "карий"), пользователь настроит в справочниках пособий, тоже "бесконечных". Процедур не так и много получается, а вот размер пособия и от чего он зависит (от разреза глаз - уж наверняка! =)) пользователь и сам внесет. Правда настройка пособия ограничена количеством атрибутов, но их-то количество как раз не ограничено ;)
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34169467
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
новый гость вы путаете 2 вещи:
- EAV позволяет легко добавить новый атрибут пользователем, но не имеет никакого отношения к новой бизнес-логике по его использованию.
За исключениме того, что в запросах SELECT пользователь его увидит автоматом, т.к. он не в полях, а записях.
Бизнес логика с пособиями одинаково пишется что в EAV что в ROT.... (где-то же надо писать про добвленную колонку разрез-глаз)
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34169494
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну как же.eav спасет всех.кто сделал ее реализацию - у того будет делаться все само.

Сорри,не удержался... Пятница...
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34169971
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
новый гостьПредположим, пользователи легко и непринужденно добавляют атрибут Что с этими атрибутами предполагается делать дальше? Как ИС будет обрабатывать эти атрибуты?
Все очень просто: есть заранее написанные функции для доступа к любым (и новым и старым) атрибутам сущностей (даже еще не существующих). Эти функции используются везде: в обработчиках, в отчетах, в формулах и т.д. Т.о. можно добавлять новые сущности и (или) атрибуты и тут же их использовать.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34170724
BonDy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если рассмотреть задачу атрибутов пациента амбулаторной поликлиники по-глубже...
1) Атрибуты типа ФИО, ДР...
тут особых сложностей не наблюдается - хранится полями в таблице, вносится ручками пользователей (справочники для ФИО не рассматриваются).

2) Рост, Вес, коментарий, дата чего-то-там и тд:
таблица - справочник атрибутов (наименование, тип, имя таблицы значений).
таблица значений атрибутов пациентов на каждый тип значения. Значения разных атрибутов одинаковых типов - в одной таблице.

3) Цвет глаз, волос, группа крови и тд:
Цвет глаз - отображается "Карий", хранится "Карий" + в формате RGB
Кровь - Группа+резус
Цвет волос - какой именно, собственный или крашеный, если крашеный, то какой краской и тд, но это уже отступление от Амбулаторной поликлиники, даже для Зурабова

4) Взрослые/подростки/дети, число полных лет,месяцев дней, участок....
Все эти атрибуты расчитываются

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

Сорри,не удержался... Пятница...
У меня зарождаются большие сомнения в самой возможности реализовать это "динамически"
Кто-нибудь разбирал такую (подобную) задАницу? Есть еще на что надеяться???
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34170745
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или автоматически генерируемое для каждого типа плоское представление/запрос/процедра возвращающая таблицу.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34170748
Programmer_Ortodox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача трудная, но решаемая.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34170959
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> задачу атрибутов пациента амбулаторной поликлиники по-глубже...

Для начала Вам стоит изучить проблему хотя бы поверхностно.

Hint: суть в том, что здравоохранение - абсолютно регламентированная сфера услуг. Описано невероятное количество характеристик человека с точки зрения любого раздела медицины. Описаны и классифицированы все применяемые методики диагностики, терапии или оперативного вмешательства. Описаны и классифицированы лекарственные средства, биологически активные добавки, медицинская техника и пр., - все, чем, собственно, располагает врач или пациент. Естественно, описаны и классифицированы заболевания.

Нет ни одной проблемы построить информационную систему любой сложности на основании перечисленного. Ни о каких кривых EAV речь идти не должна. Ы?
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34171018
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BonDyУ меня зарождаются большие сомнения в самой возможности реализовать это "динамически"
А в чем проблема ? У многих это сделано.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34171308
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Описано невероятное количество характеристик человека с точки зрения любого раздела медицины. Описаны и классифицированы все применяемые методики диагностики, терапии или оперативного вмешательства. Описаны и классифицированы лекарственные средства, биологически активные добавки, медицинская техника и пр., - все, чем, собственно, располагает врач или пациент. Естественно, описаны и классифицированы заболевания.Во. Тут-то ленивый наш брат разработчик и думает - и это мне самому все эти таблицы генерить?!?! Да я лучше сваяю генератор, сделаю красивую морду лица, даже хелп напишу, и пусть старшие доктора сами вбивают классы и параметры, какая добавка чем характеризуется и у какого анализа какие параметры. Чтобы младшие медсестры получали экранчики для ввода данных, а научные сотрудники статистику для диссертаций.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34171390
BonDy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> задачу атрибутов пациента амбулаторной поликлиники по-глубже...

Для начала Вам стоит изучить проблему хотя бы поверхностно.

Hint: суть в том, что здравоохранение - абсолютно регламентированная сфера услуг. Описано невероятное количество характеристик человека с точки зрения любого раздела медицины. Описаны и классифицированы все применяемые методики диагностики, терапии или оперативного вмешательства. Описаны и классифицированы лекарственные средства, биологически активные добавки, медицинская техника и пр., - все, чем, собственно, располагает врач или пациент. Естественно, описаны и классифицированы заболевания.

Нет ни одной проблемы построить информационную систему любой сложности на основании перечисленного. Ни о каких кривых EAV речь идти не должна. Ы?
Тогда поясните принцип построения такой системы, на структуре которой не отразилось бы введение в оборот родовых сертификатов, необходимость выставлять счета по дополнительной диспансеризации и тд?
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34171491
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> не отразилось бы введение в оборот родовых сертификатов

Постройте модель расчетов с учетом в т. ч. суррогатных выплат. С участием и государственных структур социального страхования, и независимых страховщиков.

> необходимость выставлять счета по дополнительной диспансеризации

Читайте нормативную документацию по страхованию.

> и тд?

Это предложение работы? Боюсь, Вы не сможете предложить удовлетворительный уровень компенсации.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34171617
Shtock1.как показал мой опыт - люди,любящие eav любят иметь еще и свой язык программирования,но в любом случае обработчики таких вещей обычно лежат в базе либо в виде хп,либо скриптами.Т.е., пользователь, добавив атрибут, должен еще и написать на SQL-расширении БД или, того хуже, на скриптовом языке приложения код, обрабатывающий вновь добавленный атрибут?
Shtock2.прямо в коде процедуры,например CalcComission,а далее в нужной форме вызываться (есть имитация наследования-вызовется по цепочке (может если умная реализация,то и overide сделает метода,т.е. просто что-то не вызовет)).В чем вопрос то?Вопрос простой - для чего нужно городить огород с EAV, если преимуществ от него никаких - скорость выборки низкая, запросы неоправданно усложнены, а от DDL мы никуда не делись - хранимую процедуру все равно пишем. Правда возможен вариант, когда эту самую процедуру процедурой не оформляем, а интерпретируем на ходу, использую динамический SQL, но это еще больше снижает производительность приложения.
Shtock3.А писать,как не удивительно будем их мы,скромные добрые программеры :)Само точно писаться не будет.Хотя если построить как-нибудь умно справочники-возможно сделается и само.Т.о., ничто не мешает "скромным добрым программерам" добавить в таблицу поле, описывающее новый атрибут.

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

Petro123 новый гость вы путаете 2 вещи:
- EAV позволяет легко добавить новый атрибут пользователем, но не имеет никакого отношения к новой бизнес-логике по его использованию.
За исключениме того, что в запросах SELECT пользователь его увидит автоматом, т.к. он не в полях, а записях.
Бизнес логика с пособиями одинаково пишется что в EAV что в ROT.... (где-то же надо писать про добвленную колонку разрез-глаз)Не путаю, в том-то все и дело. Именно поэтому и спрашиваю - откуда такой восторг по поводу этого подхода, если плюс у него только один - "в запросах SELECT пользователь его увидит автоматом"?
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34171642
BonDy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Боюсь, Вы не сможете предложить удовлетворительный уровень компенсации.
Не стоит этого бояться =)
А если серьезно, то, и притивники "кривых EAV" и сторонники приямых похоже правы. Надо еще раз подумать, а потом делать.....
Буду думать.
Огромное спасибо всем кто откликнулся
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34171943
Владд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621
Читайте нормативную документацию по страхованию.


Например, я уже 6 лет ее читаю, и не только читаю, но и в жизнь претворяю ... т.к. работю в области медицинского страхования.

И чем больше ее читаю, тем больше мне кажется, что все эти нормативные документы по формам отчетности, порядком взаиморасчетов между лечебным учреждением и страховой компанией и прочие документы "а-ля документация по страхованию" пишется людьми, которые имеют к здравоохранению такое же отношение, как Буцефал к полетам в космос....
Бред ТАКОЙ, что диву даешься...
Ладно, не будем флудить.......
Спасибо всем, кто откликнулся.

С уважением, Влад
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34171954
Критиккус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621>
Hint: суть в том, что здравоохранение - абсолютно регламентированная сфера услуг. Описано невероятное количество характеристик человека с точки зрения любого раздела медицины. Описаны и классифицированы все применяемые методики диагностики, терапии или оперативного вмешательства. Описаны и классифицированы лекарственные средства, биологически активные добавки, медицинская техника и пр., - все, чем, собственно, располагает врач или пациент.


Только служба г-на Зурабова об этом, наверное, не знает....:))
Структура (читай, структура справочника) лекарственных препаратов по льготному обеспечению с момента выхода в начале 2005 года менялась 5 !!!! раз. Из них 4 раза - задним числом. И с 1 января меняется 6-й!!!! И опять в министерстве разъяснили, что изменения, которые вступят в силу с 1 января, будут готовы не раньше конца февраля.
Подчеркиваю, что меняется не просто перечень препаратов! Меняется группировка, кодирование и прочие атрибуты.

guest_20040621>
Нет ни одной проблемы построить информационную систему любой сложности на основании перечисленного. Ни о каких кривых EAV речь идти не должна. Ы?

Очень интересная мысль. Особенно после вполне реального
Владд >например, завтра вышеуказанная контора придумает "нацпроект" специально для голубоглазых брюнетов (вводится два параметра: цвет глаз и цвет волос). Это, конечно утрировано, но смысл тот же.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34172115
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Структура (читай, структура справочника) лекарственных препаратов
> по льготному обеспечению с момента выхода в начале 2005 года менялась 5 !!!! раз.

Структура данных справочника осталась неизменной (если это не так, значит, изначально она была построена плохо). Изменилась классификация. И здесь нет ни одной проблемы. Классификация - это типовая задача, имеющая типовые же решения. Изменение любых классификаторов может носить темпоральный характер, - решение также типовое.

Видите ли, в чем дело: иногда я даже предположить боюсь, откуда люди, проектирующие базы данных (причем, очень не маленькие и отнюдь не для персонального применения), черпают свои знания. Иногда есть ощущение, что основной источник - надписи на заборах или бабки на скамейках. Любая ошибка, публично описанная в форуме, книжке, статье, тиражируется с тем большей готовностью, чем она глупее. Такой вот парадокс.

> специально для голубоглазых брюнетов (вводится два параметра: цвет глаз и цвет волос)

Н-да... собственно, для этого случая написан абзац выше. Цвет глаз и цвет волос - обычные характеристики стандартных органов человека и нет ни одного повода не использовать их для построения ограничений наравне с другими такими же характеристиками или их производными. Вот если бы нацпроект в качестве ограничений использовал... хм... ну, например, членство в партии, - тогда да, структуру данных нужно было переделывать.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34172402
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621<...>Ни о каких кривых EAV речь идти не должна. Ы?
IMHO EAV и связанные с ней "скрипты" нужны просто для того, чтобы пользователь сам мог изменять структуру своих данных. При этом количество задач по поддержке (не столько трудных, сколько рутинных), которые ложатся на разработчика, становится меньше.

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

guest_20040621
Видите ли, в чем дело: иногда я даже предположить боюсь, откуда люди, проектирующие базы данных (причем, очень не маленькие и отнюдь не для персонального применения), черпают свои знания. Иногда есть ощущение, что основной источник - надписи на заборах или бабки на скамейках. Любая ошибка, публично описанная в форуме, книжке, статье, тиражируется с тем большей готовностью, чем она глупее. Такой вот парадокс.<...>
В моём понимании система, которая построена по ошибочному подходу, не работает и/или не приносит прибыли (не обязательно бухгалтерской). А "изящность", "алгоритмическая правильность", "типовое решение" - очень субъективные понятия, напрямую не связанные с решением системой поставленных перед ней задач.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34172463
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, AlexTheRaven, дискуссии с дилетантами, как я уже говорил, мне не интересны.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34172818
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Извините, AlexTheRaven, дискуссии с дилетантами, как я уже говорил, мне не интересны.
Дружище, вы просто не можете аргументировать свою точку зрения - и потому говорите, что это вам неинтересно. А личную компетентность нужно доказывать пользователям (и ещё иногда заказчикам с работодателями) - но не коллегам, и уж точно не участникам форума.

Господа, извините за оффтоп.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34172881
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> вы просто не можете

Отнюдь. Я просто не хочу. Я не хочу рассказывать, почему именно FreeBSD - это не энтерпрайз операционная система. Я не хочу тыкать Вас носом в HCL FreeBSD и списки рекомендованных ОС на сайтах SUN, IBM, HP, SM, Fujitsu, Dell и прочая, прочая, прочая. Не хочу. Потому как считаю это бессмысленным занятием. Точно так же и сейчас: я не хочу убеждать Вас в том, что Вы несете полную чушь, - потому как это тоже бессмысленное, долгое и не интересное занятие. Извините.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34173291
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven guest_20040621<...>Ни о каких кривых EAV речь идти не должна. Ы?
IMHO EAV и связанные с ней "скрипты" нужны просто для того, чтобы пользователь сам мог изменять структуру своих данных. При этом количество задач по поддержке (не столько трудных, сколько рутинных), которые ложатся на разработчика, становится меньше.То, что программистам интересно в очередной раз изобретать велосипед никаких сомнений не вызывает. А вот добавление нового атрибута, который не поддерживается системой, практически никаких плюсов по сопровождению не предоставляет.
AlexTheRavenПочему бы не дать пользователю возможность модифицировать таблицы напрямую? Т.к. это слишком мощное и гибкое средство, которое может позволить пользователю разрушить систему до основания. В случае же использования EAV для того, чтобы восстановить систему, вегда достаточно просто удалить пользовательские настройки.Разрушить систему добавлением полей в таблицы - это, IMHO, надо постараться. Другое дело, что добавленное поле не появится в клиенте без неких дополнительных усилий, но, с одной стороны, эта задача вполне решаема, а с другой стороны, система становится управляемой, получает прозрачную (и самодокументируемую) структуру.
Кстати, в случае с EAV, удаление пользовательских настроек без разрушения системы не вполне тривиальная задача, которую можно решать только понимая как предметную область, так и подход, применяемый EAV.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34173443
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы, PL99, узковато понимаете глобальные задачи проектирования. Какой функционал должен обязательно быть заложен в любую проектируемую базу данных? Возможность ее эволюционного развития, возможность агрегации данных нескольких экземпляров базы данных, возможность ее интеграции в комплексные информационные системы. Для случая проектирования баз данных официального применения (здесь говорили о социальном страховании), последний пункт принимает стратегически важное значение. В первую очередь поэтому ни о каких извратах в виде не реляционных структур разработчику даже думать категорически нельзя. Если бы эти простые принципы соблюдались, и если бы информационными технологиями в стране рулили не полные бараны, давно была бы возможность построить комплексную информационную систему любого уровня, и проблемы, которые пришлось бы при этом решать, носили бы исключительно технический характер. Пока, к сожалению, я вынужден читать об элементарных ошибках тех, кто пытается проектировать такие базы данных. Конечно, я понимаю, что 90% наиболее квалифицированных разработчиков, говорящих на русском языке, проживают за пределами РФ, я понимаю, что проектированию баз данных, в общем, нигде и не учат, - но есть куча источников, которыми можно руководствоваться при решении любых проблем проектирования.

К базам данных корпоративного уровня сказанное относится, пожалуй, даже в большей степени. Потому, что относительная цена ошибки выше. Выше в том смысле, что плохо спроектированную базу данных МИД, например, государство переживет. А вот криво спроектированная учетная софтинка вполне может помочь лавчонке загнуться: что такое налоговые претензии, полагаю, объяснять не нужно.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34173701
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
новый гостьв чем смысл предоставления пользователю приложения возможности добавления новых атрибутов, если он не сможет эти новые атрибуты обрабатывать?
Я что, непонятно объяснил ? С помощью стандартных функций пользователь получает возможность обрабатывать и новые атрибуты и вообще любые новые объекты. В этом и состоит главное преимущество EAV: не просто добавить новый атрибут, но и дать возможность с ним работать.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34174016
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
новый гость
модВсе очень просто: есть заранее написанные функции для доступа к любым (и новым и старым) атрибутам сущностей (даже еще не существующих). Эти функции используются везде: в обработчиках, в отчетах, в формулах и т.д. Т.о. можно добавлять новые сущности и (или) атрибуты и тут же их использовать.Функция доступа, извлекающая значение тривиальна, поэтому интереса не представляет. Вопрос был сформулирован иначе - в чем смысл предоставления пользователю приложения возможности добавления новых атрибутов, если он не сможет эти новые атрибуты обрабатывать?

Petro123 новый гость вы путаете 2 вещи:
- EAV позволяет легко добавить новый атрибут пользователем, но не имеет никакого отношения к новой бизнес-логике по его использованию.
За исключениме того, что в запросах SELECT пользователь его увидит автоматом, т.к. он не в полях, а записях.
Бизнес логика с пособиями одинаково пишется что в EAV что в ROT.... (где-то же надо писать про добвленную колонку разрез-глаз)Не путаю, в том-то все и дело. Именно поэтому и спрашиваю - откуда такой восторг по поводу этого подхода, если плюс у него только один - "в запросах SELECT пользователь его увидит автоматом"?
Обработка-обработке рознь. Есть куча учётных задач, где обработка сводится к
SELECT
UPDATE
DELETE
атрибутов добавленных пользователем во время эксплуатации БД.
Обычно ссылаются на EAV при справочнике товаров с динамическими атрибутами.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34174173
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример медицинской системы
http://iskondopoga.snw.ru/system/isk_6_tech_docmodel.htm
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34174392
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 Есть куча учётных задач,
Есть такая задача : стандартный бухучет: пользователь пишет формулу для расчета суммы проводки, использую только-что добавленные новые объекты и их атрибуты. При проведении формула автоматически вычисляется.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34174411
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99Разрушить систему добавлением полей в таблицы - это, IMHO, надо постараться. Но давая человеку права на добавление нужно дать и на удаление - а кто ж за ним ошибки чистить будет?
ИМХО главное в том, что хоть по горизонтали хоть по вертикали, но динамические параметры требуют словаря данных приложения. В общем случае словарь для каждого параметра задает таблицу, колонку и тип строки.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34174419
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мод Petro123 Есть куча учётных задач,
Есть такая задача : стандартный бухучет: пользователь пишет формулу для расчета суммы проводки, использую только-что добавленные новые объекты и их атрибуты. При проведении формула автоматически вычисляется.
ну да, только она несколько отличается от логики приведённой автором:
Если SSSSSS то .....
Если ВВВВВВВ то .....
Т.е. если логика обработки атрибутов однотипна, то нет никаких проблем.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34174780
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRИМХО главное в том, что хоть по горизонтали хоть по вертикали, но динамические параметры требуют словаря данных приложения. В общем случае словарь для каждого параметра задает таблицу, колонку и тип строки.
Именно так и есть.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34174818
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ну да, только она несколько отличается от логики приведённой автором:
Если SSSSSS то .....
Если ВВВВВВВ то .....
Т.е. если логика обработки атрибутов однотипна, то нет никаких проблем.
Если вы получили значение атрибута то делайте с ним что угодно, однотипность не требуется.
if atrr('имя_объекта', 'имя_атрибута', id объекта)='зеленый' then .....
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34174825
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мод ModelRИМХО главное в том, что хоть по горизонтали хоть по вертикали, но динамические параметры требуют словаря данных приложения. В общем случае словарь для каждого параметра задает таблицу, колонку и тип строки.
Именно так и есть.
таблица и колонка в EAV выносятся из словаря, т.к. константы IMHO
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34175075
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR PL99Разрушить систему добавлением полей в таблицы - это, IMHO, надо постараться. Но давая человеку права на добавление нужно дать и на удаление - а кто ж за ним ошибки чистить будет? Ситуация с удалением полей принципиально не отличается от ситуации
Код: plaintext
delete from <table>;
Предполагается, что право добавлять атрибутику имеет только человек, понимающий последствия подобных модификаций и отвечающий за них.
ModelRИМХО главное в том, что хоть по горизонтали хоть по вертикали, но динамические параметры требуют словаря данных приложения. В общем случае словарь для каждого параметра задает таблицу, колонку и тип строки.Я это и имел ввиду, когда говорил PL99...добавленное поле не появится в клиенте без неких дополнительных усилий, но... эта задача вполне решаема ...
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34175253
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123таблица и колонка в EAV выносятся из словаря, т.к. константы IMHOВ данном случае конечно так.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34175671
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123таблица и колонка в EAV выносятся из словаря, т.к. константы IMHO
Реальные таблицы - конечно константы.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34176247
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621<...>Какой функционал должен обязательно быть заложен в любую проектируемую базу данных? Возможность ее эволюционного развития, возможность агрегации данных нескольких экземпляров базы данных, возможность ее интеграции в комплексные информационные системы.<...>
В любую БД должен быть заложен ровно тот функционал, которого достаточно для решения проблем заказчика. Если заказчик хочет БД для АСУ небольшого склада, то впаривать ему суперинтегрируемое гипермасштабируемое решение - ещё один сравнительно честный способ отъёма денег и/или первый шаг к неудачному проекту.

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

guest_20040621<...>Если бы эти простые принципы соблюдались, и если бы информационными технологиями в стране рулили не полные бараны, давно была бы возможность построить комплексную информационную систему любого уровня, и проблемы, которые пришлось бы при этом решать, носили бы исключительно технический характер.<...>
Главная сложность - не в различии в структур БД, а в "политике", сферах влияния, нечестности тендеров и нежелании читать тех. документацию. И ещё в том, что каждый второй считает свой подход единственно верным.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34176277
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexTheRaven, Вы не поняли. Не "реализован", а "заложен". Другими словами, архитектор базы данных должен рассуждать примерно так: если мне понадобится вести историю изменений, я сделаю это посредством [...] без глобальных изменений структуры данных; если мне потребуется выделить несколько экземпляров базы данных для разных подразделений/задач, я сделаю это посредством [...] и агрегировать данные буду [...]. Если мне потребуется мультиязычный интерфейс, я сделаю это посредством [...]. И так далее, с учетом всех типовых задач. Практический результат такого подхода выражается в осмысленной декомпозиции структуры данных. Никаких "ФИО, дата рождения, номер паспорта" не получится по определению.

Эволюционность развития - это возможность добавления описания сущностей без дополнительной декомпозиции существующей структуры данных. Практически это та же декомпозиция, но выполяемая не только с точки зрения классического проектирования, а и с точки зрения максимизации количества информации.
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34176750
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621AlexTheRaven, Вы не поняли. Не "реализован", а "заложен".<...>
Совершенно согласен с Вами, что нужно думать о будущих перспективах развития, заранее "подстилать себе соломку". Но ещё важно, чтобы это не слишком отражалось на сложности и производительности системы прямо сейчас. Хотя, с другой стороны, правильные решения - обычно просты...
...
Рейтинг: 0 / 0
Организация работы с динамическими параметрами объекта.
    #34181594
Lamazoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня похжая трабла была в зарплате (нескажу почему). Писал на аксе. Создал справочник свойств объекта: таблица типа Код свойства, Наименование свойства, тип свойства (дата, строка, число)
вторая таблица: Код человека, код свойства, значение (хратнится в строковом поле)
далее строил запрос перекрестный который раворачивал в заголовки столбцов - имена свойств, в в "заголовки строк - код человека", в "перекрестье заголовков" - значения - и вот с таким запросом я потом работал - как с обычной таблицей - это кстати позволило ввести формульный расчет в зарплате.
тока в аксе есть ограничение - не более 250 (или 255) полей возможно

_______________________
Проблема маленькая - перезагрузись. Проблема большая - переустанови.
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Организация работы с динамическими параметрами объекта.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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