powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / таблица фактов, вытянутая в длину.
15 сообщений из 15, страница 1 из 1
таблица фактов, вытянутая в длину.
    #38423812
Адель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые.

Пришла мне в голову блажь завести для гибкости очень вытянутую структуру. Чтобы в БД в одной длинной трехколоночной таблице могли разместится несколько совершенно разных кубов - таблиц фактов, да еще и чтобы пользователи могли накидать еще несколько. Пример схемы данных ниже.

Так вот, не могу решить как в ней лучше группировать данные. Пока склоняюсь к динамическому запросу, который построит "нормальную" таблицу фактов из "длинной", и сгруппирует ее. И по ней потом процедурой пробежаться и в вытянутую таблицу вновь рассовать.

Может есть чего-то, чего я не замечаю, чтобы напрямую их группировать? Так вообще не слишком ли гибко?


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
набор данных
(
   код
   имя
);
\
1, отгрузки
2, состав сырья
/

параметры
(
   код
   код набора данных
   имя
   использование при группировке
   справочник
   тип
  и т.д.
)
\
1, 1, машина, NONE                      -- отгрузки - 4 колонки, 
2, 1,  №склада, GROUP
3, 1,  товар, GROUP
4, 1,  кол-во, SUM
5, 2,  плотность, AVG     -- состав сырья               
6, 2,  доля фракции 1,   AVG
7, 2,  доля фракции 2, AVG
/

данные
(
   время
   параметр
   значение
)
\
t1, 1, a234et  -- машина, N                      -- отгрузки
t1, 2, 1          -- №склада, GROUP
t1, 3, мешок   --  товар, GROUP
t1, 4, 10         -- кол-во
t2, 1, a432et   -- машина, N                      
t2, 2, 1           -- №склада, GROUP
t2, 3, мешок    --  товар, GROUP
t2, 4, 13         -- кол-во, SUM
t3, 1, a100eу   -- машина, N                      
t3, 2, 2           -- №склада, GROUP
t3, 3, пакет    --  товар, GROUP
t3, 4, 450         -- кол-во, SUM
t4, 1, a432et   -- машина, N                      
t4, 2, 2           -- №склада, GROUP
t4, 3, мешок    --  товар, GROUP
t4, 4, 29         -- кол-во, SUM
t5  xxxxxxx                                  -- состав сырья - совершенно другая песня, опускаю
/



последняяя таблица через cross-table редактируется в таком виде

Код: sql
1.
2.
3.
4.
5.
6.
      машина, №склада,  товар, кол-во

t1    a234et       1         мешок     10
t2    a234et       1         мешок     13
t3    a100еу       2         пакет     450
t2    a234et       2         мешок     29



теперь бы их сгруппировать вот так:

Код: sql
1.
2.
3.
4.
5.
№склада,  товар, кол-во

       1         мешок     20
       2         пакет     450
       2         мешок     29



результирующая таблица под это дело

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
суточные данные
(
   дата
   код строки группировки
   параметр
   значение
)
\
d1, 1, 2, 1          -- №склада, GROUP
d1, 1, 3, мешок   --  товар, GROUP
d1, 1, 4, 23         -- кол-во
d1, 2, 2, 2          -- №склада, GROUP
d1, 2, 3, пакет   --  товар, GROUP
d1, 2, 4, 450         -- кол-во
d1, 3, 2, 2          -- №склада, GROUP
d1, 3, 3, мешок   --  товар, GROUP
d1, 3, 4, 29         -- кол-во
/
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38423825
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EAV изобретаете.
Что же каждый через это прошел.
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38423828
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257каждый через это прошел.
Но не плюются от этого опыта только те, кто понял, что программировать придётся не только
на SQL. Аффтар, делай свою шахматку на клиенте, там это проще всего будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38423841
Адель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, это EAV, спасибо. А почему обрабатывать на клиенте? Клиенты, конечно, все равно будут эти шахматки строить, и можно как-то приспособитсмя и повторно использовать код. Но это как-то совсем уж некрасиво. Сервер умный, пусть думает. Или хранимка по расписанию, или триггер - в зависимости от нагрузки. Не?
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38423843
Адель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, сервер Postgres
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38424439
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АдельА почему обрабатывать на клиенте?
Потому что там это проще и удобнее. А если обрабатывать на сервере, то не стоит
связываться с EAV вообще.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38424498
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АдельЧтобы в БД в одной длинной трехколоночной таблице могли разместится несколько совершенно разных кубов - таблиц фактов, да еще и чтобы пользователи могли накидать еще несколько.
Это называется Операции
Нужны две таблицы:
Собссно Операции (ид, тип, дата, содержание, создатель и т.д.)
Параметры операций: (ид параметра, ид операции, тип, имя параметра, значение)
Ну и описание типов операций
Параметр операции м.б. списком - тогда все несколько сложнее
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38424933
Адель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_мод,

что-то я не улавливаю разницу, я вроде так и сделал. Вопрос-то был как это правильно группировать

Спасибо добрым людям, подсказали ключевое слово. Почитал. Решил пока оставить операции как есть, уж больно хорошо клиент получается для ввода. А суточные данные сделать почти нормальной таблицей фактов. Почти - т.к. будет hstore, в данном примере - по складам и товарам.
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38424936
Адель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Почему не стоит это делать вообще, мне уже понятно. А почему не стоит если обработка на сервере? В двух словах, пожалуйста.
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38424940
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АдельА почему не стоит если обработка на сервере? В двух словах, пожалуйста.

Тормоза. Говнокод.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38426126
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АдельВопрос-то был как это правильно группировать
группировать для чего ? отчет ?
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38428982
Адель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Так и на клиенте то же самое :)

Ладно, с этим все ясно.

А если сделать EAV для отдельных операций и сборку суточных значений в нормальную таблицу фактов, но с hstore это как с точки зрения перфоманса/эстетики?
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38428984
Адель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_мод,

да для всего. Для начала для агрегирования в суточные значения. В-общем я так решил уже не делать. :)
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38429031
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АдельТак и на клиенте то же самое :)
Нет, там всё гораздо проще. Но надо быть программистом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
таблица фактов, вытянутая в длину.
    #38429146
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АдельА если сделать EAV для отдельных операций и сборку суточных значений в нормальную таблицу фактов, но с hstore это как с точки зрения перфоманса/эстетики?
Так и делать.
А агрегирование можно делать разными способами:
1. матвью
2. процедурой
3 динамически по мере надобности
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / таблица фактов, вытянутая в длину.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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