powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / изменяемый набор полей, в каждой таблице
25 сообщений из 123, страница 3 из 5
изменяемый набор полей, в каждой таблице
    #35499896
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa
в компонентах DevEpress пользователь сам может добавлять поля в формы и гриды.

===== каким образом? Правая кнопка - меню - добавить Поле:ЗадолженностьКонтрагента? :)

Попутно на основе метаинформации не кто не запрещает реализовать специально обученные билдеры.

======= время на разработку такого фреймворка-конструктора?
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35499898
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelyТогда вопрос - где человек увидит связанную информацию (телефоны, персоны, адреса, сделки, историю итп.)?
Или для того, чтобы получить общую информацию надо открыть 5-10-20 форм?

Объект может иметь сложную стр-ру, когда св-во объекта - это список. Ессно для работы с такими св-ми открываются самостоят. подформы внутри формы объекта. Все это на EAV.
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35499915
АБ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey АБВ нашей реализации можно свободно добавлять атрибуты, не трогая ни схему, ни формы. Спросите у пользователя, что он предпочтет - пожертвовать качеством интерфейса или избавиться от зависимости от программистов, от затрат на переделки и от задержек между возникновения необходимости в появлении нового атрибута и возможностью работы с ним.А какие возможности работы с атрибутом кроме "сохранить/посмотреть" возникают у пользователя? И кто программирует эти возможности? И нужен ли для этого EAV? Ну если так подходить, то что, в конечном счете, делает любая учетная система? Сохранить/посмотреть. А также поискать и посчитать кое-что и кое-что напечатать.

Мне кажется непрактичным стремление некоторых участников дискуссии реализовать в работе с динамическими атрибутами максимальную функциональность - ту же, что и со статическими. Не окупится. Мы в свое время сделали довольно скромную реализацию, и то наверное переусложнили: без наследования можно было обойтись. Хотя конечно оптимальный компромисс зависит от конкретики задачи, в частности, от объемов и от ожидаемого соотношения между статическими и динамическими атрибутами.
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35499922
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bogdanov Andreyкакие возможности работы с атрибутом кроме "сохранить/посмотреть" возникают у пользователя? И кто программирует эти возможности? И нужен ли для этого EAV?
Хороший вопрос. Ессно новый атрибут можно сразу вводить, изменять + использовать в отчетах + в пользовательских формулах при расчетах чего-там, ну и .т.д. Без EAV как-то плохо.
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500019
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторв компонентах DevEpress пользователь сам может добавлять поля в формы и гриды.

===== каким образом? Правая кнопка - меню - добавить Поле:ЗадолженностьКонтрагента? :)

Попутно на основе метаинформации не кто не запрещает реализовать специально обученные билдеры.

======= время на разработку такого фреймворка-конструктора?

В Девках такой функционал заложен в компоненты изначально(пользователь в рантайме может добавлять, удалять поля).При вызове метода в компоненте, появляется окно со списком полей, которые не задействованы.Простым драг&дроп в нее или из нее поля убираются,или добавляются в компонент.В этом плане ничего не нужно реализовывать.Также можно сохранить/восстановить текущий вид с учетом текущей версии программы.
Что подрузумевается по framework'ом?
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500262
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa
В Девках такой функционал заложен в компоненты изначально(пользователь в рантайме может добавлять, удалять поля).При вызове метода в компоненте, появляется окно со списком полей, которые не задействованы.Простым драг&дроп в нее или из нее поля убираются,или добавляются в компонент.В этом плане ничего не нужно реализовывать.Также можно сохранить/восстановить текущий вид с учетом текущей версии программы.

