Я сталкивался с этой проблемой несколько раз, и мне интересно, что делают другие люди.
Когда я создаю базу данных, иногда мне приходится импортировать данные в таблицу на регулярной основе, скажем, ежедневно. Обычно я удаляю все записи и повторно импортирую каждую запись из внешнего источника данных.
Много раз мне придется хранить еще несколько данных, которые относятся к импортированным записям, но не поступают из исходного источника импорта. Обычно эти «дополнительные данные» поступают от пользователя. Итак, я создам другую таблицу с первичным ключом, соответствующим ключу таблицы, которая получает импортированные данные, и сохраню эти дополнительные данные в новой таблице. Если это не имеет смысла, вот пример:
В старой устаревшей системе мы храним данные о сотрудниках. Но мне нужно использовать эти данные в веб-приложении, которое не может подключиться к этой старой устаревшей системе. Итак, я создаю базу данных с таблицей, которая соответствует схеме данных, которые у меня есть в старой системе, и я импортирую каждую запись в эту таблицу каждый день. Когда я выполняю импорт, я отбрасываю каждую запись и импортирую каждую запись.
Но в моей новой системе сотрудники могут сохранять биографические данные. Итак, в другой таблице я сохраняю это и их идентификатор.
Было бы проще иметь только одну таблицу, но я не могу этого сделать, потому что я бы отбросил данные, которых нет в другом месте, когда я выполняю импорт.
Еще одна плохая вещь заключается в том, что, поскольку я удаляю все эти записи для импорта, я не могу определить ограничения внешнего ключа со связанными данными.
Я ненавижу разрабатывать базы данных таким образом, потому что знаю, что есть способ получше. Было бы неплохо, если бы я мог делать обновления при импорте данных, вместо того, чтобы удалять и импортировать их все?
Я использую Sql server 2008, но мне интересно услышать о стратегиях, которые могут работать с любой СУБД.