powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [закрыт для гостей] / Нужно нестандартное решение, Поиск: Искать сообщения, созданные автором: Гарыныч  
8 сообщений из 8, страница 1 из 1
Microsoft SQL Server / Нужно нестандартное решение
    #326234
Гарыныч
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей кроме]
Просто Трёп  10.03.2023, 12:03
[игнорируется]
Есть несколько таблиц, в которых хранится много однотипных значений. Типа такой
Код: 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.
CREATE TABLE [dbo].[l_val32](
  [adt] [datetime] NOT NULL,
  [cdt] [datetime] NOT NULL,
  [g_id] [smallint] NOT NULL,
  [v1] [smallmoney] NULL,
  [v2] [smallmoney] NULL,
  [v3] [smallmoney] NULL,
  [v4] [smallmoney] NULL,
  [v5] [smallmoney] NULL,
  [v6] [smallmoney] NULL,
  [v7] [smallmoney] NULL,
  [v8] [smallmoney] NULL,
  [v9] [smallmoney] NULL,
  [v10] [smallmoney] NULL,
  [v11] [smallmoney] NULL,
  [v12] [smallmoney] NULL,
  [v13] [smallmoney] NULL,
  [v14] [smallmoney] NULL,
  [v15] [smallmoney] NULL,
  [v16] [smallmoney] NULL,
  [v17] [smallmoney] NULL,
  [v18] [smallmoney] NULL,
  [v19] [smallmoney] NULL,
  [v20] [smallmoney] NULL,
  [v21] [smallmoney] NULL,
  [v22] [smallmoney] NULL,
  [v23] [smallmoney] NULL,
  [v24] [smallmoney] NULL,
  [v25] [smallmoney] NULL,
  [v26] [smallmoney] NULL,
  [v27] [smallmoney] NULL,
  [v28] [smallmoney] NULL,
  [v29] [smallmoney] NULL,
  [v30] [smallmoney] NULL,
  [v31] [smallmoney] NULL,
  [v32] [smallmoney] NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[l_val32] ADD  CONSTRAINT [DF_l_val32_cdt]  DEFAULT (getdate()) FOR [cdt]
GO

ALTER TABLE [dbo].[l_val32]  WITH CHECK ADD  CONSTRAINT [FK_l_val32_r_groups] FOREIGN KEY([g_id])
REFERENCES [dbo].[r_groups] ([gid])
GO

ALTER TABLE [dbo].[l_val32] CHECK CONSTRAINT [FK_l_val32_r_groups]
GO
Столбцов может быть и больше. Выборки из этих таблиц делаются с помощью динамического SQL. Долго думал, как отказаться от динамики, но так ничего и не придумал. Формируются эти динамки в тот момент, когда пользователь решает, какие столбцы ему будут нужны для дальнейшей работы. Динамка может состоять из нескольких запросов, объединенных юнионами, если пользователю нужны данные из нескольких таких таблиц, например, l_val32 и l_val64. После того, как пользователь сформировал свой запрос, он его юзает, накладывая условия по времени.

Возникла хотелка подменять отдельные значения по минимуму / максимуму. То есть, для определенного столбца (не для всех) определить минимум и максимум, и если реальное значение выходит за рамки, то возвращать пользователю допустимые минимум или максимум.

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

Я помню, мне многие советовали не хранить данные горизонтально, но мне до сих пор кажется дикостью хранить такое количество данных вертикально.

ЗЫ За пол-года базешка уже за 5 гигов перевалила, и это только тренировка.
сделай дополнительную табличку, в ней храни имя таблички с данными ( l_val32, например) и там же храни мин и макс по нужным полям, не?
потом джойни только нужные таблички
...
дед-пердед
Изменено: 15.03.2023, 19:57 - Гарыныч
Рейтинг: 0 / 0
Microsoft SQL Server / Нужно нестандартное решение
    #326255
Гарыныч
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей кроме]
Просто Трёп  15.03.2023, 20:18
[игнорируется]
Вау. Интересно. Подумаю.
я в акцесе так делал....( например хранил таблички по годам ( архивным ) ....)
когда кому-то из бухгалтеров надо было поднять данные за предудущие года...., тогда джойнил те, что нужны
...
дед-пердед
Рейтинг: 0 / 0
Microsoft SQL Server / Нужно нестандартное решение
    #326257