это всё НЕ для EAV.
У EAV классического - ОДНО поле КодАтрибута и второе поле ЗначениеАтрибута (или код перечислимой характеристики).
Добавление атрибута, это добавка СТРОКИ, причём все типы данных переводятся в variant либо строчный тип.
Так что в EAV добавление поля тебе не поможет (если ты не разворачиваешь данные в нормальный вид)
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500280
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АБ
Мне кажется непрактичным стремление некоторых участников дискуссии реализовать в работе с динамическими атрибутами максимальную функциональность - ту же, что и со статическими. Не окупится.
+1
если просто учёт-перечень сервисов, с минимальной бизнес-логикой (например, без истории изменения или редактирования сервиса) то можно и EAV.
- если компания с ними проводит какие-нибудь операции, существуют стадии, состояния сервиса - то нет.

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

Здесь предложение одно - объект один - сервис. Как и что с ним происходит во время деятельности компании - пусть дядя Вася автоматизирует.

Нонсенс IMHO (вся ИС - справочник товаров, тьфу сервисов)
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500325
lightspeed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Petro123:
Petro123
Обычно в БД таблица - это бизнес-сущность. Между ними достаточно сложные взаимосвязи и действия реализованные в триггерах, хранимых процедурах, связях на уровне БД, FK, ограничениях и т.д.

Здесь предложение одно - объект один - сервис. Как и что с ним происходит во время деятельности компании - пусть дядя Вася автоматизирует.

Нонсенс IMHO (вся ИС - справочник товаров, тьфу сервисов)


Интересно, с чего вы это взяли?
С того что я вам не описал полную архитектуру системы??? Я и не собирался этого делать. В этом топике меня интересует только не большая ее часть. Архитектура некоторого динамичного справочника. Ничего больше. Поэтому, не зацикливайтесь на том, что-бы сделать что-то большее того, что я описал. Размеры справочника я сообщал. Первоначально будет порядка сотни объектов, и порядка 400 аттрибутов. Общее количество записей на начальном этапе составит примерно 400000. И так-как в дальнейшем, количество объектов и аттрибутов будет изменяться, мне нужен в пилотном проекте, некий динамичный конструктор(бд/приложение) для этого справочника. Но, при таком объеме (по вашим же словам), использование EAV в базе данных будет тормозить, плюс сложность реализации самого приложения. Ок. Я сделал для себя вывод. И пока склоняюсь к собственной архитектуре, описанной мной в предыдущем посте. Не знаю уж делали ее в 1С или нет..
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500330
АБ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123если просто учёт-перечень сервисов, с минимальной бизнес-логикой (например, без истории изменения или редактирования сервиса) то можно и EAV.
- если компания с ними проводит какие-нибудь операции, существуют стадии, состояния сервиса - то нет. Согласен, но чисто для полноты картины - в принципе и в этом случае можно держать текущее состояние в EAV, а стадии и состояния - в контексте бизнес-процесса BPM-системы. Есть положительный опыт: наличие BPM-системы позволяет упростить базу - не отслеживать смену состояний, не держать в базе данные, которые заведомо интересны только пока процесс исполняется.
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500361
provid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lightspeedЯ сделал для себя вывод. И пока склоняюсь к собственной архитектуре, описанной мной в предыдущем посте. Не знаю уж делали ее в 1С или нет..
морочили голову, а оказывается речь вообще идет про 1С.
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500546
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модиспользовать в отчетах + в пользовательских формулах при расчетах чего-там, ну и .т.д. Без EAV как-то плохо.Собственно это все и есть уже программирование. Да, простенькое, на уровне продвинутого пользователя. И как раз EAV очень сильно усложняет этот процесс.
Без EAV отчеты в нормальном репортере даже блондинки свять способны. А чуть более продвинутые пользователи на ура SQL пользуют (если не напрямую, то с использованием удобных графических квери-билдеров). Использование же EAV практически убивает возможность использования при работа с БД чего-либо кроме поделок, поставляемых разработчиком вместе со своим EAV.
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500556
lightspeed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
provid lightspeedЯ сделал для себя вывод. И пока склоняюсь к собственной архитектуре, описанной мной в предыдущем посте. Не знаю уж делали ее в 1С или нет..
морочили голову, а оказывается речь вообще идет про 1С.

