Wątek przeniesiony 2020-05-08 02:09 z Nietuzinkowe tematy przez somekind.

Jak zrobić obszar działania dla danego klienta ? Jak zbudować tabele do tego ?

0

Jest klient, który oferuje swoje usługi. Wybiera je z kategorii usług, które to wpadają w prostą tabelę

ID | user_id | category_id
---------------- | -------------------
1 | 23 | 3
2 | 23 | 4
3 | 23 | 8
4 | 23 | 6
5 | 23 | 9

Tutaj mam sprawę rozwiązaną bo zawsze chodzi o kategorie ID. ALe poza obszarem jaki klient wykonuje trzeba dodać lokalizację i tu ma do wyboru:
kod pocztowy - tutaj użytkownik sam wpisuje wartości
województwo - wybierane z listy jako np id: 1 - poznanskie, 2 - sosnowieckie 3 - warszawskie itd
kraj - jako id 1
kraj i zagranica jako id 2
tylko zagranica jako id 3

Jak to teraz najlepiej zapisać w bazie danych bo klient może np dodać że działa w danym mieście kod pocztowy i w dwóch województwach

ID | user_id | kod_pocztowy | wojewodztwo | kraj | kraj i zagranica | tylko zagranica
---------------- | -------------------
1 | 23 | 93-432 | | | | |
2 | 23 | | 3 | | | |
3 | 23 | | 5 | | | |

Czy lepiej zrobić tabele klucz wartosc

ID | user_id | key | value |
---------------- | -------------------
1 | 23 | kod_pocztowy | 93-432
2 | 23 | wojewodztwo | 3
3 | 23 | wojewodztwo | 5

Czy może inny lepszy sposób ?

1

Robisz sobie tabelę pośredniczącą między tymi województwami czy raczej kodami pocztowymi ( bo one powinny być powiązane z województwem), a użytkownikiem.
Coś w stylu user_post_codes z kolumnami user_id i post_code_id.

1

Kody pocztowe są oddzielnie zupełnie od województwa. Znaczy jeśli ktoś zaznaczy sam kod to wyszuka go tylko ktoś kto poda taki kod. Jeśli ustawisz sobie kod pocztowy i województwo to ktoś wyszuka cię jeśli poda dane województwo a kod pocztowy nie będzie brany pod uwagę itd. Jeśli podasz że cały kraj to bedziesz widziany wszędzie.

0

Kod pocztowy określa województwo. Nie ma więc potrzeby przypisywania do użytkownika niczego więcej. Województwa powinny być w relacji z kodami pocztowymi. Reszta to już odpowiednie zapytanie z użyciem join i możesz wyszukiwać jak sobie chcesz. Baza zbudowana w sposób jaki opisujesz może doprowadzić do dziwnych błędów. Np. względu na błąd gdzieś w aplikacji ktoś wpisze, że ma kod pocztowy 60-XXX(Poznań o ile pamiętam) dla Podkarpackiego.

3

@jurek1980: Nie jest prawdą to co piszesz. Kod pocztowy nie jest przypisany do województwa. Np. 18-220 :)
screenshot-20200508083104.png

1

@Marcin.Miga: pełnego pokrycia nie ma, bo są zaszłości historyczne z okresu kiedy Polska była potęga jak USA i miała 49 stanów, tfu województw no i jakieś zmiany granic pewnie też następowały. Jak w takim razie Ty proponujesz rozwiązać problem autora?

1

Może GIS? Zamiast województw, kodów pocztowych, po prostu obszary na mapie? Nie wiem jaką potęgą jest MySQL jeśli chodzi o wsparcie dla GIS, ale zawsze zostaje PostgreSQL ;)

0

Nie ładuj lokalizacji do 1 tabeli, zrób dwie skoro to dwa odrębne byty

id
idUser
idKodu

id
idUser
idWojewodztwa

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