powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / одновременный учет МЦ разных категорий
39 сообщений из 39, показаны все 2 страниц
одновременный учет МЦ разных категорий
    #38731181
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задаю вопрос тем, кто решал и успешно решил следующую задачу: обеспечить учет движения товаров, которые могут относиться к различным категориям, или классам - что означает, что для описания различных товарных единиц используются различные наборы характеристик, в зависимости от категории товара.
Число категорий и наборы характеристик для каждой из них предопределены.
Эффективен ли оказался такой подход (если кто это применил), когда для каждой из категорий применяется отдельная таблица характеристик? Предполагается, что в одном товарном документе могут присутствовать товары разных категорий, соответственно, должны выполняться джойны к различным таблицам характеристик.
(Предполагается ms sql server).
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731193
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что делать, когда появится новая категория?
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731201
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafЧто делать, когда появится новая категория?

Число категорий и наборы характеристик для каждой из них предопределены.
Задаю вопрос тем, кто решал и успешно решил следующую задачу
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731206
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlybaЧисло категорий и наборы характеристик для каждой из них предопределены.
Никогда не надейтесь на что-то постоянное
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731210
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naf, уже лет 20 как не надеюсь, и дальше тем более не буду.
Но! Это уже другая тема.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731266
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для описания различных товарных единиц используются различные наборы характеристик, в зависимости от категории товара.Банальный EAV.
Это очень просто:
Для каждой категории в таблице наборов х-к должен быть соотв. поле-ключ.
По этому полю отбираем список х-к, применимых только к этой категории.
Но ... при этом одна х-ка не сможет служить разным категориям. Или сможет, но путем усложения схемы таблиц.

Ни в коем случае никаких новых таблиц.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731272
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV, да, конечно, это ложится на EAV, так же как и всё-что-угодно ещё.
Но недостатки EAV известны, и абсолютная гибкость этой схемы в данном случае не нужна, и издержки не оправданы.

А у Вас есть собственный успешный опыт реализации учета товарооборота на EAV?
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731274
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... кроме того, категории предопределены (в первом приближении)
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731378
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlybaЧисло категорий и наборы характеристик для каждой из них предопределены.
Скажу сразу что я б пошел по пути EAV, даже несмотря на ваше утверждение. Просто практика показывает что такие утверждения лопаются как мыльные пузыри.
Второй вариант - делаем таблицу со списком категорий. В таблицу с товаром добавляем поля по количеству категорий. Соответственно выбор фильтра по этим полям (0 - нет категории, 1 - есть).
Третий вариант. Делаем таблицу со списком категорий. Для каждой категории (записи из созданной таблицы категорий) делаем отдельную таблицу в которой храним id товара.

Каждый подход имеет плюсы и минусы. Все зависит от задачи. Так что удачи вам, в борьбе с ветряными мельницами.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731384
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрКаждый подход имеет плюсы и минусы.

Совершенно верно. Поэтому и хочется услышать не соображения "как бы я стал бы делать", а репортажи из окопов.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731407
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlybaПредполагается, что в одном товарном документе могут присутствовать товары
разных категорий, соответственно, должны выполняться джойны к различным таблицам
характеристик.
Чисто из любопытства: что это за "товарный документ" в котором собраны разные товары,
причём с характеристиками? Договор, счет, счёт-фактура и товарная накладная никаких
"характеристик" в себя не включают, только название и цену.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731412
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ээ, а зачем Вам в "товарном документе" принципиально разные характеристики товаров - это же некая таблица, т.е. характеристики участвующие в документе должны быть однотипными? Т.е. получается, что в одном запросе много таблиц
джойнить не нужно - можно вынести эти единые характеристики в одну "родительскую" сущность?
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731421
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glyba,

