|
|
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Приведу пример чтобы было понятнее. Потому что сформулировать тему граммотно не очень получается. Есть например карточки товаров Каждая карточка может иметь свой уникальный и не уникальный набор атрибутов Задача состоит в том чтобы дать возможность пользователю через интерфейс создавать свои карточки (сущности). То есть по сути создавать таблицы Как это лучше реализовать. create table выполнять. Или же Создать виртуальную бд на базе нескольких. Например. в одной таблице хранятиться. Список таблиц. В другой список полей. В третий список значений. Или например создать таблицу универсальную с большим запасом полей анонимных. Вообщем наверное много чего можно придумать. Наверное у каждого способа есть недостатки и достоинства. Хотелось по этому поводу получить какую нибудь фундаментальную информацию. Повторяю Даже не знаю как охарактеризовать данную тему. Ну или у кого какой опыт есть по этому поводу тоже буду рад если поделитесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 10:24 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Foxluck, Есть еще EAV. У него свои тараканы (как и у всех перечисленных вариантов). Ответ - что лучше использовать - можно дать только тогда, когда будет понятно ЗАЧЕМ человек создает новую сущность и ЧТО С НЕЙ будут делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 12:27 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Хорошо переформулирую. Задача состоит в том чтобы пользователь через интерфейс мог создавать свои сущности. То что нужны еще механизмы обработки согласен. Скажем так пусть существует механизм (алгоритм) использующий метаинформацию этих сущностей. Метаинформация сущности это например кол-во полей и их тип. Имя таблицы. Вообщем все что описывает саму сущность. Или возможно она сама себя самоописывает. Скажем так не лучший способ интересует, а вообще все способы какие есть. А также как это тематика вообще называется. Как можно классифицировать данную задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 13:18 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
> Как можно классифицировать данную задачу. Набор антипаттернов проектирования. Большая такая задача, серьезная. А возникает эта задача потому, что работу архитектора базы данных пытаются выполнять люди, которые в принципе не должны и не умеют этого делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 13:57 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Да, круто. Еще каждому пользователю дать доступ в код процедур алгоритмов - вообще полный бардак будет. А что касается товаров - товары ведь объединены в группы, для каждой группы создать несколько полей (сущностей), которые пользователь должен заносить обязательно. но не смог бы удалять, ну а потом пусть он добавляет свои сущности. Только как их грамотно обработать? Структура таблиц: Товары: ТоварИД, Название, ГруппаТовараИД ...... СвойстваТовара: СвойствоИД, ГруппаТовараИД, ПользовательИД, ЗащищеноОтУдаления, ВыражениеСвойства, ТипДанныхСвойства .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 14:01 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Ваши насмешки разделяю полностью. Может проще научить пользователя. Реалиционным БД и научить писать скрипты. Ну все же есть некий тут разумный стержень. Создать еще один слой абстракции. Такой конструктор который намного более ограничен чем предшествуй инструмент в виде sql и средств администрирования но в тоже время намного проще. И со своей конкретной задачей справляющийся. Конкретно задача в примере состоит в том. чтобы. Создавать Карточки Товара (юзерский язык ) Ну еще конкретнее. Про обработку что с ними потом можно делать. Вот товар Утюг У него есть свойства Имя, Габариты. Есть товар Телевизор у него есть Имя, Габариты, + Диагональ. Когда пользователь выбирает посмотреть все телевизоры. Пользователь видит список Телевизоров в каждом элементе списка он видит характеристики и длину диагонали тоже По этому полю можно сортировать делать поиск. еще что то. А когда выбирают все Утюги диагонали нет. Каждый раз гонять программиста создай мне товар например "Телефон " со своими какими то параметрами не очень то канает. RodionAT, Решение похоже на. Создать виртуальную бд на базе нескольких таблиц. То есть ГруппаТоваров - это список таблиц. Свойство Товара - список полей. .... Да вот тут интереснее как это все обрабатывать. Потом. Написать можно но насколько это разумно быстро и прочее. Я вот склоняюсь к идеи. Создавать все таки таблицы create table и использовать обычный sql . А не писать фиг знает какой механизм обработки. Для этих виртуальных таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 14:34 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
FoxluckВаши насмешки разделяю полностью. Может проще научить пользователя. Реалиционным БД и научить писать скрипты. ... Вот товар Утюг У него есть свойства Имя, Габариты. Есть товар Телевизор у него есть Имя, Габариты, + Диагональ. Когда пользователь выбирает посмотреть все телевизоры. Пользователь видит список Телевизоров в каждом элементе списка он видит характеристики и длину диагонали тоже По этому полю можно сортировать делать поиск. еще что то. То есть ГруппаТоваров - это список таблиц. Свойство Товара - список полей. .... Да вот тут интереснее как это все обрабатывать. Потом. Написать можно но насколько это разумно быстро и прочее. Я вот склоняюсь к идеи. Создавать все таки таблицы create table и использовать обычный sql . А не писать фиг знает какой механизм обработки. Для этих виртуальных таблиц.Для этого конкретного случая я бы использовал EAV + описание метаинформации (возможно тоже на EAV). Собственно, то что вы пытаетесь изобразить - каталог товаров какого-нибудь интернет-магазина. Поскольку товаров будет не так много - то EAV подойдет. PS: не советую обощать этот принцип. На больших объемах данных EAV вам покажет какой он на самом деле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 14:40 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
> насмешки разделяю полностью Это не насмешки, это констатация факта. > есть некий тут разумный стержень Ни одного, увы. > Создать еще один слой абстракции А это совершенно другая задача, которая не имеет к сформулированной никакого отношения. Метаметамодели, отличные от стандартных, используются достаточно широко. > Вот товар Посмотрите: Вы еще не написали ни строчки DDL, а уже сделали кучу ошибок. Утюг - это не товар. Утюг - это бытовой прибор вполне конкретного назначения. И характеристики утюга как товара ничего общего с характеристиками утюга как бытового прибора не имеют. За любым желанием дать пользователю возможность ковырять структуру данных стоит неумение проектировать. О чем я и говорил. Начните с учебников по проектированию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 15:01 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Bely, Да вот концепция EAV я не знал как это называется правильно. Когда имел в виду виртуальную Бд на основе нескольких таблиц. Спасибо за часть ответа. Вот этот EAV мне не нравиться. из за того. что нормальный sql летит к черту. это вообще какой гипертрофированный предельный случай нормализации. вся нормализация затратиталась на эту гипертрофированность и дальше вся нормальная привычная работа с бд летит к черту. И про большие объемы данных я согласен. что все будет очень плохо. Интернет магазин может быть и не таким уж и маленьким по объему товаров. Также просто у магазина может быть большая посещаемость. Да и потом не обязательно это магазин. Может просто какой -то инфо. каталог. Плюс косость программирования. Вот Теперь могу лучше сформулировать. EAV против create table. Почему бы не создавать таблицы через ddl. а потом работать с ними как обычно. Почему вы рекомендуете EAV? А про то что утюг не товар это верно подмечено :). Хотя утюг с ценником это уже товар :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 15:27 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Да вот еще одно решение Наследование. Если создать абстрактный товар. описать там общие свойства. Абстрактный товар tovar id name cost дальше наследник custom_tovar id - parent_id - ид объекта от которого наследуемся. diagonal - новый атрибут. Тоже не знаю как этот подход грамотно называется наверное что то вроде ООСУБД мне кажется он более разумным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 15:45 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
FoxluckНу все же есть некий тут разумный стержень. Создать еще один слой абстракции. выделить юбому пользователю собственный SandBox. но что делать с критическим апдейтами системы - послать наработки пользователя в топку? (многие так и делают - ИМХО это крайне некорректно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 15:56 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Нормальное решение состоит - 1.плоские таблицы (описание предметной области) + 2.ЕАV (для пользовательских расширений). Но, хорошо бы первую часть описывать (генерировать) так же собственными средствами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 16:07 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
proposed amendment, Для критичных апдейтов придеться писать конверторы данных. Думаю это решаемо. Еще интересный способ прочел у вас на форуме. Тоже очень интересный. цитирую >Все извращения,которые не укладываются в общую модель, хранил бы в поле XML(список с >двумя полями:наименование,значение).Минимум телодвижений, и пусть себе ни в чем не >отказывают. Гибридные БД. Тоже очень интересное решение. Есть например товар с набором общих признаков. Все дополнительные поля. Хранить в неком дополнительном поле в формате XML. Все эти решения гораздо интереснее чем этот EAV Но почему то именно его все вспоминают в первую очередь. И тут мне его тоже порекомендовали. Хотя если читать. Другие ветки этго форума про EAV , он далеко не однозначен. Да я и сам как то с ним сталкивался. Он работает безусловно. Но смотриться ужасно. Тех поддержка сложна. Скорость явно будет плохой. Все не прозрачно. Какой то целый движок работы с EAV надо реализовывать. Нужна реализация EAV у меня её просто нет. Самому писать не хочеться. Должен быть стандарт тогда уж. Опять же язык запросов какой то нужен специальный для EAV Фильтры группировки. Все то что есть в обычном sql. Где это можно узнать? Если уж мы выбираем EAV который являеться виртуальной копией БД. Тогда почему уж не использовать create table , alter table. Зачем делать зеркало системы которая уже есть. В случае гибридных и ОО случаев тут еще можно спорить согласен. А вот EAV вообще являеться попыткой повторить функционал который итак представляет СУБД. (create table , alter table) Может я ошибаюсь но мне это так видеться пока что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 16:18 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовНормальное решение состоит. ИМХО в любом случае получится некоторое, в той или иной степени актуальное, пересечение некоторых множеств - пользовательской и родительской - первый вопрос, что делать если родительское существенно модифицируется. примеры (элементарные) - меняется структура директорий на сервере - пользователи плачут кровавыми слезами; оптимизируются справочники КИС - пользовательские подключенные системы валятся с ног (да мало ли таких примеров - в общем случае "обратная совместимость" при развитии систем) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 16:20 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
FoxluckА вот EAV вообще являеться попыткой повторить функционал который итак представляет СУБД. (create table , alter table) Может я ошибаюсь но мне это так видеться пока что. ИМХО не то, чтобы повторить... использовать существующий движок БД и накатать поверх него любой универсальный функционал. хороших, эффективных, решений промышленного масштаба я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 16:23 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
proposed amendmentFoxluckА вот EAV вообще являеться попыткой повторить функционал который итак представляет СУБД. (create table , alter table) Может я ошибаюсь но мне это так видеться пока что. ИМХО не то, чтобы повторить... использовать существующий движок БД и накатать поверх него любой универсальный функционал. хороших, эффективных, решений промышленного масштаба я не знаю. А откуда их знать если их нет просто и быть не может. потому что это бред. Кто нибудь знает хорошие решения EAV какие то возможно спецификации ? XML и ОО поддержка осуществляются некоторыми СУБД. а вот EAV на уровне СУБД осуществлена где нибудь? Кто нибудь слышал об этом. :) Этого не может быть потому что это дублирование того Базового функционала который есть. Что дает EAV. ? Чего не может дать ddl и dml ? Я слышал аргументацию что вроде какие то проблемы с безопаснотью. что это плохо когда пользователь создает 200 таблиц и т.п. может у вас есть какая нибудь буду рад услышать критику. ну или поддержку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 16:44 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Foxluck, Зря вы со своими определениями типа "бред" и т.д. сыплете. Возьмем простой случай. Описываем процесс. Допустим для этого процесса процессором может быть любой ПС с процом от П4, или любой мейнфрейм, или ПС с процом П3 но с спецприблудой, или 25 квалифицированных расчетчиков с Ситизен в руках и т.д. Второй пример, В сборку могут войти сборки, детали, комплексы, комплекты,... И при этом детали должны быть только закаленные.. Все это надо декларативно описывать. Описывает ПОЛЬЗОВАТЕЛЬ. Т.е. требуются динаически скомпанованные ТИПЫ и связи. Требуется навигационный механизм вдоль и поперек, через агрегатные типы и т.д. Можно все это жестко прописать в коде, а можно вывести наружу для настройки пользователем. Реализация ЕАВ < 1000 строк кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 17:23 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Foxluck, по поводу создания по таблице на сущность, ИМХО: во 1-х, не надо пользователю давать права на create/drop каких либо объктов БД... мало ли что он вам под этим логином и паролем надропает. токо SELECT/INSERT/UPDATE, а ещё лучше только вызов процедур и запросы из вьюх. во 2-х, ну сделает вам пользователь на каждую "сущность" по таблице.. а если вам надо получить сводную информацию по всем сущностям? будете генерировать динамический запрос в котором селект по всем 200-м таблицам? когда всё всего в нескольких таблицах (фиксированное колличество), ещё и в НФ, возможно заранее составить "нормальные" запросы, то есть над такими данными в дальнейшем проще производить различные манипуляции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 17:31 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
proposed amendment, не понял про директории и т.д. А если имеется ввиду описание системых типов, то при их изменении меняются ии удаляются и пользовательские, конечно при имеющихся правах и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 17:32 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Для оптимизации и подключения внешних процедур надо предусмотреть настройку на способ хранение типов (полская таблица или ЕАВ). Устойчивые структуры нормальная система должна дибо автоматом либо по запросу продублировать вобеих структурах или где то в одной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 17:35 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Foxluck, http://itblogs.ru/blogs/ cio_anatomy/archive/2008/04/11/26906.aspx ... Базу сгенерить не проблема Проблема потом иногда добавить поле в таблицу в которой уже десяток-другой миллионов записей. А если надо, чтобы оно с данного момента для всех новых записей было NOT NULL? А если для новых поле больше не нужно? Как его из таблицы удалять? Под живыми пользователями. Отвечать на вопросы из 98 года, тогда и серверы послаюже были и со sparse полями было не везде ... ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 18:17 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифов, Про динамически скомпоннованые типы не совсем понял. 1000 строк но какого кода. Это явно не бизнес логика. месяц работы. Тут интересная мысль была что использовать этот механизм только очень осторожно совместно с обычными плоскими таблицами. кажется человек частично и понимает проблемы которые могут возникнуть с EAV. Я же говорю что EAV абсолютно неуместен в данной задачи. Ну так что мешает динамично сгенирить ddl и dml. генерить ddl и dml кажется сложнее чем делать какие insert delete операции над тремя таблицами Добавил строку в таблице сущностей таблица создана. Добавил строку в таблице типов Тип создан. Но легкость обманчива. Потом работать с этим очень неудобно. Потом нужны механизмы вывода фильтрации и прочее. все это надо тоже писать. Все это потом еще и очень плохо читаемо. Нужны свои дебаг инструменты создавать наверное будет. Вообще пример хороший приведен. кажется все таки этот EAV в некоторых случаях оправдан. Но явно не для этого случая, явно вообще не для СУБД. То есть механизм EAV можно применять но не совместно с обычными СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 18:18 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
КифирчикFoxluck, по поводу создания по таблице на сущность, ИМХО: во 1-х, не надо пользователю давать права на create/drop каких либо объктов БД... мало ли что он вам под этим логином и паролем надропает. токо SELECT/INSERT/UPDATE, а ещё лучше только вызов процедур и запросы из вьюх. во 2-х, ну сделает вам пользователь на каждую "сущность" по таблице.. а если вам надо получить сводную информацию по всем сущностям? будете генерировать динамический запрос в котором селект по всем 200-м таблицам? когда всё всего в нескольких таблицах (фиксированное колличество), ещё и в НФ, возможно заранее составить "нормальные" запросы, то есть над такими данными в дальнейшем проще производить различные манипуляции а а операцию DELETE не забыли ? Дело в том что при EAV вся система безопасности летит медным тазом. Потому что таблицы виртуальные становятся и удалять их можно DELETE том обычным. Drop для этого уже не нужен. по поводу общей выборки из 200 таблиц интересное замечание. Но это решаемо поскольку решаемо и на EAV. а EAV это не что иное как копия уже текущей реализации возможностей заложенных в СУБД. ну наверное динамично придется генерить sql запрос. или может какую то денормализацию использовать для ускорения процесса. можно еще наследование таблиц предложить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 18:33 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифовне понял про директории и т.д. я имел в виду коллизию типа "концепция поменялась" подразумевая ее "в общем", конечно :) ИМХО в парадигме ее разрешения: Сахават Юсифовменяются ии удаляются и пользовательские грамотные пользователи отказываются вести и поддерживать локальные системы-модификации-настройки, зная, что их могут грухнуть в любой момент. они скорее согласятся с ограничениями существующих "родительских систем", оставляя ответственность за расширение их функционала и их адаптацию под реальные нужды на разработчике (владельце). тогда Какой тогда смысл затевать сложную "глубоко эшелонированную" многослойную систему с гибкими возможностями для пользователей, если ей будут пользоваться только доверчивые ньюбиз. после апдейта все нюбиз разочарованно подсчитывают впустую потраченные усилия и становятся эдвенсд... ------------- в общем, здравомыслящий опытный пользователь не будет создавать свои сущности - будет использовать только дефолтные, предусмотреннные разработчиком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 18:35 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
proposed amendment, Это офтоп. Проблема не в том зачем. Проблема в том как. Смысл в этом есть. Смыслов много можно найти один из них не знание предметной области программистом. И не знание пользователем sql. Это просто некоторый компромисс. Добавить немного гибкости системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 18:50 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
proposed amendment, В основном под ПОЛЬЗОВАТЕЛЕМ подразумеваются эксперты описывающие предметную область, так называемые АНАЛИТИКИ(постановщики). Обычным юзерам хватает добавление полей для собственных нужд. Да смотрите вы ISA95, OAGIS и т.д. Никто не мешает генерировать все таблицы плоскими. Но, в определеных случаях (связанные с обратной сквозной навигацией (с листьев до корней с сохранением всех свойств объектов полученных JOIN и UNION) и обеспечения целостности через VIEW), LOOKUP форм и т.д.) возможностей СКЛ (во всяком случае МССКЛ) не хватает, (очень трудно работать с графами, так как нет соответствующих штатных средств). Для описания предмета приходится вводить уточняющие допслои (описание контекстов - подсистемные, ролевые, пользовательские) где вводятся новые типы, описываются подтипы (фильтрация и т.д.), порядок, пейджинг и т.д. Естественно все это опирается на метаописание БД. И тут встает вопрос, а надо и доверять какому то админу БД ведение этой метаописания? А не лучше эту часть мета ввести в собственное метаописание как базовый слой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 19:07 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
FoxluckЭто офтоп. Проблема не в том зачем. Проблема в том как. да, я знаю это не офтоп - это практика. незнание предметной области программистом таким образом все равно не преодолеть. вешать это незнание на конечного пользователя - совершенно пустое занятие. предусмотрите возможность прикрутить Access или подобную "внешнюю" систему и вы получите ограничения обратной совместимости о которых выше уже было сказано, пустите пользователя на сервер и вы получите прочие проблемы о которых сто раз говорилось на этом и других форумах. воспользуйтесь поиском. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 19:12 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
proposed amendment, Пользоваель не сможет вводить туфту, которая приведет к формальной противоречивости и нецелостности. А не означает нецелостность. Все тут ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 19:16 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
> Какой тогда смысл Ну смысл-то совершенно прозрачный: обойти ограничения классических реализаций. И для этого нет никакой необходимости делить данные (а тем более структуру) на userspace и systemspace. Просто потому, что это изначально кривая постановка задачи, полагающая разной ценность данных, что неверно по определению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 19:17 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифов, А не означает нецелостность читат как - "EAV не означает нецелостность" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 19:17 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифовproposed amendment, В основном под ПОЛЬЗОВАТЕЛЕМ я не оспариваю Вашу точку зрения и походы - они любопытныи и интересны. тем не менее существующие "общепринятые" промышленные системы стремятся к централизации. и с точки зрения администрирования базового слоя и с точки зрения администрирования бизнес логики. это дешевле, предсказуеме и эффективнее при адаптации-подстройке систем, в большинстве, ИМХО абсолютном, случаев, вопрос может(должен) быть решен админитративно, за рамками КИС, В процессе доработки системы. (with "централизованно" собрали требования пользователей, оценили, наметили, разработали, внедрили, проверили результат). если вы под ПОЛЬЗОВАТЕЛЕМ подразумеваете АНАЛИТИКА(ПОСТАНОВЩИКА) - ИМХО это совершенно частный случай. который, может быть, найдет реально воплощение в какой-либо специализированной предметной области (на производстве) в химической промышленности, например, где технолог вынужден создавать новую "архитектуру" технологического процесса, или в эксперементальном-штучном-нестандартном производстве... запустили новую реактификационную колонну, химик технолог(ПОСТАНОВЩИК) разработал новый технологический процесс производства какого-либо супер-нано-бензина в какой-нибудь системе сродни BPMS и автоматически под нее заточились все бизнес процессы и ситемы учета но это из области фантастики. вероятно для таких методов уже есть место и ниша - в будущем. Субуго ИМХО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 19:32 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифовproposed amendment, Пользоваель не сможет вводить туфту, которая приведет к формальной противоречивости и нецелостности. А не означает нецелостность. Все тут ОК. мы, очевидно, по-разному понимаем концепцию "ПОЛЬЗОВАТЕЛЬ". ничего страшного ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 19:36 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
guest_20040621обойти ограничения классических реализаций классическим способом. и на елку влезть и ничего не поцарапать научите ПОЛЬЗОВАТЕЛЯ MSSQL+VisualStudio - и все, он сам во всем разберется а вот это был офтопик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 19:43 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифов В основном под ПОЛЬЗОВАТЕЛЕМ подразумеваются эксперты описывающие предметную область, так называемые АНАЛИТИКИ(постановщики). Обычным юзерам хватает добавление полей для собственных нужд. Да смотрите вы ISA95, OAGIS и т.д. Так фактически почти так вопрос и стоит. Что пользователю надо добавлять поля. Ну чтобы добавить поле приходиться создавать сущность. Например Есть товар Абстрактный товар имя размер Добавляем поле Телевизор имя размер диагональ Добавили поле. Но пришлось создать сущность. Потому что Добавляем поле Телефон имя размер емкость аккумулятор То есть именно различия в атрибутах и порождает необходимость создавать сущности. Я и не говорю что пользователь может изменить все абсолютно спроектировать БД через интерфейс внести любой сколь угодно сложный функционал. Речь о банальных простых модификациях в очень ограниченных рамках. Аналогия 3д коридорных шутер. Пользователю(игроку) вроде кажется что он свободен. Однако это иллюзия он может бежать только по определенным коридорам. Производить выстрелы из ограниченного кол-ва оружия Вот этот корридор и есть пользовательская сущность. Это пользовательская сущность с заранее заложенном смыслом использования. Свобода действия только в том чтобы выбрать название поля, тип, порядок вывода. Меня интересуют именно технические аспекты судя по тому что вы не стерли меня в порошок еще я полагаю что возразить вам особо нечем. Хотя могут еще набежать товарищи. По поводу централизации. Это оффтоп. тема другой передачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 19:55 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
> классическим способом Других нет. > и на елку влезть и ничего не поцарапать Никуда лезть не нужно, ничего царапать необходимости тоже нет. Обычная задача, обычная реализация. Любая метаметамодель может быть реализована в реляционной структуре стандартными средствами. В этой задаче одна серьезная проблема: описать SQL метамодель на том же уровне, что и остальные метамодели. И серьезная она только потому, что метамодель уже реализована в СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 19:58 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
FoxluckПо поводу централизации. Это оффтоп. тема другой передачи. офтоп вот тут FoxluckТо есть именно различия в атрибутах и порождает необходимость создавать сущности. и именно это я имею в виду, когда сомневаюсь в возможности передавать ПОЛЬЗОВАТЕЛЯМ функции РАЗРАБОТЧИКА ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:12 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
guest_20040621 серьезная проблема: описать SQL метамодель на том же уровне, что и остальные метамодели. И серьезная она только потому, что метамодель уже реализована в СУБД. Вот это надо объязательно. И ничего сложного в этом нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:14 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Foxluck, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:19 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
[quot Foxluck] Добавили поле. Но пришлось создать сущность. Экземпляр сущности. Изначально сущности слаботипизированы (ИД, Обозначение,...) Дальше по мере добаления атрибутов идет авто и/или принудительная множественная классификация и механизм приведения типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:25 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
proposed amendment, РАЗРАБОТЧК в основном хреново представляет себе предметную область и посредственно разбирается в доступном ему инструменте. Если дать нормальный (понятный) инструмент ПОЛЬЗОВАТЕЛЮ который хорошо разбирается в предметной области то эффект может быть разительным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:27 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
guest_20040621Никуда лезть не нужно, ничего царапать необходимости тоже нет. нет-нет... я не это имелл в виду! э-э-э... в смысле не буквально это... как правило спор вокруг этой темы вырождается в дискуссию - кто в состоянии, вообще, описать <создать, дополнить> метамодель. и насколько он ПРАВ том что делает, как с точки применимости к бизнес логике, так и с точки применимости к особенностям той или иной СУБД. хотите оспорить - вот, наглядный пример у вас перед глазами парой-другой строчек выше... люди вообще не понимают что делают. про методолгию и идеологию я уже вообеще молчу от себя отмечу - лихих буденовцев навалом, а ПОЛЬЗОВАТЕЛЕЙ о кторых мечтает Сахават вообще ИМХО нет - это легенда... ну разве что пара-другая ЭНТУЗИАСТОВ. Та какой на них расчет - энтузиазм штука непересказуемая... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:30 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
proposed amendment, и именно это я имею в виду, когда сомневаюсь в возможности передавать ПОЛЬЗОВАТЕЛЯМ функции РАЗРАБОТЧИКА Так пользователь даже не понимает что он создает сущности. Он просто добавляет новый вид товара с новыми уникальными аттрибутами. Пользователь не участвуют в проектировании он просто выполняет рутинную операцию по созданию однотипных по смыслу но тем не менее разных по набору аттрибутов сущностей. Использование этих сущностей в логике однотипно. Отличается только набор выводимых полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:31 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
proposed amendmentот себя отмечу - лихих буденовцев навалом, а ПОЛЬЗОВАТЕЛЕЙ о кторых мечтает Сахават вообще ИМХО нет - это легенда... ну разве что пара-другая ЭНТУЗИАСТОВ. Та какой на них расчет - энтузиазм штука непересказуемая... Ну, первый пользователь и есть сам Сахават. :) И то хлеб. А то надоело писать одно и то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:33 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифовproposed amendmentот себя отмечу - лихих буденовцев навалом, а ПОЛЬЗОВАТЕЛЕЙ о кторых мечтает Сахават вообще ИМХО нет - это легенда... ну разве что пара-другая ЭНТУЗИАСТОВ. Та какой на них расчет - энтузиазм штука непересказуемая... Ну, первый пользователь и есть сам Сахават. :) И то хлеб. А то надоело писать одно и то же. А так возьмем туже бухгалтерию. Надо вести новый вид оплаты. Я передаю контекст( работник, табель, наряд и т.д.). Бухгалтер вводит новый вид оплаты и указывает формулу для расчета. Но, тут особенность - новый вид должен быть ориентирован только на работников "альбиносов" и на нечеткие дни календаря. Дык он классифицирует (создает булев поле "Альбинос" в типе Работник, или создает Тип "Альбиносы" и стаскивает туда нужных работников (автоматом создаеются релейшн и передается в контекст)) работников и задает ограничение на дни и все. Почему это должен делать какой то РАЗРАБОТЧИК?????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:38 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифовто эффект может быть разительным. я согласен в том, что эффект от хорошего инструмента будет разительным. но Ваш ПОЛЬЗОВАТЕЛЬ это идеалогия, практика показывает, что пользователей, которых Вы ищете нет. люди не умеют оперировать простыми абстракциями, а вы предлагаете им оперировать сложными... по сути Вы требуете для своей системы еще один слой программистов. откуда их взять сейчас? я уверен что они появятся. позже. не сейчас. в массовом количестве никогда ИМХО, ЗЫ в мире <куда как больше> половины ПОЛЬЗОВАТЕЛЕЙ различных компьютерных систем женщины... на что вы их обрекаете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:38 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифов Это к вопросу о сложных типах. Показываете на примере объектов. То есть сложный тип. Это экземпляр объекта. А использование его это использование ссылки на экземпляр объекта. То есть Foreign key в терминах Рел. БД ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:39 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
> И ничего сложного в этом нет Проблема вот в чем: в разных СУБД структура данных будет разной (не важно, значительна будет разница или нет, даже семантические отличия типов данных - это уже отличия). Три варианта реализации метамодели: реализация стандарта (минус - выпадают фичи СУБД), реализация конкретного диалекта (минус - непереносимость), дополнительная идентификация диалекта (приемлемо). Фишка в том, что диалект может различаться от версии к версии в рамках одной СУБД. Если так, можно решить более общую задачу, регистрируя критические компоненты окружения. Причем, добавив еще и версионность. Казалось бы небольшое уточнение помогло качественно решить параллельную задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:40 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
guest_20040621, Согласен с постановкой. Если будет тираж. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:43 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
FoxluckТак пользователь даже не понимает что он создает сущности. тьфу - много шума из ничего. [DROP ALL FROM PRECIDING WHERE UserName = "proposed amendment"] это назавается ОПИСАТЬ новую "сущность". сто раз обсуждалось в этом и других форумах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:46 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовА то надоело писать одно и то же. почет и уважуха ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:47 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Foxluck, ну там я хотел показать что каждая деталь имеет собственные свойства и при этом типизирваны как "детали". Там же агрегатный тип (виртуальный) "Сборочные екдиницы" который получен путем приведения типов "Детали" и "Сборки". Там же релейшны для перехода от "Детадь"-> "Сборочные единицы" - "Спецификации" -> "Сборки" и наоборот. Форинкеи обычно мешают, потому они остаются на первом слое, слое мета СКЛ. А Релейшны (виртуальные) многонаправленные создаются во втором слое (это именно мастер-деталь-мастер, а не целосность). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:47 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
> как правило спор вокруг этой темы вырождается в дискуссию Да. И правильной точкой зрения imho следует считать "никто, кроме архитектора". Квалификация архитектора должна быть заведомо выше любого из других (даже потенциальных) участников проекта, включая аналитиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 20:48 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
proposed amendmentFoxluckТак пользователь даже не понимает что он создает сущности. тьфу - много шума из ничего. [DROP ALL FROM PRECIDING WHERE UserName = "proposed amendment"] это назавается ОПИСАТЬ новую "сущность". сто раз обсуждалось в этом и других форумах Ничего не понял. Что тебя осенило. Приведи пример такого обсуждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 21:01 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Foxluckproposed amendment,Использование этих сущностей в логике однотипно. Отличается только набор выводимых полей. тем более - задача вообще редуцируется к элементарной. обычно решается методом "избыточности" - это самое простое решение <в вашем контексте "Телевизор" vs "Телефон">. пользователь создает новый экземпляр "абсолютной сущности" и отрезает от нее все лишнеее. если нужно что-то существенное добавить - решается на уровне модификации таблиц БД (и интерфейсов при необходимости). guest_20040621Квалификация архитектора должна быть. Amen ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 21:03 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
FoxluckПриведи пример такого обсуждения. ты с этого начал Foxluck <...>То есть по сути создавать таблицы Как это лучше реализовать. create table выполнять. Или же Создать виртуальную бд на базе нескольких. с этой ерунды все и началось <starter topick> - все осталное в контексте этого твоего вопроса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 21:06 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовFoxluck, ну там я хотел показать что каждая деталь имеет собственные свойства и при этом типизирваны как "детали". Там же агрегатный тип (виртуальный) "Сборочные екдиницы" который получен путем приведения типов "Детали" и "Сборки". Там же релейшны для перехода от "Детадь"-> "Сборочные единицы" - "Спецификации" -> "Сборки" и наоборот. Форинкеи обычно мешают, потому они остаются на первом слое, слое мета СКЛ. А Релейшны (виртуальные) многонаправленные создаются во втором слое (это именно мастер-деталь-мастер, а не целосность). Язык у вас интересный. Я вас понимаю как русский украинца вроде что то понятно даже общий смысл поверхностно ясен но в тоже время понимание уходит в некоторых фразах как будто обгоревший лист бумаги читаешь :) Многонаправленные релейшены. :) Навевает на мысль многие ко многим. это из мира ООСУБД ? или каких то метаописаний бд ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 21:16 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовДык он классифицирует (создает булев поле "Альбинос" в типе Работник, или создает Тип "Альбиносы" и стаскивает туда нужных работников (автоматом создаеются релейшн и передается в контекст)) работников и задает ограничение на дни и все. не то, чтобы в продолжение предмета дискусии, просто личное наблюдение именно вопросы классификации и(а также) формализации-наследования принципов-подходов к классификациии (как показывает моя практика) одно из самых "тонких и ужасно неудобных мест" которые просто плачут и взывают к централизации. Борхес (as Wiki told us and so) Все животные подразделяются на следующие группы: a) принадлежащие Императору; b) бальзамированные; c) прирученные; d) молочные поросята; e) сирены; f) сказочные; g) бродячие собаки; h) включенные в настоящую классификацию; i) буйствующие, как в безумии; k) неисчислимые; l) нарисованные тонкой кисточкой из верблюжьей шерсти; m) только что разбившие кувшин; n) издалека кажущиеся мухами Классификация животных кажется к ним Вы еще добавили а также "Альбиносы, работающие в нечетные дни календаря" я бы справился, конечно... но это капец как неправильно ИМХО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 21:20 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
proposed amendment, этот метод избыточности немногим лучше EAV. Все равно мы фактически создаем виртуальные сущности. Нам нужно хранить все метаописания. Только теперь не что входит а что не входит. Опять по хитрому строить выборки прочее. Все становиться виртуальным а смысл. Тот же вопрос что и в EAV зачем... если я и так это могу делать. ну не было бы у меня СУБД. были бы только файлы. Я бы конечно подумал. Ну у меня же есть готовое все зачем. Зачем идти против природы СУБД. можно делать над ней надстройки но зачем заменять её. Я вижу смысл в обертках. типа xml, orm. Но я не вижу смысла в подобной виртуализации как EAV и даже метод избыточности хотя последний мне нравиться больше. Все равно мне больше импонирует нативный create table. Никто из вас не опроверг и не поддержал меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 21:32 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
Foxluckэтот метод избыточности немногим лучше EAV. просто попробуйте оба подхода и разница станет очевидной FoxluckВсе равно мне больше импонирует нативный create table. Никто из вас не опроверг и не поддержал меня. практика вам все покажет. ЗЫ Вы пользователю собиратесь отдать КриэйТэйбл? ну-ну... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 21:41 |
|
||
|
Возможность Создание сущностей пользователем
|
|||
|---|---|---|---|
|
#18+
proposed amendmentБорхес (as Wiki told us and so) Все животные подразделяются на следующие группы: Это не группы, а категории внутри групп. Ошибка в том, что сами группы не названы. Т.е. сначала выделяются группы, затем создаются категории внутри групп, а потом объекты классифицируются категориями из разных групп. И вся эта работа выполняется ессно пользователем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2009, 09:54 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1543338]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
92ms |
get tp. blocked users: |
2ms |
| others: | 209ms |
| total: | 517ms |

| 0 / 0 |