Да нет.. Это просто вы не умеете читать.. Что вы здесь вообще делаете???
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500594
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
раунд 3-ий заключительный ;) ?!
авторТак-же есть набор аттрибутов, так-же заранее не определенный, (адрес, время работы, телефон, наименование, и т.д.)
возьмём адрес.
Вы спрашивате про подводные камни?

Опишите часть требований к ПОДсистеме для работы с атрибутом адрес.

Просто строка/почтовый/юридический/из справочника/контроль правильности ввода/запросы с агрегированием/

Будет ли у Вас атрибуты: Арес1 Адрес2 и нужно ли в отчётах будет распологать Адрес2 за Адресом1?

Требуется ли от ПодСитсемы отвечать на запросы с SUM, MAX и т.д.?

Предпологаются ли перечислимые характеристики-атрибутов? (большой-маленький, 0,5-1,2 ....)? Механизм их создания, правки, удаления

Ваш прототип IMHO должен будет ответить на все эти вопросы.
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500609
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модОбъект может иметь сложную стр-ру, когда св-во объекта - это список. Ессно для работы с такими св-ми открываются самостоят. подформы внутри формы объекта. Все это на EAV.т.е. списки делаем вот такими запросами?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
--Writing queries might look pretty straightforward, but its impossible to do in a 
--performant fashion. For example, if we wanted to get everyone that was born in MARCH or 
--has a LAST_NAME = "SMITH", we could simply take the query from above and just wrap an 
--inline view around that:


ops$tkyte@ORA920>; select *
   2     from (
   3   select 
     max(decode(attrName, 'FIRST_NAME', value, null)) first_name,
   4   max(decode(attrName, 'LAST_NAME',  value, null)) last_name,
   5   max(decode(attrName, 'DATE_OF_BIRTH',  value, null)) 
                                                      date_of_birth
   6     from objects, object_attributes, attributes
   7    where attributes.attrName in ( 'FIRST_NAME', 
                                     'LAST_NAME', 'DATE_OF_BIRTH' )
   8      and object_attributes.attrId = attributes.attrId
   9      and object_attributes.oid = objects.oid
  10      and objects.name = 'PERSON'
  11    group by objects.oid
  12          )
  13    where last_name = 'Smith'
  14       or date_of_birth like '%-mar-%'
  15   /

взято отсюда

или вобще - затягиваем данные в память клиентского компьютера и дальше изображаем из себя SQL машину (сортировки, фильтры, джоины)?
как именно?
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500660
stuard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рискну предложить еще два варианта для обсуждения. Интересно будет услышать мнение других.

1) Еспользование sys.Anydata для хранения значений. Из минусов когда пробывал в 10g хранить LOB данные, хоть в документации и есть соответсвующая фукция она не работает.
2) Если у вас известно количество атрибутов на начальном этапе то можно создать таблицу с набором универсальных колонок кажого основного типа и таблицу для с описание в какой колонке для данного типа сервиса храница определенный атрибут. На основе этой таблички строить динамическиt SQL Производительность будет максимальна. NULL как известо места не требует. Если количество атраибтов превысит аксимальное количство калонок построить еще таблицу с отношением 1 к 1
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500776
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
немного оффтопа по сабжу))
насколько я понял
по существу рассматривается вопрос о реализации ООП средствами реляционной СУБД
а это упрется в разработку языка для работы постоянными (persistent) объектами
компилятора для него (или как минимум транслятора в язык SQL)

http://www.ibase.ru/devinfo/oop_rdbms.htm

по моему это слишком большая задача и судя по инофрмации в инете эту проблему пытаются безуспешно (под успехом я понимаю получение такой же рапространенности как и реляционные СУБД) крупные исследовательские компании уже довольно долго,
persistent objects
хотя потребность в подобных системах все растет и растет

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

и еще ООП ведь не панацея - вот посмотрите сами мы пытаемся не сколько реализовать технологию сущность-атрибут, а сколько внести большую структурированность в табличные базы! А в этой области тоже достаточно много наработок. ну например
http://www.ibase.ru/devinfo/treedb.htm