Гарыныч
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей кроме]
Sparrow  15.03.2023, 20:26
[игнорируется]
Просто Трёп  15.03.2023, 20:18
[игнорируется]
Гарыныч  15.03.2023, 19:56
[игнорируется]
Просто Трёп  10.03.2023, 12:03
[игнорируется]
Есть несколько таблиц, в которых хранится много однотипных значений. Типа такой
Код: 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.
CREATE TABLE [dbo].[l_val32](
  [adt] [datetime] NOT NULL,
  [cdt] [datetime] NOT NULL,
  [g_id] [smallint] NOT NULL,
  [v1] [smallmoney] NULL,
  [v2] [smallmoney] NULL,
  [v3] [smallmoney] NULL,
  [v4] [smallmoney] NULL,
  [v5] [smallmoney] NULL,
  [v6] [smallmoney] NULL,
  [v7] [smallmoney] NULL,
  [v8] [smallmoney] NULL,
  [v9] [smallmoney] NULL,
  [v10] [smallmoney] NULL,
  [v11] [smallmoney] NULL,
  [v12] [smallmoney] NULL,
  [v13] [smallmoney] NULL,
  [v14] [smallmoney] NULL,
  [v15] [smallmoney] NULL,
  [v16] [smallmoney] NULL,
  [v17] [smallmoney] NULL,
  [v18] [smallmoney] NULL,
  [v19] [smallmoney] NULL,
  [v20] [smallmoney] NULL,
  [v21] [smallmoney] NULL,
  [v22] [smallmoney] NULL,
  [v23] [smallmoney] NULL,
  [v24] [smallmoney] NULL,
  [v25] [smallmoney] NULL,
  [v26] [smallmoney] NULL,
  [v27] [smallmoney] NULL,
  [v28] [smallmoney] NULL,
  [v29] [smallmoney] NULL,
  [v30] [smallmoney] NULL,
  [v31] [smallmoney] NULL,
  [v32] [smallmoney] NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[l_val32] ADD  CONSTRAINT [DF_l_val32_cdt]  DEFAULT (getdate()) FOR [cdt]
GO

ALTER TABLE [dbo].[l_val32]  WITH CHECK ADD  CONSTRAINT [FK_l_val32_r_groups] FOREIGN KEY([g_id])
REFERENCES [dbo].[r_groups] ([gid])
GO

ALTER TABLE [dbo].[l_val32] CHECK CONSTRAINT [FK_l_val32_r_groups]
GO
Столбцов может быть и больше. Выборки из этих таблиц делаются с помощью динамического SQL. Долго думал, как отказаться от динамики, но так ничего и не придумал. Формируются эти динамки в тот момент, когда пользователь решает, какие столбцы ему будут нужны для дальнейшей работы. Динамка может состоять из нескольких запросов, объединенных юнионами, если пользователю нужны данные из нескольких таких таблиц, например, l_val32 и l_val64. После того, как пользователь сформировал свой запрос, он его юзает, накладывая условия по времени.

Возникла хотелка подменять отдельные значения по минимуму / максимуму. То есть, для определенного столбца (не для всех) определить минимум и максимум, и если реальное значение выходит за рамки, то возвращать пользователю допустимые минимум или максимум.

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

Я помню, мне многие советовали не хранить данные горизонтально, но мне до сих пор кажется дикостью хранить такое количество данных вертикально.

ЗЫ За пол-года базешка уже за 5 гигов перевалила, и это только тренировка.
сделай дополнительную табличку, в ней храни имя таблички с данными ( l_val32, например) и там же храни мин и макс по нужным полям, не?
потом джойни только нужные таблички
Вау. Интересно. Подумаю.
Это опять динамик sql, так не чесно.
а джойнить пару табличек или 2 сотни - честно? :)))
...
дед-пердед
Рейтинг: 0 / 0
Microsoft SQL Server / Нужно нестандартное решение
    #326261
