Сценарий:
У меня есть приложение (C #), которое ожидает базу данных SQL и имя входа, которые устанавливаются пользователем. После подключения он проверяет наличие нескольких таблиц и создает их, если они не найдены.
Я хотел бы остановиться на этом, имея возможность добавить в эти таблицы столбцы, если я выпущу новую версию программы, основанную на новых столбцах.
Вопрос:
Каков наилучший способ программной проверки структуры существующей таблицы SQL и создания или обновления ее в соответствии с ожидаемой структурой?
Я планирую перебрать список обязательных столбцов и изменять существующую таблицу всякий раз, когда она не содержит новый столбец. Я не могу не задаться вопросом, есть ли подход, который отличается или лучше.
Критерий:
Вот некоторые из моих ожиданий и добровольных правил:
- Более новые версии программы могут больше не использовать определенные столбцы, но они будут сохранены для целей регистрации данных. Другими словами, столбцы не будут удалены.
- Существующие данные в таблице должны быть сохранены, поэтому таблицу нельзя просто удалить и создать заново.
- Во всех случаях новые добавленные столбцы допускают нулевые данные, поэтому для заполнения старых записей используются нулевые значения по умолчанию.
Пример:
Вот пример таблицы (потому что наглядные примеры помогают!):
id datetime sensor_name sensor_status x1 x2 x3 x4
1 20100513T151907 na019 OK 0.01 0.21 1.41 1.22
2 20100513T152907 na019 OK 0.02 0.23 1.45 1.52
Затем в новой версии я могу добавить столбец x5
. «x
-колонки» - это все столбцы хранения данных, которые принимают ноль.
Edit:
Я обновил пример таблицы выше. Это скорее журнал, а не родительская таблица. Таким образом, датчики будут неоднократно отображаться в этой таблице регистрации с записанными значениями. Отдельная родительская таблица содержит географическую и другую логистическую информацию о датчике, что делает таблицу желательной для изменения дочерней таблицы.