Przypisanie Ulic do Miejscowości

Użytkowanie programu bazodanowego
mkf118
Posty: 5
Rejestracja: pt mar 14, 2014 1:19 pm

Przypisanie Ulic do Miejscowości

Post autor: mkf118 »

Witam, ponieważ tworzę bazę która będzie miała dosyć sporo danych ok. 20 000 wpisów miesięcznie. Staram się przygotować bazę w taki sposób, aby wprowadzanie było jak najszybsze i obyło się bez błędów typu (literówki w adresach) w późniejszym czasie zamierzam te dane przetwarzać za pomocą raportów na wszelakie możliwe sposoby. Stąd moje pytanie. W jaki sposób zrobić, aby na podstawie danych z tabeli: HARMONOGRAM (zaw. ID, ID_MIEJSCOWOSCI, DATA, ID_RODZ_ODPADOW) pobiera dane z tab. MIEJSCOWOSC, w innej tabeli: LISTA (zaw. ID, IMIE, NAZWISKO, NR, ID_HARMONOGRAMU, ID_ULICA) (która jest podformularzem) i pobiera ulice zawarte w tabeli: ULICE. Chcę, aby ulice pobierane były na podstawie miejscowości (aby po wyborze miejscowości otwierając listę ulic, pokazywały się tylko te z wybranej miejscowości), dlatego też utworzyłem kolejną tabele: ULICE_MIEJSCOWOSCI (zaw. ID, ID_ULICY, ID_MIEJSCOWOSCI) gdzie przypisuje ID do ID. Jak to zrobić w formularzu, żeby wszystko zagrało? W załączniku przesyłam bazę, aby była możliwość podglądu jak to wygląda.
Załączniki
BAZA.odb
(21.27 KiB) Pobrany 226 razy
LibreOffice 4.2.0.4, Windows 7
Jan_J
Posty: 4626
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Przypisanie Ulic do Miejscowości

Post autor: Jan_J »

Tabela ULICE_MIEJSCOWOSCI to zawracanie głowy. Tak się robi w przypadku związków wielowartościowych między dobrze zdefiniowanymi obiektami różnych rodzajów (np. kwalifikacje pracowników albo ich uczestnictwo w projektach).
W przypadku ulic będzie problem. Jeżeli masz ulicę dajmy na to Kraszewskiego, to nazwa jest wpisana tylko raz, tak? a we wspomnianej tabeli wiążesz jej numer z numerem Poznania (bo ma taką ulicę) i Wrześni (bo również). I teraz Rada Miejska jednej z miejscowości decyduje o zmianie nazwy ulicy. I co?
Po prostu nie nazwa ulicy, tylko ulica jest obiektem w sensie struktury bazy. Prawidłowy projekt powinien zawierać tabele: MIEJSCOWOSCI (ID, NAZWA, ...), ULICE (ID, ID_MIEJSCOWOSCI, NAZWA, ...).
Co nie przybliża do rozwiązania dot. formularza. Tu wskazówką będą podformularze. Może się przyda https://forum.openoffice.org/pl/forum/s ... dformularz
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
mkf118
Posty: 5
Rejestracja: pt mar 14, 2014 1:19 pm

Re: Przypisanie Ulic do Miejscowości

Post autor: mkf118 »

Generalnie przewidziałem ten problem w przypadku kiedy kilka miejscowości ma taką samą ulicę. Bo jest kilka miejscowości, w których ulice często się powtarzają. Mój zamysł był taki, że po prostu dodaje te same ulice kilka razy tylko pod innym ID. Z tego względu, iż później w raportach chciałbym wyciągnąć informację z dokładnie tej ulicy przypisanej do danej miejscowości. W przypadku kiedy jedna z Miejscowości zmieni nazwę ulicy, stara pozostanie tylko dodam nową o nowym ID. Chociaż na pewno też można rozwiązać to w inny sposób. W każdym razie zabieram się za lekturę powyżej wymienionego "linku".

Ważną sprawą jest to, aby miejscowość wybierana była tylko raz przy HARMONOGRAMIE, bo dzisiaj będę wprowadzał raport z takiego dnia, na taki rodzaj odpadów i w wybranej miejscowości a jutro może być inna miejscowość i inny rodzaj odpadów. W przypadku kiedy otrzymuje raport z jednej miejscowości zakładając, że będzie to ok. 500 pozycji przy 70 ulicach nie wyobrażam sobie wybierać za każdym razem miejscowość albo dzielić harmonogramy jeszcze na ulice ponieważ w skali powiedzmy roku może się tego nazbierać i jest to zawsze o wiele więcej pracy, dlatego liczbę pół staram się ograniczyć do minimum. No niestety te wszystkie dane są bardzo istotne.

