Гость
Map
Форумы / Microsoft SQL Server [закрыт для гостей] / Нужно нестандартное решение / 22 сообщений из 22, страница 1 из 1
10.03.2023, 12:03
    #320979
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Есть несколько таблиц, в которых хранится много однотипных значений. Типа такой
Код: 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 гигов перевалила, и это только тренировка.
...
Рейтинг: 0 / 0
15.03.2023, 19:31
    #326209
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Просто Трёп  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 гигов перевалила, и это только тренировка.
Это не sql почитай про хотя бы 3 нормальные формы, а лучьше, до пятой , седьмой, так можно и все хранить.

Это не база данных. Хранить то можно, запросы сделать не возможно. И не рационално место и индексы используются.
...
Изменено: 15.03.2023, 19:42 - Sparrow
Рейтинг: 0 / 0
15.03.2023, 19:33
    #326214
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Нужно вникнуть в предметную область, что там хранится и зачем?
Не бывет абстрактных баз, это тупиковый путь.
Бывают конкретные.

Так не бывает, что к одному ключу много значений.
...
Изменено: 15.03.2023, 19:42 - Sparrow
Рейтинг: 0 / 0
15.03.2023, 19:43
    #326227
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Sparrow  15.03.2023, 19:33
[игнорируется]
что там хранится и зачем?
Показания датчиков, снятые с устройства одномоментно. То есть, одно снятие показаний - одна метка времени и 60 значений. Снятие может быть раз в две секунды. При выборке нужно только время. Отбора по показаниям нет.
...
Рейтинг: 0 / 0
15.03.2023, 19:47
    #326228
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Вообще это похоже на олап.
Надо в экселе такое делать или во внешнем клиенте, если он не знает , что хочет.
Дать данные там пусть работает , но это дорого, с точки зрения sql.
Обычно олап кубы ночью готовят, утром дают.
...
Рейтинг: 0 / 0
15.03.2023, 19:56
    #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
15.03.2023, 19:57
    #326235
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Просто Трёп  15.03.2023, 19:43
[игнорируется]
Sparrow  15.03.2023, 19:33
[игнорируется]
что там хранится и зачем?
Показания датчиков, снятые с устройства одномоментно. То есть, одно снятие показаний - одна метка времени и 60 значений. Снятие может быть раз в две секунды. При выборке нужно только время. Отбора по показаниям нет.
Поминутки?
Тогда , да надо 2 базы. Одна сырые данные значений и редких запросов , но долгих.
А другая, для типичных 90% запросов, там на процеесе загрузки или ночью, все нормализовать. Собрать суммы.
Если критичен ОЛАП, кубы , Надо думать. Так и не скажу сразу.
...
Изменено: 15.03.2023, 19:58 - Sparrow
Рейтинг: 0 / 0
15.03.2023, 20:18
    #326247
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Гарыныч  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, например) и там же храни мин и макс по нужным полям, не?
потом джойни только нужные таблички
Вау. Интересно. Подумаю.
...
Рейтинг: 0 / 0
15.03.2023, 20:23
    #326255
Гарыныч
Участник
[игнорирует гостей кроме]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Просто Трёп  15.03.2023, 20:18
[игнорируется]
Вау. Интересно. Подумаю.
я в акцесе так делал....( например хранил таблички по годам ( архивным ) ....)
когда кому-то из бухгалтеров надо было поднять данные за предудущие года...., тогда джойнил те, что нужны
...
дед-пердед
Рейтинг: 0 / 0
15.03.2023, 20:26
    #326256
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Просто Трёп  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, так не чесно.
...
Рейтинг: 0 / 0
15.03.2023, 20:27
    #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
15.03.2023, 20:31
    #326258
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Гарыныч  15.03.2023, 20:27
[игнорируется]
Sparrow  15.03.2023, 20:26
[игнорируется]
Просто Трёп  15.03.2023, 20:18
[игнорируется]
Гарыныч  15.03.2023, 19:56
[игнорируется]
Просто Трёп  10.03.2023, 12:03
[игнорируется]
...
сделай дополнительную табличку, в ней храни имя таблички с данными ( l_val32, например) и там же храни мин и макс по нужным полям, не?
потом джойни только нужные таблички
Вау. Интересно. Подумаю.
Это опять динамик sql, так не чесно.
а джойнить пару табличек или 2 сотни - честно? :)))
Да
...
Рейтинг: 0 / 0
15.03.2023, 20:35
    #326260
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Гарыныч  15.03.2023, 20:27
[игнорируется]
Sparrow  15.03.2023, 20:26
[игнорируется]
Просто Трёп  15.03.2023, 20:18
[игнорируется]
Гарыныч  15.03.2023, 19:56
[игнорируется]
Просто Трёп  10.03.2023, 12:03
[игнорируется]
...
сделай дополнительную табличку, в ней храни имя таблички с данными ( l_val32, например) и там же храни мин и макс по нужным полям, не?
потом джойни только нужные таблички
Вау. Интересно. Подумаю.
Это опять динамик sql, так не чесно.
а джойнить пару табличек или 2 сотни - честно? :)))
Есть язоковые фитчи чтобы это делать без динамик sql, если это в пределах нормальных форм.
...
Рейтинг: 0 / 0
15.03.2023, 20:36
    #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
