Jakiś czas temu wykonałem aplikację do obsługi biura księgowego, którą cały czas utrzymuję i w której raz na jakiś czas zdarza się jej rozbudowa. W systemie od początku został zaimplementowany eksport podstawowych danych do firm do pliku excela, a ponieważ samą aplikację niejako dziedziczyłem po poprzednim obsługującym, to nie wszystko tam było zrefaktorowane na postać oczekiwaną.
Ale do rzeczy. Pierwotna aplikacja miała zdefiniowanego „Opiekuna”, który to był jej … opiekunem. W tak zwanym międzyczasie zaszła potrzeba dopisywania więcej niż jednej osoby z prawem do edycji danych klienta, a potem również trzeba było zapisywać więcej niż jednego klienta, powiązanego z daną firmą.
Oczywistym rozwiązaniem jest wtedy podpięcie pod „firmy” tablicy „użytkownicy o strukturze:
CREATE TABLE firma_użytkownicy firma_id INTEGER, użytkownik_id INTEGER, rola TEXT; |
Bo tak zdefiniowana struktura pozwala na „podpinanie” dowolnej liczby użytkowników o dowolnych rolach.
Wracając do tytułowego błędu. Początkowe pole „opiekun” zmieniło się w tablicę z danymi użytkownika, a ponieważ przypadek sprawił że w czasie eksportu przez dobry rok nie wystąpiła anomalia, NAGLE! jako opiekun zaczęli pojawiać się użytkownicy o innych rolach.
Całość obrazuje jak, nawet w tak niewielkiej aplikacji, zmiana która teoretycznie nie miała niczego wspólnego z jednym jej kawałkiem, wpływa na zupełnie inny,