I koniecznie muszę mieć bazę ulic, nie mogę wpisywać ich ręcznie. Ponieważ będzie nad tym pracowało kilku użytkowników. A w przypadku kiedy jedna osoba wpisze: 3 MAJA, inna zaś 3-GO MAJA, lub w ogóle Trzeciego Maja, a niechaj ktoś popełni literówkę. Albo wpisywać będzie ul. J. PIŁSUDSKIEGO, inny JÓZEFA PIŁSUDSKIEGO, a kolejny może wpisać samego PIŁSUDSKIEGO. Dlatego chcąc tego uniknąć właśnie tak to rozwiązałem. Rozumiem, że w przypadku raportów jest możliwośc wpisania np. "TREDERA" i powinno znaleźć wszystko. Może jest jeszcze jakiś inny pomysł...

Ja widzę rozwiązanie i wiem, że jest to możliwe tylko nie wiem jak mój kolega to zrobił. Bo na daną chwile mam wszystkie ulice w Gminie, a ma być filtr: JEŻELI WYBIORĘ ID_MIEJSCOWOSCI = 1 WYŚWIETL WSZYSTKIE ID_ULICY = ID_MIEJSCOWOSCI=1
LibreOffice 4.2.0.4, Windows 7
Jan_J
Posty: 4626
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Przypisanie Ulic do Miejscowości

Post autor: Jan_J »

Nie neguję Twoich przemyśleń; stwierdziłem tylko że ulica “3 Maja” w Pińsku i “3 Maja” w Mińsku to dwie niezależne, autonomiczne nazwy, a w Wińsku ma prawo istnieć ulica “III Maja”. Każda ulica winna mieć i własną tekstową nazwę (nie referencję do nazwy), i przypisanie do miejscowości (jako referencję przez ID).

Wtedy, budując formularz, wstawiasz tabelę MIEJSCOWOSCI, dodajesz podformularz z tableą ULICE i deklarujesz powiązanie ID miejscowości w formularzu z ID_MIEJSCOWOSCI w podformularzu. I masz co chcesz.

PS. Jeżeli operacje na poziome tabel są zbyt sztywne, możesz oprzeć formularz na perspektywach (chyba się o nich mówi “widoki” w Base) albo na zapytaniach (“kwerendach”). Ale na mój rozum tabele powinny wystarczyć.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
mkf118
Posty: 5
Rejestracja: pt mar 14, 2014 1:19 pm

Re: Przypisanie Ulic do Miejscowości

Post autor: mkf118 »

Teraz tak przygotowałem tabelę. Szkoda że nie wpadłem na to szybciej :P

Tylko teraz na podstawie tego Formularza, który już aktualnie mam (bo już trochę go przystosowałem i aby uniknąć tworzenia od nowa) czy jestem w stanie go tak zmodyfikować, aby kolumnę "ulice" i wyświetlały się tylko z wybranej miejscowości.

Tabele wyglądają następująco:

MIEJSCOWOSCI
- ID
- NAZWA

ULICE
- ID
- NAZWA
- ID_MIEJSCOWOSCI


Kolumna -> Pole Listy -> Dane ->

Pole danych: ID_ULICA
Typ zawartości listy: SQL
Zawartość Listy:

Kod: Zaznacz cały

SELECT "ULICE"."NAZWA", "MIEJSCOWOSCI"."ID" FROM "ULICE", "MIEJSCOWOSCI" WHERE "ULICE"."ID_MIEJSCOWOSCI" = "MIEJSCOWOSCI"."ID"
Zapewne jest to durnie proste. Nie mniej jednak nie mogę na to wpaść. Zrobiłbym tu jakieś kryterium, albo jakiś warunek. Tylko jak to w zapytaniu zrobić?
Załączniki
BAZA.odb
(21.97 KiB) Pobrany 260 razy
LibreOffice 4.2.0.4, Windows 7
Jan_J
Posty: 4626
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Przypisanie Ulic do Miejscowości

Post autor: Jan_J »

# Właśnie o takim układzie tabel pisałem.

# Dlaczego budujesz formularz na pytaniu SQL zamiast na tabelach?


# Pisanie filtra w SQL-u wychodzi trochę pod, wiatr, bo interfejs formularza ma do tego narzędzia, a teraz się będziesz zastanawiał, jak przekazać ID z wybranego rekordu do zapytania. Nie rób tego. Jeżeli powiążesz dwa (lub więcej) pól formularza i podformularza, osiągniesz zamierzony efekt. Nigdy tego nie robiłem dla danych SQL, ale nie sądzę by było to trudne.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