Wybór bazy i sposób zapisu różnych wersji danych w tabelach

0

Witam,
mam zbiór danych w około 10 tabelach, po około 15 kolumn każda z 20-100k rekordów. Są to dane i wynik obliczeń zapisane w bazach plikowych (dbf). Dla takiej struktury muszę teraz zrobić zapis wyników oraz danych dla różnych wariantów, tzn. użytkownik zmieni 3 wartości w jednej z tabel co może spowodować zmianę 90% wyników we wszystkich tabelach. Po takiej zmianie dane wejściowe oraz wyniki nadpisują obecne dane z dbf i mają zostać również zapisane do późniejszego porównania z zewnętrznej bazie. Moje pytanie brzmi: w jaki sposób można zrobić to najwydajniej? (chodzi o zapis różnych wariantów danych dla tych samych struktur tabel) Zapis musi być z bazie plikowej lokalnie. Mam zapis części innych danych w sqlite i dobrze byłoby zostać przy tej bazie, chociaż jestem otwarty na inne rozwiązania. Dane pochodzą z programu pisanego w Delphi, więc jest spora dowolność odnośnie rodzaju bazy. Nie mam pojęcia ile może być różnych wersji tych tabel, może 10 a może 1000. Wszystkie zależy od użytkownika chociaż jeśli będzie to porównywane to obstawiam, że ze względu na mnogość wariantów i konieczność opanowania wszystkiego nie będzie to więcej niż 20-30 wariantów. Najprostsze rozwiązania to:

  1. Zapisywać każdy wariant jako osobną bazę
  2. W jednej bazie tworzyć nowe tabele dla kolejnych wariantów
  3. Dla każdej tabeli dodać kolumnę z ID wersji i dopisywać rekordy dla kolejnych wersji

Wydaje mi się, że rozwiązanie 3 byłoby najlepsze. Mógłbym w prosty sposób znaleźć różnice w wersjach dla porównania wyników. Problem jest pewnie banalny ale chciałbym usłyszeć podpowiedź kogoś bardziej doświadczonego z bazami.

1

Zgadzam się całkowicie, że pomysł 3 jest najlepszy. Trzymanie osobnych baz lub osobnych tabel dla tych samych danych w różnych wariantach to zły pomysł. W razie gdyby zmieniła się struktura danych, np. pojawi się nowa kolumna, albo zmieni się typ danych na polu, to w przypadku rozwiązania 3 zmieniasz tylko w jednym miejscu, zamiast w wielu.

0

Dzięki za potwierdzenie. Jak patrze teraz na moje pytanie to sam nie wiem czemu przyszły mi do głowy 2 pierwsze propozycje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1