Еще раз - в зависимости от задачи каждый подход имеет право на жизнь. Мы незнаем ваших объемов, задач, ... Так что не спрашивайте у нас как делать. Варианты вам предоставлены. Дальше выбираете то что вам нужно, ТЗ ведь у вас а не у нас.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731430
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЧисто из любопытства: что это за "товарный документ" в котором собраны разные товары,
причём с характеристиками? Договор, счет, счёт-фактура и товарная накладная никаких
"характеристик" в себя не включают, только название и цену.


Речь идет о специфических отраслевых документах.
Думаю, что если скажу, что речь идет об драгоценных камнях, как обработанных, так и необработанных, то у вас пропадёт желание любопытствовать дальше )).
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731432
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрТак что не спрашивайте у нас как делать.

А я этого, обратите внимание, не спрашиваю.
Я надеялся услышать о чьём-то личном успешном/неуспешном опыте.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731434
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДоговор, счет, счёт-фактура и товарная накладная никаких
"характеристик" в себя не включают, только название и цену.


Документ, кроме этих выходных форм, может еще и в гуе отображаться, верно?
И вот там-то, вполне понятно, юзер захочет видеть всё.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731444
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glyba,

Гуй - все равно в виде таблицы же?
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731451
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинГуй - все равно в виде таблицы же?

Вот именно!
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731456
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glyba,

Таблица подразумевает б.м. однотипные данные, нет? Если в столбце таблицы гуя для одного товара Вы указываете вес, а для другого - марку(или даже длину), это как-то имхо странновато.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731459
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlybaА я этого, обратите внимание, не спрашиваю.
Я надеялся услышать о чьём-то личном успешном/неуспешном опыте.
Мы тут не меряемся ... Относительно вашего вопроса в первом посте темы:
Эффективен ли оказался такой подход (если кто это применил), когда для каждой из категорий применяется отдельная таблица характеристик?
Подход неэффективен. Ваш путь - EAV. Описанный вами вариант применим для высоконагруженных систем с огромным количеством инсертов.

Надеюсь я ответил на ваш вопрос.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731467
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlybaВас есть собственный успешный опыт реализации учета товарооборота на EAV?Есть. Я использую ЕАВ.
У меня любая сущность может иметь список дополнительных параметров (легко настраиваемых).
На огромных массивах данных не проверял. Но не думаю, что у Вас огромные массивы данных.
При грамотной реализации - производительности хватает.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731470
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlybaЯ надеялся услышать о чьём-то личном успешном/неуспешном опыте.

Мой личный опыт с EAV был весьма успешным. Поэтому-то я и считаю, что мифы о её низкой
производительности пишут на заборах исключительно криворукие неудачники.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731475
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрПодход неэффективен.

Так-так-так?
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731483
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрОписанный вами вариант применим для высоконагруженных систем с огромным количеством инсертов.

Не означает ли это, что подход как раз-таки эффективен?
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731495
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlybaЭффективен ли оказался такой подход (если кто это применил), когда для каждой из категорий применяется отдельная таблица характеристик?Один из способов отображения классов на РМД ровно в этом и заключается, на каждый класс одна таблица. Если надо учитывать наследование, то для класса-потомка делают таблицу только "своих" свойств, а свойства мигрирующие от класса-предка хранятся в таблице класса-предка. И да, вполне себе эффективный подход, только классы желательно продумать потщательнее, чтобы потом не было "мучительно больно".GlybaПредполагается, что в одном товарном документе могут присутствовать товары разных категорий, соответственно, должны выполняться джойны к различным таблицам характеристик.Да сколько угодно, не вдаваясь в целесообразность вываливания кучи информации на экран. Даже предыдущие версии MS SQL позволяли выполнять до 255 джойнов. Другой вопрос, что лучше организовать детализации по дополнительному действию пользователя отдельными запросами. И с самого начала ограничивать его фильтрацией данных по условиям, а не вываливать ему "кашу" из десятков тысяч записей и сотен полей. Каждое его действие должно быть осмысленным. Впрочем, это уже больше по части организации клиент-серверного взаимодействия, что в данном случае является особенно актуальным.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731502
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlybaЗлой БобрОписанный вами вариант применим для высоконагруженных систем с огромным количеством инсертов.

