хранение определённого максимума для значений и самих значений в БД

Суть такая - мне надо хранить в базе данных (ms sql) 9 разных значений, они могут уменьшаться и увеличиваться (независимо друг от друга). НО мне также надо время от времени сбрасывать эти значения до изначального состояния. Я подумал, что пожно хранить всё это в двух массивах, но оказалось, что массивы в бд хранить нельзя. А если создавать каждое поле, то получится 18 столбцов в бд. Изначально я хотел сделать так - хранить все эти значения в виде одной строки (пример - "1 2 5 6 7.."), а когда надо просто парсить их и доставать значения. Вопрос - насколько это костыль и как можно его обойти?


Ответы (1 шт):

Автор решения: S.H.

Дело в том, что хранение значений в базе данных напоминает не записи последовательных значений в строку, а, скорее, запись значений в столбец, где рядом со значением находится его идентификатор. Обычно его называют primary key.

Примерно на SQL это выглядит так:

    insert into Table1 (id, val) values (1, 176)

Здесь 176 - значение, а 1 - это идентификатор, по котормоу можно это значение достатьь обратно из базы, примерно так:

    select val from Table1 where id = 1

При этом сама Table1 сотоит из двух столбцов - id и val

Если значение изменилось, и надо сохранить инфу об этом в базк - то в sql это будет как то так:

    update Table1 set val=177 where id=1

Дальше начинаются тонкости. Одно дело - это хранить "мгновеннное состояние" значений 9 переменных (для этого достаточно просто использовать id от1 до 9). Но иногда надо сохранить историю изменений - например, чтобы потом построить графики изменения температуры, измеренной 9 разными датчиками. Тогда - в таблицу надо добавить еще один столбец, время, и использовать только Insert - то есть, только добавлять данные.

Надеюсь, мой ответ поможет

→ Ссылка