Ostatnio piszę dość dużo aplikacji DB. Często w bazach danych istnieją pewne pojęcia, które się powtarzają (np. nazwy miast) dlatego ujęte są w osobne tabele. W innych tabelach tworzy się powiązania do tej tabeli i tak dalej.
W aplikacji taka relacja jest często widoczna jako pole wyboru Combo.
Zasadniczo sam wykorzystywałem dwa sposoby pobierania danych:
1). Miałem funkcję pobierzCombo, która gdy było to potrzebne (przykładowo otwierało się jakieś okienko z tym polem), łączyła się z bazą danych i pobierała spis np. miast. Połączenie musiało nastąpić za każdym razem, gdy otwierało się okienko zawierające pole combo. Problem był taki, że często potrzebny był numer ID danej nazwy miasta, ale w combo widoczne miały być tylko nazwy, więc rozwiązanie się nieco komplikowało.
2). Utworzyłem sobie klasę MIASTA i tworzyłem z niej listę obiektów MIASTO. Dzięki temu łączyć się z bazą musiałem tylko raz, a potem mogłem wstawiać do Combo miasta prostą pętlą pobierającą nazwy z listy obiektów. Dodatkowo dostanie się do ID wybranego miasta było banalne.
Zasadniczo bardziej podoba mi się metoda 2, jednak martwi mnie wykorzystanie pamięci przy bardzo dużej ilości takich obiektów. Druga sprawa, to jeśli z bazą pracują dwie osoby, to w przypadku modyfikacji danych przez jedną osobę, zmiany nie są widocznie u osoby drugiej.
Jak wy rozwiązujecie następujący problem?