Не означает ли это, что подход как раз-таки эффективен?
Ну тогда озвучьте замеры инсертов. Если у вас меньше 50 в секунду то нестоит даже и задумываться об этом.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731506
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVУ меня любая сущность может иметь список дополнительных параметров (легко настраиваемых).
На огромных массивах данных не проверял. Но не думаю, что у Вас огромные массивы данных.
При грамотной реализации - производительности хватает.
Да все это отлично работает и легко нормализуется, только в самом низу будет предопределенный набор _типов_ характеристик. Число, строка, ну что придумаете. Штук пять-десять, не больше. И вот их уже в разных таблицах хранить, ну или в одной в разных колонках для вящей простоты.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731635
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрНу тогда озвучьте замеры инсертов. Если у вас меньше 50 в секунду то нестоит даже и задумываться об этом.

Но чем для меня лучше окажется EAV, если у меня вдруг меньше 50 инсертов в секунду?
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731686
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlybaНо чем для меня лучше окажется EAV, ...
Научитесь пользоваться замером производительности и сами увидите. Селект отработает в разы быстрее, если коротко.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731739
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Злой БобрНаучитесь пользоваться замером производительности и сами увидите. Селект отработает в разы быстрее, если коротко.[/quot]

Видимо, вам, в отличие от меня, и замерять производительность не нужно?
Вы и так уверены, что EAV покажет в разы лучший результат, чем схема с несколькими (по числу категорий) таблицами характеристик?
Или вы всё-таки реализовывали оба варианта и провели замеры?
Так скажите об этом - так хочется услышать уже о реальном опыте !.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731750
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glyba,

Я несобираюсь доказывать очевидное. Вы спросили - вам ответили. Если так нравится троллить то продолжайте в гордом одиночестве. )))
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731780
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DogenДа все это отлично работает и легко нормализуется, только в самом низу будет предопределенный набор _типов_ характеристик. Число, строка, ну что придумаете. Штук пять-десять, не больше. И вот их уже в разных таблицах хранить, ну или в одной в разных колонках для вящей простоты.Я храню в одной таблице (поля int, float, str, date, bool). Ведь обращаясь к параметру всегда знаешь его тип.
Есть набор функций/процедур, делающих выборки простыми и удобными.

Не "вся система на ЕАВ", а "система с применением ЕАВ". Там где нужно.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38731836
prog123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GlybaЗлой БобрКаждый подход имеет плюсы и минусы.

Совершенно верно. Поэтому и хочется услышать не соображения "как бы я стал бы делать", а репортажи из окопов.

Как то так?
Universal database schema US 20060225029 A1
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38732041
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVНи в коем случае никаких новых таблиц.А почему так категорично?

Из окопов - с EAV были проблемы, решились постоением и синхронизацией параллельной "нормальной" системы для поисков, лучше бы она была изначально. Но это как в шутке про раков которые по пять, большие и вчера, или по три, но маленькие и сегодня.

GlybaЭффективен ли оказался такой подход (если кто это применил), когда для каждой из категорий применяется отдельная таблица характеристик?И так тоже было. Была и доведенная до абсурда база (к счастью только в качестве источника для конвертации) с кучей очень узких таблиц (с одним двумя полями) со связью 1:1 по ключу.

В любом случае в работающей системе не было никаких "легких и быстрых" изменений "на лету". Изменение (патч) накладывался на UAT систему, тестировалось, потом процесс повторялся для боевой системы.
Создавались ли при этом дополнительные таблицы или поля - разницы никакой.

На мой взгляд гибкость EAV схемы - миф, подходящий только для новой разработки, когда действительно правила меняются на ходу, данных мало, пользователи послушные. Но для таких условий и DDL легко решает все задачи. Как говорится мнение мое, не обязательно правильное.

