|
|
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Задаю вопрос тем, кто решал и успешно решил следующую задачу: обеспечить учет движения товаров, которые могут относиться к различным категориям, или классам - что означает, что для описания различных товарных единиц используются различные наборы характеристик, в зависимости от категории товара. Число категорий и наборы характеристик для каждой из них предопределены. Эффективен ли оказался такой подход (если кто это применил), когда для каждой из категорий применяется отдельная таблица характеристик? Предполагается, что в одном товарном документе могут присутствовать товары разных категорий, соответственно, должны выполняться джойны к различным таблицам характеристик. (Предполагается ms sql server). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 09:45 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Что делать, когда появится новая категория? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 09:56 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
NafЧто делать, когда появится новая категория? Число категорий и наборы характеристик для каждой из них предопределены. Задаю вопрос тем, кто решал и успешно решил следующую задачу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 10:00 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
GlybaЧисло категорий и наборы характеристик для каждой из них предопределены. Никогда не надейтесь на что-то постоянное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 10:05 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Naf, уже лет 20 как не надеюсь, и дальше тем более не буду. Но! Это уже другая тема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 10:08 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
для описания различных товарных единиц используются различные наборы характеристик, в зависимости от категории товара.Банальный EAV. Это очень просто: Для каждой категории в таблице наборов х-к должен быть соотв. поле-ключ. По этому полю отбираем список х-к, применимых только к этой категории. Но ... при этом одна х-ка не сможет служить разным категориям. Или сможет, но путем усложения схемы таблиц. Ни в коем случае никаких новых таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 10:42 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
LSV, да, конечно, это ложится на EAV, так же как и всё-что-угодно ещё. Но недостатки EAV известны, и абсолютная гибкость этой схемы в данном случае не нужна, и издержки не оправданы. А у Вас есть собственный успешный опыт реализации учета товарооборота на EAV? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 10:47 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
... кроме того, категории предопределены (в первом приближении) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 10:49 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
GlybaЧисло категорий и наборы характеристик для каждой из них предопределены. Скажу сразу что я б пошел по пути EAV, даже несмотря на ваше утверждение. Просто практика показывает что такие утверждения лопаются как мыльные пузыри. Второй вариант - делаем таблицу со списком категорий. В таблицу с товаром добавляем поля по количеству категорий. Соответственно выбор фильтра по этим полям (0 - нет категории, 1 - есть). Третий вариант. Делаем таблицу со списком категорий. Для каждой категории (записи из созданной таблицы категорий) делаем отдельную таблицу в которой храним id товара. Каждый подход имеет плюсы и минусы. Все зависит от задачи. Так что удачи вам, в борьбе с ветряными мельницами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 11:48 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Злой БобрКаждый подход имеет плюсы и минусы. Совершенно верно. Поэтому и хочется услышать не соображения "как бы я стал бы делать", а репортажи из окопов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 11:52 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
GlybaПредполагается, что в одном товарном документе могут присутствовать товары разных категорий, соответственно, должны выполняться джойны к различным таблицам характеристик. Чисто из любопытства: что это за "товарный документ" в котором собраны разные товары, причём с характеристиками? Договор, счет, счёт-фактура и товарная накладная никаких "характеристик" в себя не включают, только название и цену. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:07 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
ээ, а зачем Вам в "товарном документе" принципиально разные характеристики товаров - это же некая таблица, т.е. характеристики участвующие в документе должны быть однотипными? Т.е. получается, что в одном запросе много таблиц джойнить не нужно - можно вынести эти единые характеристики в одну "родительскую" сущность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:08 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Glyba, Еще раз - в зависимости от задачи каждый подход имеет право на жизнь. Мы незнаем ваших объемов, задач, ... Так что не спрашивайте у нас как делать. Варианты вам предоставлены. Дальше выбираете то что вам нужно, ТЗ ведь у вас а не у нас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:12 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЧисто из любопытства: что это за "товарный документ" в котором собраны разные товары, причём с характеристиками? Договор, счет, счёт-фактура и товарная накладная никаких "характеристик" в себя не включают, только название и цену. Речь идет о специфических отраслевых документах. Думаю, что если скажу, что речь идет об драгоценных камнях, как обработанных, так и необработанных, то у вас пропадёт желание любопытствовать дальше )). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:18 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Злой БобрТак что не спрашивайте у нас как делать. А я этого, обратите внимание, не спрашиваю. Я надеялся услышать о чьём-то личном успешном/неуспешном опыте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:20 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovДоговор, счет, счёт-фактура и товарная накладная никаких "характеристик" в себя не включают, только название и цену. Документ, кроме этих выходных форм, может еще и в гуе отображаться, верно? И вот там-то, вполне понятно, юзер захочет видеть всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:22 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Glyba, Гуй - все равно в виде таблицы же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:27 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинГуй - все равно в виде таблицы же? Вот именно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:30 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Glyba, Таблица подразумевает б.м. однотипные данные, нет? Если в столбце таблицы гуя для одного товара Вы указываете вес, а для другого - марку(или даже длину), это как-то имхо странновато. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:35 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
GlybaА я этого, обратите внимание, не спрашиваю. Я надеялся услышать о чьём-то личном успешном/неуспешном опыте. Мы тут не меряемся ... Относительно вашего вопроса в первом посте темы: Эффективен ли оказался такой подход (если кто это применил), когда для каждой из категорий применяется отдельная таблица характеристик? Подход неэффективен. Ваш путь - EAV. Описанный вами вариант применим для высоконагруженных систем с огромным количеством инсертов. Надеюсь я ответил на ваш вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:36 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
GlybaВас есть собственный успешный опыт реализации учета товарооборота на EAV?Есть. Я использую ЕАВ. У меня любая сущность может иметь список дополнительных параметров (легко настраиваемых). На огромных массивах данных не проверял. Но не думаю, что у Вас огромные массивы данных. При грамотной реализации - производительности хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:40 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
GlybaЯ надеялся услышать о чьём-то личном успешном/неуспешном опыте. Мой личный опыт с EAV был весьма успешным. Поэтому-то я и считаю, что мифы о её низкой производительности пишут на заборах исключительно криворукие неудачники. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:41 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Злой БобрПодход неэффективен. Так-так-так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:45 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Злой БобрОписанный вами вариант применим для высоконагруженных систем с огромным количеством инсертов. Не означает ли это, что подход как раз-таки эффективен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:47 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
GlybaЭффективен ли оказался такой подход (если кто это применил), когда для каждой из категорий применяется отдельная таблица характеристик?Один из способов отображения классов на РМД ровно в этом и заключается, на каждый класс одна таблица. Если надо учитывать наследование, то для класса-потомка делают таблицу только "своих" свойств, а свойства мигрирующие от класса-предка хранятся в таблице класса-предка. И да, вполне себе эффективный подход, только классы желательно продумать потщательнее, чтобы потом не было "мучительно больно".GlybaПредполагается, что в одном товарном документе могут присутствовать товары разных категорий, соответственно, должны выполняться джойны к различным таблицам характеристик.Да сколько угодно, не вдаваясь в целесообразность вываливания кучи информации на экран. Даже предыдущие версии MS SQL позволяли выполнять до 255 джойнов. Другой вопрос, что лучше организовать детализации по дополнительному действию пользователя отдельными запросами. И с самого начала ограничивать его фильтрацией данных по условиям, а не вываливать ему "кашу" из десятков тысяч записей и сотен полей. Каждое его действие должно быть осмысленным. Впрочем, это уже больше по части организации клиент-серверного взаимодействия, что в данном случае является особенно актуальным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 12:57 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
GlybaЗлой БобрОписанный вами вариант применим для высоконагруженных систем с огромным количеством инсертов. Не означает ли это, что подход как раз-таки эффективен? Ну тогда озвучьте замеры инсертов. Если у вас меньше 50 в секунду то нестоит даже и задумываться об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 13:03 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
LSVУ меня любая сущность может иметь список дополнительных параметров (легко настраиваемых). На огромных массивах данных не проверял. Но не думаю, что у Вас огромные массивы данных. При грамотной реализации - производительности хватает. Да все это отлично работает и легко нормализуется, только в самом низу будет предопределенный набор _типов_ характеристик. Число, строка, ну что придумаете. Штук пять-десять, не больше. И вот их уже в разных таблицах хранить, ну или в одной в разных колонках для вящей простоты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 13:04 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Злой БобрНу тогда озвучьте замеры инсертов. Если у вас меньше 50 в секунду то нестоит даже и задумываться об этом. Но чем для меня лучше окажется EAV, если у меня вдруг меньше 50 инсертов в секунду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 14:18 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
GlybaНо чем для меня лучше окажется EAV, ... Научитесь пользоваться замером производительности и сами увидите. Селект отработает в разы быстрее, если коротко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 14:48 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
[quot Злой БобрНаучитесь пользоваться замером производительности и сами увидите. Селект отработает в разы быстрее, если коротко.[/quot] Видимо, вам, в отличие от меня, и замерять производительность не нужно? Вы и так уверены, что EAV покажет в разы лучший результат, чем схема с несколькими (по числу категорий) таблицами характеристик? Или вы всё-таки реализовывали оба варианта и провели замеры? Так скажите об этом - так хочется услышать уже о реальном опыте !. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 15:10 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Glyba, Я несобираюсь доказывать очевидное. Вы спросили - вам ответили. Если так нравится троллить то продолжайте в гордом одиночестве. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 15:17 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
DogenДа все это отлично работает и легко нормализуется, только в самом низу будет предопределенный набор _типов_ характеристик. Число, строка, ну что придумаете. Штук пять-десять, не больше. И вот их уже в разных таблицах хранить, ну или в одной в разных колонках для вящей простоты.Я храню в одной таблице (поля int, float, str, date, bool). Ведь обращаясь к параметру всегда знаешь его тип. Есть набор функций/процедур, делающих выборки простыми и удобными. Не "вся система на ЕАВ", а "система с применением ЕАВ". Там где нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 15:36 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
GlybaЗлой БобрКаждый подход имеет плюсы и минусы. Совершенно верно. Поэтому и хочется услышать не соображения "как бы я стал бы делать", а репортажи из окопов. Как то так? Universal database schema US 20060225029 A1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 15:59 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
LSVНи в коем случае никаких новых таблиц.А почему так категорично? Из окопов - с EAV были проблемы, решились постоением и синхронизацией параллельной "нормальной" системы для поисков, лучше бы она была изначально. Но это как в шутке про раков которые по пять, большие и вчера, или по три, но маленькие и сегодня. GlybaЭффективен ли оказался такой подход (если кто это применил), когда для каждой из категорий применяется отдельная таблица характеристик?И так тоже было. Была и доведенная до абсурда база (к счастью только в качестве источника для конвертации) с кучей очень узких таблиц (с одним двумя полями) со связью 1:1 по ключу. В любом случае в работающей системе не было никаких "легких и быстрых" изменений "на лету". Изменение (патч) накладывался на UAT систему, тестировалось, потом процесс повторялся для боевой системы. Создавались ли при этом дополнительные таблицы или поля - разницы никакой. На мой взгляд гибкость EAV схемы - миф, подходящий только для новой разработки, когда действительно правила меняются на ходу, данных мало, пользователи послушные. Но для таких условий и DDL легко решает все задачи. Как говорится мнение мое, не обязательно правильное. Справедливости ради скажу, что имелся опыт использования "дополнительных определяемых пользователем полей" - EAV типа, когда пользователи имели возможность вносить и дофильтровывать инфу сразу, а не когда разработчик озаботился внести это изменение, новая версия протестирована, процесс миграции отлажен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 18:11 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
SERG1257На мой взгляд гибкость EAV схемы - миф, подходящий только для новой разработки, когда действительно правила меняются на ходу, данных мало, пользователи послушные. Я пришел к такому же мнению. Т.е. гибкость-то её сама по себе - не миф, но за неё приходится платить. Даже тогда, когда гибкость не нужна. SERG1257Справедливости ради скажу, что имелся опыт использования "дополнительных определяемых пользователем полей" - EAV типа, когда пользователи имели возможность вносить и дофильтровывать инфу сразу, а не когда разработчик озаботился внести это изменение, новая версия протестирована, процесс миграции отлажен. У нас другая ситуация - пользователи не будут ничего настраивать, т.к. введение новой категории в нашем случае означает и введение специфической бизнес-логики. При этом возможность работы с каждой категорией будет отдельно приобретаться пользователем. Для наглядности - предположим, 1-я категория - это необработанные алмазы, затем пользователь хочет автоматизировать еще и их движение в процессе обработки, при этом ему добавляются еще 2 категории - полуфабрикаты бриллиантов и готовые бриллианты. Так что, сами понимаете, введением пользователем дополнительных полей не обойтись. Почему я и сказал в самом начале - категории предопределены. Почему-то некоторые не захотели в это поверить. Казалось бы, я лучше знаю, однако ж... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 09:16 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
Так что, сами понимаете, введением пользователем дополнительных полей не обойтись.Это почему же ? Это "тип товара" в карточке товара. В завис. от значения этого поля можно делать разные действия. Параметры у них разные ? Ну дык сделать в ЕАВ параметры, зависящие от поля "тип товара". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 10:40 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
LSVЭто почему же ? Потому что, например, введение категории "Полуфабрикаты" требует введение производственного контура в параллель к контуру движения МЦ. Иначе юзеру неинтересно будет, т.к. полуфабрикаты не просто перемещаются по местам хранения, но еще и участвуют в "производственных отношениях", т.к. перемещение полуфабриката происходит в рамках наряда на обработку - это не только движение МЦ. LSVЭто "тип товара" в карточке товара. В завис. от значения этого поля можно делать разные действия. Типы-то имеются в виду предопределенные, верно? О то ж! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 10:52 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
LSVЕсть набор функций/процедур, делающих выборки простыми и удобными. А можно полюбопытствовать, как у вас это реализовано? Через динамический sql, или еще как-то? Если через динамический sql, то где генерируется запрос - на клиенте, на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 11:06 |
|
||
|
одновременный учет МЦ разных категорий
|
|||
|---|---|---|---|
|
#18+
GlybaLSVЕсть набор функций/процедур, делающих выборки простыми и удобными. А можно полюбопытствовать, как у вас это реализовано? Через динамический sql, или еще как-то? Если через динамический sql, то где генерируется запрос - на клиенте, на сервере?Нет. Есть набор функций и ХП (т-sql). Весь мой ЕАВ это аж три таблицы. Если упрощенно, то: * древовидный общий справочник всех доп.атрибутов * таблица хранения значений: IDдокументa-IDатрибута-Значение * таблица хранения значений: IDдокументa-IDатрибута-НаДату-Значение последняя - для хранения логов/истории и атрибутов, зависящих от времени. Их обслуживает статичный SQL. Причем простой. Атрибуты простые, т.е. не составные, хотя можно долепить сложносоставные (типо: Категория ХХХ, утвержденная в YYYY, на основании QQQ и при участии ZZZ). Схема позволяет, но неприятно усложнится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 16:34 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1540816]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 175ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...