|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
SeVa в компонентах DevEpress пользователь сам может добавлять поля в формы и гриды. ===== каким образом? Правая кнопка - меню - добавить Поле:ЗадолженностьКонтрагента? :) Попутно на основе метаинформации не кто не запрещает реализовать специально обученные билдеры. ======= время на разработку такого фреймворка-конструктора? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 16:43 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
BelyТогда вопрос - где человек увидит связанную информацию (телефоны, персоны, адреса, сделки, историю итп.)? Или для того, чтобы получить общую информацию надо открыть 5-10-20 форм? Объект может иметь сложную стр-ру, когда св-во объекта - это список. Ессно для работы с такими св-ми открываются самостоят. подформы внутри формы объекта. Все это на EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 16:44 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Bogdanov Andrey АБВ нашей реализации можно свободно добавлять атрибуты, не трогая ни схему, ни формы. Спросите у пользователя, что он предпочтет - пожертвовать качеством интерфейса или избавиться от зависимости от программистов, от затрат на переделки и от задержек между возникновения необходимости в появлении нового атрибута и возможностью работы с ним.А какие возможности работы с атрибутом кроме "сохранить/посмотреть" возникают у пользователя? И кто программирует эти возможности? И нужен ли для этого EAV? Ну если так подходить, то что, в конечном счете, делает любая учетная система? Сохранить/посмотреть. А также поискать и посчитать кое-что и кое-что напечатать. Мне кажется непрактичным стремление некоторых участников дискуссии реализовать в работе с динамическими атрибутами максимальную функциональность - ту же, что и со статическими. Не окупится. Мы в свое время сделали довольно скромную реализацию, и то наверное переусложнили: без наследования можно было обойтись. Хотя конечно оптимальный компромисс зависит от конкретики задачи, в частности, от объемов и от ожидаемого соотношения между статическими и динамическими атрибутами. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 16:47 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Bogdanov Andreyкакие возможности работы с атрибутом кроме "сохранить/посмотреть" возникают у пользователя? И кто программирует эти возможности? И нужен ли для этого EAV? Хороший вопрос. Ессно новый атрибут можно сразу вводить, изменять + использовать в отчетах + в пользовательских формулах при расчетах чего-там, ну и .т.д. Без EAV как-то плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 16:48 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
авторв компонентах DevEpress пользователь сам может добавлять поля в формы и гриды. ===== каким образом? Правая кнопка - меню - добавить Поле:ЗадолженностьКонтрагента? :) Попутно на основе метаинформации не кто не запрещает реализовать специально обученные билдеры. ======= время на разработку такого фреймворка-конструктора? В Девках такой функционал заложен в компоненты изначально(пользователь в рантайме может добавлять, удалять поля).При вызове метода в компоненте, появляется окно со списком полей, которые не задействованы.Простым драг&дроп в нее или из нее поля убираются,или добавляются в компонент.В этом плане ничего не нужно реализовывать.Также можно сохранить/восстановить текущий вид с учетом текущей версии программы. Что подрузумевается по framework'ом? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 17:16 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
SeVa В Девках такой функционал заложен в компоненты изначально(пользователь в рантайме может добавлять, удалять поля).При вызове метода в компоненте, появляется окно со списком полей, которые не задействованы.Простым драг&дроп в нее или из нее поля убираются,или добавляются в компонент.В этом плане ничего не нужно реализовывать.Также можно сохранить/восстановить текущий вид с учетом текущей версии программы. это всё НЕ для EAV. У EAV классического - ОДНО поле КодАтрибута и второе поле ЗначениеАтрибута (или код перечислимой характеристики). Добавление атрибута, это добавка СТРОКИ, причём все типы данных переводятся в variant либо строчный тип. Так что в EAV добавление поля тебе не поможет (если ты не разворачиваешь данные в нормальный вид) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 18:39 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
АБ Мне кажется непрактичным стремление некоторых участников дискуссии реализовать в работе с динамическими атрибутами максимальную функциональность - ту же, что и со статическими. Не окупится. +1 если просто учёт-перечень сервисов, с минимальной бизнес-логикой (например, без истории изменения или редактирования сервиса) то можно и EAV. - если компания с ними проводит какие-нибудь операции, существуют стадии, состояния сервиса - то нет. Обычно в БД таблица - это бизнес-сущность. Между ними достаточно сложные взаимосвязи и действия реализованные в триггерах, хранимых процедурах, связях на уровне БД, FK, ограничениях и т.д. Здесь предложение одно - объект один - сервис. Как и что с ним происходит во время деятельности компании - пусть дядя Вася автоматизирует. Нонсенс IMHO (вся ИС - справочник товаров, тьфу сервисов) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 18:51 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
2 Petro123: Petro123 Обычно в БД таблица - это бизнес-сущность. Между ними достаточно сложные взаимосвязи и действия реализованные в триггерах, хранимых процедурах, связях на уровне БД, FK, ограничениях и т.д. Здесь предложение одно - объект один - сервис. Как и что с ним происходит во время деятельности компании - пусть дядя Вася автоматизирует. Нонсенс IMHO (вся ИС - справочник товаров, тьфу сервисов) Интересно, с чего вы это взяли? С того что я вам не описал полную архитектуру системы??? Я и не собирался этого делать. В этом топике меня интересует только не большая ее часть. Архитектура некоторого динамичного справочника. Ничего больше. Поэтому, не зацикливайтесь на том, что-бы сделать что-то большее того, что я описал. Размеры справочника я сообщал. Первоначально будет порядка сотни объектов, и порядка 400 аттрибутов. Общее количество записей на начальном этапе составит примерно 400000. И так-как в дальнейшем, количество объектов и аттрибутов будет изменяться, мне нужен в пилотном проекте, некий динамичный конструктор(бд/приложение) для этого справочника. Но, при таком объеме (по вашим же словам), использование EAV в базе данных будет тормозить, плюс сложность реализации самого приложения. Ок. Я сделал для себя вывод. И пока склоняюсь к собственной архитектуре, описанной мной в предыдущем посте. Не знаю уж делали ее в 1С или нет.. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 19:19 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Petro123если просто учёт-перечень сервисов, с минимальной бизнес-логикой (например, без истории изменения или редактирования сервиса) то можно и EAV. - если компания с ними проводит какие-нибудь операции, существуют стадии, состояния сервиса - то нет. Согласен, но чисто для полноты картины - в принципе и в этом случае можно держать текущее состояние в EAV, а стадии и состояния - в контексте бизнес-процесса BPM-системы. Есть положительный опыт: наличие BPM-системы позволяет упростить базу - не отслеживать смену состояний, не держать в базе данные, которые заведомо интересны только пока процесс исполняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 19:23 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
lightspeedЯ сделал для себя вывод. И пока склоняюсь к собственной архитектуре, описанной мной в предыдущем посте. Не знаю уж делали ее в 1С или нет.. морочили голову, а оказывается речь вообще идет про 1С. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 19:58 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
_модиспользовать в отчетах + в пользовательских формулах при расчетах чего-там, ну и .т.д. Без EAV как-то плохо.Собственно это все и есть уже программирование. Да, простенькое, на уровне продвинутого пользователя. И как раз EAV очень сильно усложняет этот процесс. Без EAV отчеты в нормальном репортере даже блондинки свять способны. А чуть более продвинутые пользователи на ура SQL пользуют (если не напрямую, то с использованием удобных графических квери-билдеров). Использование же EAV практически убивает возможность использования при работа с БД чего-либо кроме поделок, поставляемых разработчиком вместе со своим EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 23:06 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
provid lightspeedЯ сделал для себя вывод. И пока склоняюсь к собственной архитектуре, описанной мной в предыдущем посте. Не знаю уж делали ее в 1С или нет.. морочили голову, а оказывается речь вообще идет про 1С. Да нет.. Это просто вы не умеете читать.. Что вы здесь вообще делаете??? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 23:17 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
раунд 3-ий заключительный ;) ?! авторТак-же есть набор аттрибутов, так-же заранее не определенный, (адрес, время работы, телефон, наименование, и т.д.) возьмём адрес. Вы спрашивате про подводные камни? Опишите часть требований к ПОДсистеме для работы с атрибутом адрес. Просто строка/почтовый/юридический/из справочника/контроль правильности ввода/запросы с агрегированием/ Будет ли у Вас атрибуты: Арес1 Адрес2 и нужно ли в отчётах будет распологать Адрес2 за Адресом1? Требуется ли от ПодСитсемы отвечать на запросы с SUM, MAX и т.д.? Предпологаются ли перечислимые характеристики-атрибутов? (большой-маленький, 0,5-1,2 ....)? Механизм их создания, правки, удаления Ваш прототип IMHO должен будет ответить на все эти вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2008, 23:59 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
_модОбъект может иметь сложную стр-ру, когда св-во объекта - это список. Ессно для работы с такими св-ми открываются самостоят. подформы внутри формы объекта. Все это на 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.
или вобще - затягиваем данные в память клиентского компьютера и дальше изображаем из себя SQL машину (сортировки, фильтры, джоины)? как именно? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 00:23 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Рискну предложить еще два варианта для обсуждения. Интересно будет услышать мнение других. 1) Еспользование sys.Anydata для хранения значений. Из минусов когда пробывал в 10g хранить LOB данные, хоть в документации и есть соответсвующая фукция она не работает. 2) Если у вас известно количество атрибутов на начальном этапе то можно создать таблицу с набором универсальных колонок кажого основного типа и таблицу для с описание в какой колонке для данного типа сервиса храница определенный атрибут. На основе этой таблички строить динамическиt SQL Производительность будет максимальна. NULL как известо места не требует. Если количество атраибтов превысит аксимальное количство калонок построить еще таблицу с отношением 1 к 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 03:18 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
немного оффтопа по сабжу)) насколько я понял по существу рассматривается вопрос о реализации ООП средствами реляционной СУБД а это упрется в разработку языка для работы постоянными (persistent) объектами компилятора для него (или как минимум транслятора в язык SQL) http://www.ibase.ru/devinfo/oop_rdbms.htm по моему это слишком большая задача и судя по инофрмации в инете эту проблему пытаются безуспешно (под успехом я понимаю получение такой же рапространенности как и реляционные СУБД) крупные исследовательские компании уже довольно долго, persistent objects хотя потребность в подобных системах все растет и растет интересно чем это все дело кончится мне начинает казаться, что системы для работы с постоянными объектами требуют иного вида хранилищ, чем реляционные базы. и еще ООП ведь не панацея - вот посмотрите сами мы пытаемся не сколько реализовать технологию сущность-атрибут, а сколько внести большую структурированность в табличные базы! А в этой области тоже достаточно много наработок. ну например http://www.ibase.ru/devinfo/treedb.htm и что? куча частностей, а общей теории нет (опять таки сравнивайте с РБД) так что, если практика заходит в тупик физик обычно идет к математику (мол что у тебя там нового)) ), так не пора ли обратиться что там ученые понаразработали)) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 08:55 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Bogdanov AndreyИспользование же EAV практически убивает возможность использования при работа с БД чего-либо кроме поделок, поставляемых разработчиком вместе со своим EAV. Это верно, но такие "поделки" как раз и называются FW. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 09:31 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Belyкак именно? Поскольку obj_id известен, то подсписки формируются просто по obj_id и имени этого подсписка, ведь это один атрибут-таблица. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 09:42 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
sherzod_по существу рассматривается вопрос о реализации ООП средствами реляционной СУБД Нет, речь идет о системах, ориентированных на конечного пользователя, когда он может самостоятельно менять бизнес-логику, структуру данных - практически все. Вот для них и применяется EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 09:45 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
_модЭто верно, но такие "поделки" как раз и называются FW.Я не против поделок. Некоторые из них даже весьма удобны и удачны. Правда то, что каждый разработчик прикладной системы начинает с разработки собственного FW, наверное не свосем верно. Но это уже личное дело разработчика и того, кто ему труд оплачивает. Я против того, чтобы "результатом" этого FW был уродец под названием EAV, так как этот уродец резко ограничивает пользователя по возможности использования чего-то еще кроме поделки. Сейчас существует довольно много удобных средств для отчетности, аналитики или выгрузки данных из реляционными СУБД. И постоянно появляются новые. Прикрутить какой-нибудь OLAP к EAV базе становится нетривиальной для пользователя задачей. Ну а если способностей (или времени) хватает только на FW с EAV, то не стоит за такое браться. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 09:54 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
_модПоскольку obj_id известен, то подсписки формируются просто по obj_id и имени этого подсписка, ведь это один атрибут-таблица.Вы не поняли - как именно данные попадают в грид? посредством хитрого SQL запроса? или запихиваете в грид данные на клиенте? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 10:10 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Еще раз перечитал начальный пост(раньше по диагонали). Весь требуемый функционал реализован в 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'ов с параметрами. Думаю, в качестве прототипа(или посмотреть на подход) и оценки производительности сойдет. Исходники есть. Тестовый скрипт вложил ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 14:26 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Bogdanov Andrey Я против того, чтобы "результатом" этого FW был уродец под названием EAV, так как этот уродец резко ограничивает пользователя по возможности использования чего-то еще кроме поделки. EAV - это способ создания систем для конечного пользователя ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 16:24 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Belyкак именно данные попадают в грид? посредством хитрого SQL запроса? Да, и не очень хитрого. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 16:25 |
|
изменяемый набор полей, в каждой таблице
|
|||
---|---|---|---|
#18+
Такие "уродцы" неплохо иметь для пилотных проектов,во время разработки и для полукоробочных вариантов. При методе - с шашками на танки, постоянно возникает необходимость прикрутить какой-нибудь атрибут, а это тормозит процесс.Поэтому приходится тоже ковырять подобный вариант. 2 Petro, в результате будут строго типизированные объекты, что такое EAV,что нужно для нормальной работы компонентов форм, я имею представление ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 16:49 |
|
|
start [/forum/topic.php?fid=33&msg=35500019&tid=1548708]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 207ms |
0 / 0 |