и что? куча частностей, а общей теории нет (опять таки сравнивайте с РБД)

так что, если практика заходит в тупик физик обычно идет к математику (мол что у тебя там нового)) ), так не пора ли обратиться что там ученые понаразработали))
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500819
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bogdanov AndreyИспользование же EAV практически убивает возможность использования при работа с БД чего-либо кроме поделок, поставляемых разработчиком вместе со своим EAV.
Это верно, но такие "поделки" как раз и называются FW.
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500837
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Belyкак именно?
Поскольку obj_id известен, то подсписки формируются просто по obj_id и имени этого подсписка, ведь это один атрибут-таблица.
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500844
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sherzod_по существу рассматривается вопрос о реализации ООП средствами реляционной СУБД
Нет, речь идет о системах, ориентированных на конечного пользователя, когда он может самостоятельно менять бизнес-логику, структуру данных - практически все. Вот для них и применяется EAV.
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500856
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модЭто верно, но такие "поделки" как раз и называются FW.Я не против поделок. Некоторые из них даже весьма удобны и удачны. Правда то, что каждый разработчик прикладной системы начинает с разработки собственного FW, наверное не свосем верно. Но это уже личное дело разработчика и того, кто ему труд оплачивает.
Я против того, чтобы "результатом" этого FW был уродец под названием EAV, так как этот уродец резко ограничивает пользователя по возможности использования чего-то еще кроме поделки. Сейчас существует довольно много удобных средств для отчетности, аналитики или выгрузки данных из реляционными СУБД. И постоянно появляются новые. Прикрутить какой-нибудь OLAP к EAV базе становится нетривиальной для пользователя задачей.
Ну а если способностей (или времени) хватает только на FW с EAV, то не стоит за такое браться.
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35500887
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модПоскольку obj_id известен, то подсписки формируются просто по obj_id и имени этого подсписка, ведь это один атрибут-таблица.Вы не поняли - как именно данные попадают в грид?

посредством хитрого SQL запроса?
или запихиваете в грид данные на клиенте?
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35501748
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз перечитал начальный пост(раньше по диагонали).
Весь требуемый функционал реализован в SQL Server O/R Hybrid Database

SQL Server O/R dbms supports the following Pure Object-Oriented concepts:
Classes / Sub Classes
Domain Integrity
Inheritance
Polymorphism
Complex Objects

Beyond pure OOdbms, SQL Server O/R dbms adds:
Workflow State
Complex Associations
Collections & Aggregations
Association Spidering
Faзade Code Generation

При создании классов и добавлении атрибутов автоматически создаются view и процедуры для выборки со всеми атрибутами.Реализованы процедуры для select'ов и update'ов с параметрами.
Думаю, в качестве прототипа(или посмотреть на подход) и оценки производительности сойдет.
Исходники есть.
Тестовый скрипт вложил
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35502167
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bogdanov Andrey
Я против того, чтобы "результатом" этого FW был уродец под названием EAV, так как этот уродец резко ограничивает пользователя по возможности использования чего-то еще кроме поделки.

EAV - это способ создания систем для конечного пользователя
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35502170
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Belyкак именно данные попадают в грид?
посредством хитрого SQL запроса?
Да, и не очень хитрого.
...
Рейтинг: 0 / 0
изменяемый набор полей, в каждой таблице
    #35502244
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такие "уродцы" неплохо иметь для пилотных проектов,во время разработки и для полукоробочных вариантов.
При методе - с шашками на танки, постоянно возникает необходимость прикрутить какой-нибудь атрибут, а это тормозит процесс.Поэтому приходится тоже ковырять подобный вариант.
2 Petro, в результате будут строго типизированные объекты, что такое EAV,что нужно для нормальной работы компонентов форм, я имею представление
...
Рейтинг: 0 / 0
25 сообщений из 123, страница 3 из 5
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / изменяемый набор полей, в каждой таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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