|
|
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyНаример, технолог может решить, что в накладной надо указывать скажем ФИО водителя - он добавит новое поле и это поле будет у всех накладных.Если анализ показал, что у всех накладных должно быть поле "ФИО водителя", почему бы не добавить его в структуру таблицы? Я в том смысле, что пытаюсь нащупать те критерии, по которым уже реально нужен EAV, а стандартная технология не применима. Все же трудно спорить, что EAV-модель влечет много неудобств и недостатков, поэтому лепить ее где не попало, видимо, не стоит, не так ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 07:26 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
mir Bogdanov AndreyНаример, технолог может решить, что в накладной надо указывать скажем ФИО водителя - он добавит новое поле и это поле будет у всех накладных.Если анализ показал, что у всех накладных должно быть поле "ФИО водителя", почему бы не добавить его в структуру таблицы? Я в том смысле, что пытаюсь нащупать те критерии, по которым уже реально нужен EAV, а стандартная технология не применима. Все же трудно спорить, что EAV-модель влечет много неудобств и недостатков, поэтому лепить ее где не попало, видимо, не стоит, не так ли? Ну так я о том и говорю, что добавление полей не простыми пользователями, а "аналитиками" - процесс гораздо более отвественный. Для таких случаев правильное решение - модифицировать структуру данных. А EAV нужно использовать тогда, когда изменение атрибутного состава производится совершенно "бесконтрольно" и никакая типизация - невозможна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 09:26 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
raptor@x-plat.ruМало того после публикации этого поста еще добавилось 1 условие в задании, что конкретному объекту можно добавить свое поле, которого не будет у других.Что значит не будет у других? Попытка добавить это поле другому объекту должна категорически пресекаться? Или просто процент его заполнения очень мал? Или это "личное" поле, и значения ему может присваивать только тот, кто его создал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 13:33 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
raptor@x-plat.ruСам клиент не будет извлекать данные - они ему будут web-сервисом передаваться. А свойства будут добавляться совершенно неизвестно когда как и сколько. Мало того после публикации этого поста еще добавилось 1 условие в задании, что конкретному объекту можно добавить свое поле, которого не будет у других. Я бы начал с выяснения того "когда как и сколько" будет добавлятся атрибутов, поскольку постановка "совершенно неизвестно" неверна в корне. Разработчик системы должен это знать, иначе может оказаться, что ряд важных способов добавления не реализован, а те что реализованы нафиг не нужны. Ответ на вопрос "сколько" тоже очень важен. Может быть каждый объект имеет уникальный класс (как раз то условие, которое добавилось). Тут скорее XML в помощь. Современные СУБД с поддержкой XML запросов как нибудь с этими данными справятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 14:06 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyА EAV нужно использовать тогда, когда изменение атрибутного состава производится совершенно "бесконтрольно" и никакая типизация - невозможна. EAV реализовать поразному можно. XML это тоже реализация EAV. ИМХО, динамическая типизация возможна всегда. Вопрос в том, что "совершенно "бесконтрольно"", означает, что семантика новых типов будет известна только её автору. Зачем делать централизованное хранилище данных, если у каждого своя песочница? Похоже автор темы пока ещё не сформулировал бизнес требования к системе, но уже пытается искать технические решения самого общего плана. Скорее всего, классов/сущностей просто очень много и время от времени будут появляться новые классы, но это не повод закладывать в систему абсолютную изменчивость. По крайней мере процедуры определения нового класса/сущности должны быть регламентированы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 14:23 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey Сахават Юсифов Аналитики и настройщики такие же пользователи. Ну все-таки не совсем "такие же". Эти люди обепечивают технологию работы и использования системы в работе. И посему имеют дело не с отдельными экземплярами, а с группами экземпляров. Простые же пользователи (операторы) работают именно с отдельными экземплярами. Так вот если, модификацией атрибутики занимаются первые, то делают они для целых групп (классов) объектов. Ну а если модифицировать атрибутику должны вторые, то это значит, что собственный набор атрибутов будет у каждого объекта. Соответственно и способ реализации требуется разный. Наример, технолог может решить, что в накладной надо указывать скажем ФИО водителя - он добавит новое поле и это поле будет у всех накладных. Другое дело, если оператор вдруг решил сам добавить в документ какую-то дополнительную информацию. Потому и есть разделение. Атрибуты на уровне типа вводят одни, а на уровне объекта другие (права). Т.е. - можно добавить "Цвет" типу "Материал", тогда при генерации объекта всегда будет предложено заполнить значение "Цвет". Но оператор может послать это дело и просто удалить "цвет" у конкретного объекта и/или добавить атрибут "процент сырости" который в списке атрибутов типа не значится, но имеется в домене атрибутов (доступ конечно тоже по правам). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 15:25 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифов Потому и есть разделение. Атрибуты на уровне типа вводят одни, а на уровне объекта другие (права). Вопрос все-таки не в правах, а в способе реализации. Я утверждал, что способ реализации у этих атрибутов должен быть разный. Ну а права - это уже отдельная песня. PS. Я пока никак не могу представить себе приложение в котором создание произвольных атрибутов операторами востребовано. Хотя вполне допускаю, что мне просто не приходилось с таким сталкиваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 16:41 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey PS. Я пока никак не могу представить себе приложение в котором создание произвольных атрибутов операторами востребовано. Хотя вполне допускаю, что мне просто не приходилось с таким сталкиваться. Да возмите, например, самый такой востребованный справочник - справочник материалов и ПКИ (или там как говорят "Номенклатурные позиции"). У "Доска" - "материал", "ширина", "длина", "высота", "коэффициент сырости"... У "Краски" - "тип", "цвет",.. У "Двигателя" - "мощность",.. у "Коробки" - "передаточное число",.. у "Штаны" - "количество карманов" Когда мы это дело только учитываем, то эти атрибуты вроде и не нужны. Но, когда мы собираемся это дела производить, получается совсем другой коленкор. Если все это объединить, то получится справочник с сотнями атрибутов. А если не объединить, то сотни справочников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 16:58 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифов Да возмите, например, самый такой востребованный справочник - справочник материалов и ПКИ (или там как говорят "Номенклатурные позиции"). У "Доска" - "материал", "ширина", "длина", "высота", "коэффициент сырости"... У "Краски" - "тип", "цвет",.. У "Двигателя" - "мощность",.. у "Коробки" - "передаточное число",.. у "Штаны" - "количество карманов" Когда мы это дело только учитываем, то эти атрибуты вроде и не нужны. Но, когда мы собираемся это дела производить, получается совсем другой коленкор. Если все это объединить, то получится справочник с сотнями атрибутов. А если не объединить, то сотни справочников. Замечательно. Вы сами привели типизацию своих объектов по количеству используемых атрибутов. Имеем тип "Штаны" с такими-то атрибутами, тип "Коробки" - с другими. Для разных типов - разные таблицы хранения атрибутов. Не вижу сложностей. Если вы собираетесь как-то использовать в системе эти атрибуты, то вам все-равно придется научится их программно идентифицировать. Если же они хранятся просто так, то все это можно назвать одним атрибутом "Описание изделия". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 17:38 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey Сахават Юсифов Да возмите, например, самый такой востребованный справочник - справочник материалов и ПКИ (или там как говорят "Номенклатурные позиции"). У "Доска" - "материал", "ширина", "длина", "высота", "коэффициент сырости"... У "Краски" - "тип", "цвет",.. У "Двигателя" - "мощность",.. у "Коробки" - "передаточное число",.. у "Штаны" - "количество карманов" Когда мы это дело только учитываем, то эти атрибуты вроде и не нужны. Но, когда мы собираемся это дела производить, получается совсем другой коленкор. Если все это объединить, то получится справочник с сотнями атрибутов. А если не объединить, то сотни справочников. Замечательно. Вы сами привели типизацию своих объектов по количеству используемых атрибутов. Имеем тип "Штаны" с такими-то атрибутами, тип "Коробки" - с другими. Для разных типов - разные таблицы хранения атрибутов. Не вижу сложностей. Если вы собираетесь как-то использовать в системе эти атрибуты, то вам все-равно придется научится их программно идентифицировать. Если же они хранятся просто так, то все это можно назвать одним атрибутом "Описание изделия". Да этих типов - сотни, если не тысячи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 17:57 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyДля разных типов - разные таблицы хранения атрибутов. Это не единственный способ. Можно разнотипные объекты хранить в одной таблице и даже под группу разных атрибутов использовать одно поле. Другое дело, насколько удобно будет работать с таким хашем. Кроме того процедура определения такой таблицы весьма нетривиальная. Так что проще всего под Штаны и Двигатели создавать разные таблицы, а слить их до кучи можно всегда. Есть ещё момент, когда прекратить классификацию. Двигатели бывают электрические, паровые, внутреннего сгорания, гужевые и т.д.:o). Далее дизельные, карбюраторные, инжекторные. Турбинные или поршневые. Коллекторные, асинхронные, и д.р. Положим, у нас есть паровые двигатели, стоит ли создавать подклассы Турбинные, Поршневые, Реактивные или лучше в классе Паровых двигателей определить атрибут принцип действия, который будет являться дискриминатором типа? Если использовать дискриминатор, то мы приходим к тому, что в одной таблице фактически будут храниться разнотипные объекты с общим суперклассом. Сегодня нам достаточно знать о двигателях только принцип действия, завтра нужно будет знать количество и размеры цилиндров, материал турбины, диаметр сопла, расход пара и т.д. Тут напрашивается создание отдельных таблиц и миграция данных. Или использовать "Описание изделия". Подход "Описание изделия" не противоречит и созданию таблицы EAV, если она понадобится хотя бы как инвертированный файл для контекстного поиска, но управление этим индексом лучше поручить СУБД. В общем XML и встроенные в СУБД механизмы трансформации данных и контекстного поиска, это мощное оружие в решении задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 18:33 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
mcureenab Bogdanov AndreyДля разных типов - разные таблицы хранения атрибутов. Это не единственный способ. Можно разнотипные объекты хранить в одной таблице и даже под группу разных атрибутов использовать одно поле. Другое дело, насколько удобно будет работать с таким хашем. Кроме того процедура определения такой таблицы весьма нетривиальная. Так что проще всего под Штаны и Двигатели создавать разные таблицы, а слить их до кучи можно всегда. Мы вообще не знаем, будут там "штаны" или "Двигатель" или нет. Как только решили что вмество "Ручки для толкания :)" будем использовать "Двигатель" появляется нужда в двигательях. Неужто, сразу надо создать новую таблицу? [quot mcureenab] Есть ещё момент, когда прекратить классификацию. Двигатели бывают электрические, паровые, внутреннего сгорания, гужевые и т.д.:o). Далее дизельные, карбюраторные, инжекторные. Турбинные или поршневые. Коллекторные, асинхронные, и д.р. Положим, у нас есть паровые двигатели, стоит ли создавать подклассы Турбинные, Поршневые, Реактивные или лучше в классе Паровых двигателей определить атрибут принцип действия, который будет являться дискриминатором типа? Если использовать дискриминатор, то мы приходим к тому, что в одной таблице фактически будут храниться разнотипные объекты с общим суперклассом. Сегодня нам достаточно знать о двигателях только принцип действия, завтра нужно будет знать количество и размеры цилиндров, материал турбины, диаметр сопла, расход пара и т.д. Тут напрашивается создание отдельных таблиц и миграция данных. Или использовать "Описание изделия". [quot mcureenab] А почему мы должны прекращать классификацию? Просто надо дать возможность ввести новый классификатор или подклассы в существующий. Что Вы подразумевате под "Описание изделия"? Изделие имеет собственные атрибуты, а спецификации собственные. Некоторые атрибуты изделия наследуются от спецификаций, некоторые от процесса изготовления, некоторые приобретенные. Я вот пытаюсь сейчас такую вещь сварганить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 19:10 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовА почему мы должны прекращать классификацию? Просто надо дать возможность ввести новый классификатор или подклассы в существующий. классификатор = атрибут или новое значение в домене? Пусть будет такая возможность, но рано или поздно нужно прекратить наращивать дерево классов и сосредоточится на их доменных атрибутах. Думаю, решение задачи останова и вообще принцип классификации будет зависеть от субъективных предпочтений пользователя, а это не очень хорошо. Кроме того, как я подозреваю, количество классов будет не многим меньше количества объектов. Похоже, направление строгой классификации и типизации в данном случае тупиковое. Нужно просто описывать атрибуты каждого конкретного объекта, а их классификацию возложить на систему или специалистов в этой области. Сахават ЮсифовЧто Вы подразумевате под "Описание изделия"? Изделие имеет собственные атрибуты, а спецификации собственные. Некоторые атрибуты изделия наследуются от спецификаций, некоторые от процесса изготовления, некоторые приобретенные. "Описание изделия" - атрибут реляционной БД, колонка в таблице. Для наполнения колонки можно использовать формат XML, где каждому тэгу соответствует некоторый атрибут или их группа. Принципы наследования атрибутов от других объектов определяются на уровне приложения. Нужно решить проблему поиска готовых типов, чтобы пользователю каждый раз не приходилось конструировать новый тип с нуля перебирая все существующие домены и оценивая их пригодность для описания изделия. Время от времени придётся причёсывать БД, чтобы исключить опечатки, и прочие ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 19:45 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
mcureenab Сахават ЮсифовА почему мы должны прекращать классификацию? Просто надо дать возможность ввести новый классификатор или подклассы в существующий. классификатор = атрибут или новое значение в домене? Пусть будет такая возможность, но рано или поздно нужно прекратить наращивать дерево классов и сосредоточится на их доменных атрибутах. Думаю, решение задачи останова и вообще принцип классификации будет зависеть от субъективных предпочтений пользователя, а это не очень хорошо. Кроме того, как я подозреваю, количество классов будет не многим меньше количества объектов. Похоже, направление строгой классификации и типизации в данном случае тупиковое. Нужно просто описывать атрибуты каждого конкретного объекта, а их классификацию возложить на систему или специалистов в этой области. Классификатор сам по себе. :) У них свои атрибуты из домена атрибутов. Классификация - это как бы добавить атрибуты к существующим объектам скопом. Типа множественнного наследования. Основные атрибуты от типа + классификационные, мягкие атрибуты. Типы и классификаторы могут быть агрегированы. Агрегатные объекты проверяются на соответствующий агрегатный тип. А агрегаты классификационные - дело пользователя. Классификаторы - польностью дело пользователя. Да и типы (кроме некторых для данной предметной области.) Сахават ЮсифовЧто Вы подразумевате под "Описание изделия"? Изделие имеет собственные атрибуты, а спецификации собственные. Некоторые атрибуты изделия наследуются от спецификаций, некоторые от процесса изготовления, некоторые приобретенные. "Описание изделия" - атрибут реляционной БД, колонка в таблице. Для наполнения колонки можно использовать формат XML, где каждому тэгу соответствует некоторый атрибут или их группа. Принципы наследования атрибутов от других объектов определяются на уровне приложения. Нужно решить проблему поиска готовых типов, чтобы пользователю каждый раз не приходилось конструировать новый тип с нуля перебирая все существующие домены и оценивая их пригодность для описания изделия. Время от времени придётся причёсывать БД, чтобы исключить опечатки, и прочие ошибки.[/quot] Ну по хорошему все это будет использовано как часть проги описывающий предметнюю область. Что бы многократно это не делать решил выделить в отдельную часть описания предприятия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 21:02 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовНу по хорошему все это будет использовано как часть проги описывающий предметнюю область. Что бы многократно это не делать решил выделить в отдельную часть описания предприятия. Больше смахивает на инструментарий разработчика, а не на продукт для конечного пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 13:47 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
mcureenab Сахават ЮсифовНу по хорошему все это будет использовано как часть проги описывающий предметнюю область. Что бы многократно это не делать решил выделить в отдельную часть описания предприятия. Больше смахивает на инструментарий разработчика, а не на продукт для конечного пользователя. А разьве одна роль отрицает наличие другой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 14:05 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
mir SergGol mirЕсли структура базы (в вашей озвучке ++ атрибуты таблиц) меняются не через день, а редко и очень обоснованно, то почему "создавать новый поля для существующих таблиц не приемлемый вариант"? ...Для добавления колонки в любом случае нужен исключительный доступ к таблице. Не во всех случаях это подходит.А что, поля добавляет пользователь в ран-тайме? Тада конечно. Но я говорил о другом случае, когда это -- задача административного характера. А какая разница. Пусть административного. Значит время на администрирование увеличивается. Причем это разные администраторы. Тот, который по БД, вообще будет против каких-то добавлений полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 14:09 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
mcureenab Сахават ЮсифовНу по хорошему все это будет использовано как часть проги описывающий предметнюю область. Что бы многократно это не делать решил выделить в отдельную часть описания предприятия. Больше смахивает на инструментарий разработчика, а не на продукт для конечного пользователя. Разработчика нормативных процессов. А дальше будет автогенерация сети возможных процесов и (при поступлении заказа на производство) и выбор оптимальной подсети для привязка процессов к реальным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 16:51 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифов mcureenab Сахават ЮсифовНу по хорошему все это будет использовано как часть проги описывающий предметнюю область. Что бы многократно это не делать решил выделить в отдельную часть описания предприятия. Больше смахивает на инструментарий разработчика, а не на продукт для конечного пользователя. Разработчика нормативных процессов. А дальше будет автогенерация сети возможных процесов и (при поступлении заказа на производство) и выбор оптимальной подсети для привязка процессов к реальным. Ресурсам :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 16:53 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
Типа Workflow? Значит тебя "Штаны" и "Двигатели" интересуют не нак объекты учета, а как спецификации? Тогда конечно, создавать таблицу "Штаны" нет никакого смысла, ведь по идее они все одинаковые. Типа, нужна партия товара "Штаны галифе, арт. 12345". В систему заносим спецификацию и запускаем её в workflow. Вопрос, надо ли детализировать что такое "Штаны галифе, арт. 12345", или в пакете технологической документации это уже есть? Видимо, имеет смысл описать из каких деталей состоят штаны, а детали из материалов, указать технологические операции по производству заказу материалов и производству деталей. В итоге от абстрактных атрибутов чего то там непонятного, мы приходим к вполне понятным потокам "Специфкаций изделий", и "Специфкаций операций" в самом общем смысле. Когда дело дойдёт до учета конкретных изделий, тогда можно подумать о создании соответствующих таблиц, но если экземпляры изделий отличаются только №№ партий, то можно учитывать "Партии" в общем смысле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 17:42 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
mcureenabТипа Workflow? Значит тебя "Штаны" и "Двигатели" интересуют не нак объекты учета, а как спецификации? Тогда конечно, создавать таблицу "Штаны" нет никакого смысла, ведь по идее они все одинаковые. Типа, нужна партия товара "Штаны галифе, арт. 12345". В систему заносим спецификацию и запускаем её в workflow. Вопрос, надо ли детализировать что такое "Штаны галифе, арт. 12345", или в пакете технологической документации это уже есть? Видимо, имеет смысл описать из каких деталей состоят штаны, а детали из материалов, указать технологические операции по производству заказу материалов и производству деталей. В итоге от абстрактных атрибутов чего то там непонятного, мы приходим к вполне понятным потокам "Специфкаций изделий", и "Специфкаций операций" в самом общем смысле. Когда дело дойдёт до учета конкретных изделий, тогда можно подумать о создании соответствующих таблиц, но если экземпляры изделий отличаются только №№ партий, то можно учитывать "Партии" в общем смысле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 18:44 |
|
||
|
Каким образом лучше хранить набор данных, который будет меняться.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 18:45 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34342031&tid=1544721]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
156ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 485ms |

| 0 / 0 |
