Aby odpowiedzieć na twoje pytanie, nie, to nie jest normalne w procesie Agile.
To, co może wydawać się wynikać z podejścia Agile, wynika z jego krótkiego cyklu projektowania / opracowywania / testowania, a nacisk Agile na lekkie rozwiązania, które spełniają znane wymagania, ale są dobrze skonstruowane, aby móc sprostać nowym wymaganiom dzięki minimalna zmiana. Biorąc pod uwagę te dwie rzeczy, możesz powiedzieć, że programista, nie wiedząc, co może przyjść później, ale wiedząc, że jego zmiana nie powinna wpłynąć na DB w sposób, którego nie można cofnąć, po prostu wprowadza niezbędne zmiany w schemacie w „najlżejszy” możliwy sposób, a następnie co pewien czas kilka zestawów „lekkich” zmian zostanie przekształconych w coś bardziej trwałego i stabilnego.
Powiedziawszy to, nie pracowałem jeszcze z programistą, który podpisał się pod teorią i metodologią Agile, a także pomyślałem, że rutynowe tworzenie i usuwanie tabel w schemacie jest konieczne z jakiegokolwiek powodu. Zwinne nie oznacza doskakiwania ani wkręcania. Jeśli otrzymasz historię, która wymaga dodania nowego pola danych należącego do określonego rekordu, dodajesz to pole do tabeli. Jeśli ta zmiana coś psuje, to zastanawiasz się, dlaczego i dokonujesz innych zmian, które mogą być konieczne (mogę myśleć o bardzo niewielu rzeczach, które mogłyby się zepsuć, dodając kolumnę do sprawdzanego DB; jeśli zepsuje się z tego rodzaju zmianą, ty mają większe problemy). Refaktoryzacja jest zwykle ograniczona do kodu; zmiana schematu jest zwykle bardziej zaangażowanym procesem niż zmiana kodu, więc kiedy zmiany schematu muszą nastąpić, zwykle są wykonywane z większą ostrożnością, i przynajmniej trochę uwagi poświęconej znajomości przyszłego kierunku projektu. Konieczność przebudowy części lub całości bazy danych wskazuje na fundamentalny błąd projektu; bycie zwinnym nie oznacza, że nie ma „ogólnego planu” podstawowych zasad architektury i projektowania, których należy przestrzegać, jednocześnie budując program i strukturę danych.
Teraz w Agile są przypadki, w których to, co „wiesz” teraz, będzie sprzeczne z tym, czego nauczysz się później. Załóżmy, że masz wymóg, aby twój system miał adres dla każdej osoby. Ponieważ jest to relacja 1: 1, a dane będą potrzebne w większości przypadków, wystarczy dodać pola Adres do tabeli Osoby. Tydzień później otrzymasz wymaganie, aby Osoba mogła mieć więcej niż jeden adres. Teraz jest to relacja 1: N i aby odpowiednio go modelować, musisz cofnąć poprzednie zmiany, dzieląc pola na nową tablicę adresów. To nie jest rutyna, szczególnie wśród starszych programistów. Doświadczony programista zobaczy, że osoba ma adres, uzna je za odrębne koncepcyjnie i utworzy tabelę osób i tablicę adresów, łącząc osobę z adresem z referencją FK do adresu ID. Schemat taki jak ten jest łatwiejszy do zmiany w przypadku zmiany charakteru relacji; bez tworzenia lub usuwania całych „szerokich” tabel danych relację między osobą a adresem można dość łatwo zmodyfikować z 1: 1 na 1: N na N: N.