Гарыныч
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей кроме]
Sparrow  15.03.2023, 20:35
[игнорируется]
Гарыныч  15.03.2023, 20:27
[игнорируется]
Sparrow  15.03.2023, 20:26
[игнорируется]
Просто Трёп  15.03.2023, 20:18
[игнорируется]
Гарыныч  15.03.2023, 19:56
[игнорируется]
...
Вау. Интересно. Подумаю.
Это опять динамик sql, так не чесно.
а джойнить пару табличек или 2 сотни - честно? :)))
Есть язоковые фитчи чтобы это делать без динамик sql, если это в пределах нормальных форм.
я них не понил, можешь пояснить?
...
дед-пердед
Рейтинг: 0 / 0
Microsoft SQL Server / Нужно нестандартное решение
    #326270
Гарыныч
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей кроме]
Sparrow  15.03.2023, 20:44
[игнорируется]
Гарыныч  15.03.2023, 20:36
[игнорируется]
Sparrow  15.03.2023, 20:35
[игнорируется]
Гарыныч  15.03.2023, 20:27
[игнорируется]
Sparrow  15.03.2023, 20:26
[игнорируется]
...
а джойнить пару табличек или 2 сотни - честно? :)))
Есть язоковые фитчи чтобы это делать без динамик sql, если это в пределах нормальных форм.
я них не понил, можешь пояснить?
Конкретно не могу, лень читать руководства, но с каждой версией микрософт придумывает новые удобства типа развития оконных функций. Или еще чего сего, чтобы отучить нас от динамик sql.
Sql запрос они могут оптимизировать, там пишешь , что хочешь, а не так как нужно , с тчки зрения Тебя. Меня.
так понятней стало :)))
...
дед-пердед
Изменено: 15.03.2023, 20:48 - Гарыныч
Рейтинг: 0 / 0
Microsoft SQL Server / Нужно нестандартное решение
    #326271
Гарыныч
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей кроме]
воробышку:
Просто Трёп  15.03.2023, 19:43
[игнорируется]
То есть, одно снятие показаний - одна метка времени и 60 значений. Снятие может быть раз в две секунды. При выборке нужно только время. Отбора по показаниям нет.
...
дед-пердед
Изменено: 15.03.2023, 20:49 - Гарыныч
Рейтинг: 0 / 0
Microsoft SQL Server / Нужно нестандартное решение
    #326275
Гарыныч
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей кроме]
не, ты не демагог....
просто вычислительные ресурсы у всех разные.... :(((
...
дед-пердед
Рейтинг: 0 / 0
Microsoft SQL Server / Нужно нестандартное решение
    #326289
Гарыныч
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей кроме]
Sparrow  15.03.2023, 21:07
[игнорируется]
Это по любому много датчиков, они имеют свои иды, свойства.
И не возможно с них снять все значения одновременно.
Модель мягко говоря сильно абстрактна или упрощена.
хз...., я так понил задачу, если не угадал, сорри... :)
...
дед-пердед
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [закрыт для гостей] / Нужно нестандартное решение, Поиск: Искать сообщения, созданные автором: Гарыныч  
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (2): Анонимы (1), Yandex Bot 6 мин.
Пользователи онлайн (14): Анонимы (8), Сталкер 1 мин., Yandex Bot 2 мин., Bing Bot 2 мин., Разум вселенной 3 мин., Кусь 8 мин., Google Bot 9 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


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