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,