Справедливости ради скажу, что имелся опыт использования "дополнительных определяемых пользователем полей" - EAV типа, когда пользователи имели возможность вносить и дофильтровывать инфу сразу, а не когда разработчик озаботился внести это изменение, новая версия протестирована, процесс миграции отлажен.
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38732351
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257На мой взгляд гибкость EAV схемы - миф, подходящий только для новой разработки, когда действительно правила меняются на ходу, данных мало, пользователи послушные.

Я пришел к такому же мнению.
Т.е. гибкость-то её сама по себе - не миф, но за неё приходится платить. Даже тогда, когда гибкость не нужна.

SERG1257Справедливости ради скажу, что имелся опыт использования "дополнительных определяемых пользователем полей" - EAV типа, когда пользователи имели возможность вносить и дофильтровывать инфу сразу, а не когда разработчик озаботился внести это изменение, новая версия протестирована, процесс миграции отлажен.

У нас другая ситуация - пользователи не будут ничего настраивать, т.к. введение новой категории в нашем случае означает и введение специфической бизнес-логики.
При этом возможность работы с каждой категорией будет отдельно приобретаться пользователем.
Для наглядности - предположим, 1-я категория - это необработанные алмазы, затем пользователь хочет автоматизировать еще и их движение в процессе обработки, при этом ему добавляются еще 2 категории - полуфабрикаты бриллиантов и готовые бриллианты.
Так что, сами понимаете, введением пользователем дополнительных полей не обойтись. Почему я и сказал в самом начале - категории предопределены. Почему-то некоторые не захотели в это поверить. Казалось бы, я лучше знаю, однако ж...
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38732421
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что, сами понимаете, введением пользователем дополнительных полей не обойтись.Это почему же ?
Это "тип товара" в карточке товара. В завис. от значения этого поля можно делать разные действия.
Параметры у них разные ? Ну дык сделать в ЕАВ параметры, зависящие от поля "тип товара".
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38732448
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVЭто почему же ?

Потому что, например, введение категории "Полуфабрикаты" требует введение производственного контура в параллель к контуру движения МЦ. Иначе юзеру неинтересно будет, т.к. полуфабрикаты не просто перемещаются по местам хранения, но еще и участвуют в "производственных отношениях", т.к. перемещение полуфабриката происходит в рамках наряда на обработку - это не только движение МЦ.

LSVЭто "тип товара" в карточке товара. В завис. от значения этого поля можно делать разные действия.

Типы-то имеются в виду предопределенные, верно? О то ж!
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38732471
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVЕсть набор функций/процедур, делающих выборки простыми и удобными.

А можно полюбопытствовать, как у вас это реализовано? Через динамический sql, или еще как-то?
Если через динамический sql, то где генерируется запрос - на клиенте, на сервере?
...
Рейтинг: 0 / 0
одновременный учет МЦ разных категорий
    #38732937
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlybaLSVЕсть набор функций/процедур, делающих выборки простыми и удобными.

А можно полюбопытствовать, как у вас это реализовано? Через динамический sql, или еще как-то?
Если через динамический sql, то где генерируется запрос - на клиенте, на сервере?Нет. Есть набор функций и ХП (т-sql).
Весь мой ЕАВ это аж три таблицы.
Если упрощенно, то:
* древовидный общий справочник всех доп.атрибутов
* таблица хранения значений: IDдокументa-IDатрибута-Значение
* таблица хранения значений: IDдокументa-IDатрибута-НаДату-Значение

последняя - для хранения логов/истории и атрибутов, зависящих от времени.

Их обслуживает статичный SQL. Причем простой.

Атрибуты простые, т.е. не составные, хотя можно долепить сложносоставные (типо: Категория ХХХ, утвержденная в YYYY, на основании QQQ и при участии ZZZ).
Схема позволяет, но неприятно усложнится.
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / одновременный учет МЦ разных категорий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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