Я новичок в программировании баз данных и хочу несколько советов по производительности / лучшие практики. Я анализирую некоторые веб-сайты и собираю информацию о телевизионных эпизодах и помещаю их в реляционную базу данных MS SQL 2008 R2.
Допустим, у меня есть таблица, заполненная типом Эпизод. Когда я начинаю новый анализ, я генерирую новый список Эпизодов. Дело в том, что я хочу, чтобы база данных точно соответствовала новому списку. В настоящее время я делаю массовое удаление всех, затем вставляю все. Проблема в том, что я не уверен, что это лучший способ, особенно потому, что я обеспокоен постоянством данных (первичные индексы episode_id остаются неизменными в течение длительных периодов времени).
Есть ли какой-нибудь простой способ вставить любые новые эпизоды в таблицу, обновить те, которые были изменены, и удалить те, которые больше не существуют, так, чтобы конечный результат был точно таким же, как новый список эпизодов. Эпизод будет сравниваться по идентификатору серии, номеру сезона и номеру эпизода.
Edit:
Тип Серии содержит список нескольких различных типов эпизодов, например:
List<TVDBEpisode>
List<TVRageEpisode>
List<TVcomEpisode>
Я бы анализировал один сайт за раз, например:
public void ParseTVDB(Series ser)
{
var eps = new List<TVDBEpisode>();
//... Parse tvdb and add each epsiode to this list
//... Make the Series' existing TVDBEpisodes match the new TVDBEpisodes
}
public void ParseTVRage(Series ser)
{
var eps = new List<TVRageEpisode>();
//... Parse tvrage and add each epsiode to this list
//... Make the Series' existing TVRageEpisodes match the new TVRageEpisodes
}
public void ParseTVcom(Series ser)
{
var eps = new List<TVcomEpisode>();
//... Parse tvcom and add each epsiode to this list
//... Make the Series' existing TVcomEpisodes match the new TVcomEpisodes
}