15.03.2023, 20:44
    #326267
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Гарыныч  15.03.2023, 20:36
[игнорируется]
Sparrow  15.03.2023, 20:35
[игнорируется]
Гарыныч  15.03.2023, 20:27
[игнорируется]
Sparrow  15.03.2023, 20:26
[игнорируется]
Просто Трёп  15.03.2023, 20:18
[игнорируется]
...
Это опять динамик sql, так не чесно.
а джойнить пару табличек или 2 сотни - честно? :)))
Есть язоковые фитчи чтобы это делать без динамик sql, если это в пределах нормальных форм.
я них не понил, можешь пояснить?
Конкретно не могу, лень читать руководства, но с каждой версией микрософт придумывает новые удобства типа развития оконных функций. Или еще чего сего, чтобы отучить нас от динамик sql.
Sql запрос они могут оптимизировать, там пишешь , что хочешь, а не так как нужно , с тчки зрения Тебя. Меня.
...
Рейтинг: 0 / 0
15.03.2023, 20:47
    #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
15.03.2023, 20:49
    #326271
Гарыныч
Участник
[игнорирует гостей кроме]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
воробышку:
Просто Трёп  15.03.2023, 19:43
[игнорируется]
То есть, одно снятие показаний - одна метка времени и 60 значений. Снятие может быть раз в две секунды. При выборке нужно только время. Отбора по показаниям нет.
...
дед-пердед
Изменено: 15.03.2023, 20:49 - Гарыныч
Рейтинг: 0 / 0
15.03.2023, 20:49
    #326272
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Гарыныч [игнорируется] 

Будем считать что я демагог , увы (((:
...
Рейтинг: 0 / 0
15.03.2023, 20:51
    #326275
Гарыныч
Участник
[игнорирует гостей кроме]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
не, ты не демагог....
просто вычислительные ресурсы у всех разные.... :(((
...
дед-пердед
Рейтинг: 0 / 0
15.03.2023, 20:58
    #326279
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Гарыныч  15.03.2023, 20:49
[игнорируется]
воробышку:
Просто Трёп  15.03.2023, 19:43
[игнорируется]
То есть, одно снятие показаний - одна метка времени и 60 значений. Снятие может быть раз в две секунды. При выборке нужно только время. Отбора по показаниям нет.
Там не все так однозначно и совсем абстрактно, автору или лень разбираться или ему не обьяснили что хотят. Я бы никогда не назвал столбцы

V1, v2, v3, v4 ....
Тем более если несклько таблиц.
Они все чегото обозначают. И имеют какието связи.

Может там все секретно. Мне не понятно.
...
Рейтинг: 0 / 0
15.03.2023, 21:07
    #326284
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Это по любому много датчиков, они имеют свои иды, свойства.
И не возможно с них снять все значения одновременно.
Модель мягко говоря сильно абстрактна или упрощена.
...
Изменено: 15.03.2023, 21:09 - Sparrow
Рейтинг: 0 / 0
15.03.2023, 21:18
    #326289
Гарыныч
Участник
[игнорирует гостей кроме]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно нестандартное решение
Sparrow  15.03.2023, 21:07
[игнорируется]
Это по любому много датчиков, они имеют свои иды, свойства.
И не возможно с них снять все значения одновременно.
Модель мягко говоря сильно абстрактна или упрощена.
хз...., я так понил задачу, если не угадал, сорри... :)
...
дед-пердед
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [закрыт для гостей] / Нужно нестандартное решение / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (3): Анонимы (1), Yandex Bot, Bing Bot 3 мин.
Пользователи онлайн (89): Анонимы (77), Просто Трёп, Yandex Bot, Кусь, Разум вселенной 1 мин., Дед-Папыхтет 1 мин., Biene Maja 1 мин., a.v.z 2 мин., Bing Bot 3 мин., anonymous 3 мин., Google Bot 6 мин., XEugene 6 мин., s62 8 мин.
x
x
Закрыть


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