Това е често срещан проблем при проектирането на бази данни:Въпросът дали да се отделят или „архивират“ записи, които вече не са „активни“.
Най-често срещаните подходи са:
- Всичко в една таблица, маркирайте поръчките като „завършени“, според случая. Плюсове:Най-простото решение (както по отношение на кода, така и по отношение на структурата), добра гъвкавост (напр. лесни за „възкресяване“ поръчки). Минуси:Таблиците могат да станат доста големи, проблем както за заявки, така и за напр. резервни копия.
- Архивирайте стари неща в отделна таблица. Решава проблемите от първия подход, с цената на по-голяма сложност.
- Използване на таблица с разделяне на базата на стойности. Това означава, че логично (за приложението) всичко е в една таблица, но зад кулисите СУБД поставя неща в отделни области в зависимост от стойността(ите) на някои колони. Вероятно бихте използвали колоната „завършено“ или „датата на завършване на поръчката“ за разделянето.
Последният подход донякъде съчетава добрите части на първите два, но се нуждае от поддръжка в СУБД и е по-сложен за настройка.
Забележка:
Таблиците, които съхраняват само „архивирани“ данни, обикновено се наричат „архивни таблици“. Някои СУБД дори предоставят специални машини за съхранение за тези таблици (напр. MySQL), които са оптимизирани да позволяват бързо извличане и добра ефективност на съхранението, с цената на бавни промени/вмъквания.