Województwo, powiat, gmina w bazie danych.

0

Hej,
Mam tabelę - lokalizacje (id, nazwa oraz anc - zawiera info o nadrzędnym elemencie)

ID Nazwa anc
1 WIELKOPOLSKIE null
2 DOLNOŚLĄSKIE null
3 legnicki 2
4 Chojnów 3
5 nowotomyski 1

itd. I tak cały kraj. Wszystkie gminy, powiaty i wojewodztwa.

I teraz mam tabelę np. szkoły gdzie musze poza nazwą ilością uczniów przechować info o województwie gminie i powiecie.

I tu pytanie.
1.
Czy lepiej przechować województwo, powiat gmina jako id i potem join do tabeli lokalizacje. Dla każdej szkoły będę zawsze wyświetlał te dane.

Czy może lepiej województwo, powiat gmina jako string i odpada za każdym razem join.

  1. Może w szkole przechowywać tylko id gminy a województwo i powiat wyciągać odpowiednim zapytaniem. Mniej danych w bazie będę trzymał ale będzie bardziej skomplikowane zapytanie z joinami. Rekordów jest około 50 000.

Które podejście będzie, jest najlepsze w tym przypadku.

Pozdrawiam

3

Ja bym nie robił struktury w jednej tabeli, rozbiłbym na 3 osobne: wojewodztwa,powiaty gminy.

I nie chodzi o wielkość danych a o łatwość odpytywania, trzymałbym id, po 3 dla każdej szkoły.

Popatrz też szerzej i dalej,a co jak ktoś wpadnie na pomysł aby raportować po typie gminy np ile szkół jest w gminach wiejskich, albo ile szkół mamy w miastach na prawach powiatu, albo ile szkół mamy w województwach które mają conajmniej 50 miast?

Trzymanie 3 stopniowego podziału generuje problemy typu, że teoretycznie możesz dodać gmine przypisaną od razu do wojewodztwa, w efekcie poza tym, że trzymasz to w jednej tabeli nie zysujesz nic.

2

Pierwsze. Zawsze lepiej połączyć po id niż trzymać nadmiarowe dane, przynajmniej dla danych terytowych, a z tego co widzę to takie masz.

0
Panczo napisał(a):

Ja bym nie robił struktury w jednej tabeli, rozbiłbym na 3 osobne: wojewodztwa,powiaty gminy.

I nie chodzi o wielkość danych a o łatwość odpytywania, trzymałbym id, po 3 dla każdej szkoły.

Popatrz też szerzej i dalej,a co jak ktoś wpadnie na pomysł aby raportować po typie gminy np ile szkół jest w gminach wiejskich, albo ile szkół mamy w miastach na prawach powiatu, albo ile szkół mamy w województwach które mają conajmniej 50 miast?

Trzymanie 3 stopniowego podziału generuje problemy typu, że teoretycznie możesz dodać gmine przypisaną od razu do wojewodztwa, w efekcie poza tym, że trzymasz to w jednej tabeli nie zysujesz nic.

Hej,

Problem z raportowaniem po typie gminy itp o czym piszesz nie ma miejsca. Aplikacja już działa od wielu lat i nigdy nie było takiej potrzeby. Teraz jest przepisywana na nową technologie i stąd to pytanie. Przy okazji chcemy poprawić to co powinno być napisane lepiej. Jest już pewne rozwiązanie, ale szukam innego spojrzenia na temat. Obecnie właśnie województwo, gmina i powiat trzymane są w osobnych tabela, ale w tabeli szkoły jest tylko id gminy i aby dobrac się do województwa trezba zrobić trochę joinów. W gminie jest id powiatu a w tabeli powiaty id województwa.

Te tabele z woj, powi i gmin używam do wypełniania trzech selectów na stronie, gdzie przypisuje je do danej szkoły.

Tak więc nie przejmować się i trzymać dane nieznormalizowane ( z nadmiarowymi danymi) aby mieć szybsze odpytywanie?
Czyli woj_id, pow_id, i gmin_id w tabeli szkoły?

Pozdrawiam

0

Policzyłeś zysk? Wg GUS mamy niecałe 25000 szkół, zakładając, że to id trzymasz na w byte'ach, to 3 id w tabeli zajmie ok 0,15 Mega, powiedzmy, że nie przemyślałeś i klucze trzymasz na 4 byte'ach to mówimy o 0,3...

I nie, moim zdaniem nie mówimy o nadmiarowości, bo gmina/powiat/województwo to atrybut opisujący szkołę, to że na podstawie gminy jesteśmy wstanie określić województwo tego nie zmienia. Bo z tym tokiem myślenia mógłbyś szkołę opisać tylko miastem i gminy już tam nie potrzebujesz...

1
Sebastian Plewa napisał(a):

Problem z raportowaniem po typie gminy itp o czym piszesz nie ma miejsca.

To, że nie ma i nie było nie znaczy, że nie wystąpi. Aplikację należy pisać tak, aby dało się ją łatwo modyfikować.

Obecnie właśnie województwo, gmina i powiat trzymane są w osobnych tabela, ale w tabeli szkoły jest tylko id gminy i aby dobrac się do województwa trezba zrobić trochę joinów. W gminie jest id powiatu a w tabeli powiaty id województwa.

To jest jak najbardziej poprawnie. Możesz zrobić sobie widok i nie będziesz musiał robić joinów za każdym razem.

Te tabele z woj, powi i gmin używam do wypełniania trzech selectów na stronie, gdzie przypisuje je do danej szkoły.

Tego nie przeskoczysz.

Tak więc nie przejmować się i trzymać dane nieznormalizowane ( z nadmiarowymi danymi) aby mieć szybsze odpytywanie?
Czyli woj_id, pow_id, i gmin_id w tabeli szkoły?

Trochę bez zesnu - złaczenie województw z powiatami i powiatów z gminami będzie po kluczu, czyli będzie tam indeks to odpytanie tych kilku set rekordów nie będzie stanowiło znacznego obciążenia dla wydajności.

1 użytkowników online, w tym zalogowanych: 0, gości: 1