09.04.2013, 00:14 | #1 |
Возьми свет!!!
|
Когда нужна денормализация?
Работаю с готовым решением от одной компании... и приходиться достаточно часто получать цены с учетом акций... но данные такие, что получать приходиться достаточно сложно каждый раз ломая себе голову.
PriceDiscTable содержит аналитику склад(ссылается на аналитику со складом) Есть еще пять таблиц которые содержат соответственно строки рекламной акции, шапку рекламной акции с полем её активности, таблица периода(ну т.е. понедельник вторник и тп с часами, причем ее может и не быть данные по датам надо брать из строк), есть таблица куда эта акция проводиться т.е. это формат некого магазина(отдельная таблица с датами по истории я так понял), опять же сайт надо брать все склады относящиеся к данному сайту, либо просто склады, либо все склады компании тогда таблицы мест проведения не будет(все склады данной компании), кроме того нужно учитывать что если дата окончания - пустая, то необходимо брать максимально возможную дату в системе для даты конца этой самой акции. Сортируя это все по некоему коду беру ту у которой меньше этот код, а остальные даже абсолютно такие же - нет, я получаю действующую акцию. Акции могут просто включать и выключать в прошлом будущем настоящем... Затем соединяя это все по складу и номенклатуре я в дисплей методах получаю данные высчитывая согласно методу расчета в строке акции... Стоит ли такие данные немного денормализовать чтобы больше не мучиться? Ну т.е. все таки сделать склад и номенклатуру и даты конца и начала акции с нормальными заполненными данными..
__________________
Axapta 3.0 sp 5 Oracle Я могу взорвать вам мозг!!! Последний раз редактировалось Murlin; 09.04.2013 в 00:22. |
|
09.04.2013, 00:38 | #2 |
Участник
|
Так вы попробуйте и сделайте.
Денормализация есть не просит. Можно её сделать и попробовать поисполнять запросы по старому и по-новому и сравнить. Модификации очень простые получатся. |
|
09.04.2013, 00:58 | #3 |
Участник
|
Цитата:
Сообщение от Murlin
приходиться достаточно часто получать цены с учетом акций... но данные такие, что получать приходиться достаточно сложно каждый раз ломая себе голову... Затем я в дисплей методах получаю данные высчитывая согласно методу расчета в строке акции... Стоит ли такие данные немного денормализовать чтобы больше не мучиться?
А вообще, когда часто используемые расчетные данные так сложно искать, то обычно дело всё - в смешении данных, удобных для работы пользователей, и данных, удобных для работы системы. Шапки, строки, пять таблиц, необязательность заполнения полей, изменения задним числом... брр! Это все для пользователей, это все в журналах каких-нить должно быть. А для системы должна быть одна плоская транзакционная таблица, где все данные проверены, все неоднозначности разрешены и все нужные поля заполнены. И должен быть механизм трансляции из шапок со строками в плоскую таблицу. Это все давно уже придумано - поглядеть хоть на любой модуль Аксапты. Есть журналы, есть транзакционная таблица с движениями по учетным единицам, и есть механизмы разноски этих журналов, которые берут на входе шапки-строки, проверяют, дополняют недостающими данными из справочников/настроек/etc и генерят записи в плоских транзакционных таблицах, которые потом очень удобно фильтровать/агрегировать и куда пользователи своими грязными руками лазить не могут. На разноске - куча проверок, сложные вычисления, решение систем линейных уравнений, что угодно; при работе с транзакционной таблицей - только простые запросы без каких-либо неоднозначностей, максимум maxof/minof, фильтры по дате/клиенту/номенклатуре. Последний раз редактировалось gl00mie; 09.04.2013 в 01:00. Причина: typo |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), Murlin (1). |
09.04.2013, 05:20 | #4 |
Возьми свет!!!
|
Цитата:
Сообщение от gl00mie
Стоит пользователям сказать, чтобы не страдали ерундой и пользовались иногда отчетами Зачем им это все в display-методах-то? Если надо посчитать, как такой-то прайс будет выглядеть с учетом акций, можно сделать отчетик или отдельную форму, которая будет обсчитываться на сервере в момент вызова. Надо посмотреть - нажми на кнопочку вызова формы.
фильтры по дате/клиенту/номенклатуре. накипело так что ужос
__________________
Axapta 3.0 sp 5 Oracle Я могу взорвать вам мозг!!! Последний раз редактировалось Murlin; 09.04.2013 в 05:23. |
|