SQL Server w logistyce

Tabela _maps_points w bazie danych SQL Server

Punkty prezentowane na mapie — z tytułem, opisem, ikoną i przypisaniem do typu pojazdu.

sql.server.net.pl/sql/
Uśmiechnięty analityk w garniturze przy szerokim monitorze
Uśmiechnięty analityk w garniturze przy szerokim monitorze
W skrócie
  • Wiersz opisuje pojedynczy punkt widoczny na mapie — z własnym tytułem, opisem i ikoną.
  • Kolumna ID_MAPS przypisuje punkt do konkretnej mapy, więc jedna mapa może mieć ich dowolnie wiele.
  • Kolumna TYP_AUTA pozwala odfiltrować punkty nieosiągalne dla danego pojazdu — na przykład rampy bez podnośnika.
  • Tabela nie ma zdefiniowanych indeksów; przy większej liczbie punktów warto to uzupełnić.

Do czego służy tabela [dbo].[_maps_points]

Mapa pokazująca jeden znacznik odpowiada na pytanie „gdzie to jest”. Mapa z punktami dodatkowymi odpowiada na pytanie „co jest w okolicy” — gdzie znajduje się parking dla ciężarówek, która brama jest czynna po godzinie osiemnastej, do której rampy podjeżdża naczepa chłodnicza. Tabela [dbo].[_maps_points] przechowuje właśnie takie punkty.

Każdy z nich ma własną warstwę opisową: tytuł widoczny przy znaczniku, dłuższy opis pokazywany po kliknięciu, kod służący do powiązania z danymi w innych systemach oraz ikonę odróżniającą rodzaj obiektu. Kolumny KRAJ i MIEJSCE pozwalają szybko zawęzić zbiór bez porównywania współrzędnych.

Osobno warto zwrócić uwagę na kolumnę TYP_AUTA. Punkt użyteczny dla dostawczaka bywa bezużyteczny dla zestawu z naczepą — inna wysokość bramy, inny promień skrętu, inne godziny dostępności. Filtrowanie po typie pojazdu sprawia, że kierowca widzi na mapie tylko to, z czego faktycznie może skorzystać.

Warstwy opisu pojedynczego punktu
Położenie PołożenieWspółrzędne oraz kraj i miejscowość do szybkiego filtrowania
Opis OpisTytuł przy znaczniku i rozwinięcie widoczne po kliknięciu
Rozróżnienie RozróżnienieIkona i kod porządkujące punkty według rodzaju
Dopasowanie DopasowanieTyp pojazdu ogranicza widok do punktów faktycznie dostępnych

Filtrowanie po typie pojazdu jest tu najbardziej praktyczną funkcją — kierowca zestawu nie musi przeglądać punktów przeznaczonych dla dostawczaków.

Budowa tabeli — wykaz kolumn

Dziesięć kolumn opisuje położenie punktu, jego treść oraz sposób prezentacji.

Wykaz kolumn tabeli
KolumnaTypWymaganaZnaczenie
ID_MAPSint
liczba całkowita
takId mapy
IKONAvarchar(max)
tekst bez limitu długości
nieIkona punktu
KODvarchar(50)
tekst do 50 znaków
nieKod punktu
KRAJvarchar(50)
tekst do 50 znaków
nieKraj
LATITUDEfloat
liczba zmiennoprzecinkowa
nieSzerokość geograficzna punktu
LONGITUDEfloat
liczba zmiennoprzecinkowa
nieDługość geograficzna punktu
MIEJSCEvarchar(50)
tekst do 50 znaków
nieMiejsce np nazwa miasta
OPISvarchar(max)
tekst bez limitu długości
nieOpis punktu
TYP_AUTAvarchar(50)
tekst do 50 znaków
nieTyp auta
TYTULvarchar(50)
tekst do 50 znaków
nieTytuł punktu

Kolumna ID_MAPS wskazuje mapę, do której należy punkt. W bazie nie zdefiniowano dla niej klucza obcego, więc spójność tego powiązania wymaga kontroli po stronie aplikacji albo okresowego sprawdzenia zapytaniem.

Brak indeksów — kiedy zaczyna to przeszkadzać

Tabela nie ma zdefiniowanych indeksów, także klucza głównego. Przy kilkudziesięciu punktach nie ma to znaczenia, bo serwer odczytuje całość szybciej, niż zdążyłby skorzystać z indeksu. Sytuacja zmienia się wraz ze wzrostem zbioru.

Wpływ liczby punktów na sposób odczytu
Liczba punktówZachowanie serweraZalecenie
Do kilkusetOdczyt całej tabeli, czas pomijalnyBez zmian
Kilka tysięcyOdczyt całości przy każdym otwarciu mapyIndeks na kolumnie ID_MAPS
Kilkadziesiąt tysięcyZauważalne opóźnienie przy otwieraniu mapyIndeks złożony na ID_MAPS i TYP_AUTA
Powyżej stu tysięcyOdczuwalne obciążenie serwera przy każdym żądaniuIndeks przestrzenny na współrzędnych

Brak klucza głównego oznacza też, że nic nie zapobiega powstaniu identycznych wierszy — warto to sprawdzić przed założeniem indeksu unikalnego.

Zanim doda się indeks unikalny, trzeba sprawdzić, czy w tabeli nie ma już duplikatów — powstają łatwo przy powtórzonym imporcie tego samego zbioru punktów. Zapytanie grupujące po współrzędnych i tytule wystarcza, żeby to ustalić; usunięcie powtórzeń jest wtedy warunkiem założenia ograniczenia.

Jak korzystać z tabeli w praktyce

Przy zarządzaniu punktami na mapie warto trzymać się kilku zasad:

  • Wypełniaj kolumnę KOD spójnie — to jedyny sensowny sposób powiązania punktu z danymi w innym systemie.
  • Nadawaj tytuły krótkie; przy znaczniku na mapie mieści się kilkanaście znaków, reszta zostaje ucięta.
  • Sprawdzaj po imporcie, czy nie powstały duplikaty — powtórzone wczytanie tego samego pliku nie jest niczym blokowane.
  • Ustawiaj TYP_AUTA zawsze, gdy dostępność punktu zależy od pojazdu; puste pole oznacza widoczność dla wszystkich.
  • Weryfikuj, czy wartość w kolumnie ID_MAPS wskazuje istniejącą mapę; brak klucza obcego nie chroni przed osieroconymi punktami.
  • Rozważ założenie indeksu na kolumnie ID_MAPS, gdy liczba punktów przekroczy kilka tysięcy.

Kontrola punktów osieroconych oraz duplikatów — dwie rzeczy, przed którymi nie chroni obecna struktura:

-- punkty wskazujące nieistniejącą mapę
SELECT  p.ID_MAPS, COUNT(*) AS PUNKTOW
FROM    dbo._maps_points AS p
WHERE   NOT EXISTS (SELECT 1 FROM dbo._maps AS m
                    WHERE m.ID_MAPS = p.ID_MAPS)
GROUP BY p.ID_MAPS;

-- powtórzone punkty o tych samych współrzędnych i tytule
SELECT  LATITUDE, LONGITUDE, TYTUL, COUNT(*) AS WYSTAPIEN
FROM    dbo._maps_points
GROUP BY LATITUDE, LONGITUDE, TYTUL
HAVING  COUNT(*) > 1;

Oba zapytania warto uruchomić po każdym imporcie punktów. Wykrywają sytuacje, których struktura tabeli nie blokuje, a które psują wygląd i użyteczność mapy.

Warto też przemyśleć, skąd punkty pochodzą. Zbiory wprowadzane ręcznie przez dyspozytorów są dokładne, ale rosną wolno i zwykle obejmują tylko trasy obsługiwane regularnie. Import z zewnętrznego katalogu daje pokrycie od pierwszego dnia, lecz zawiera pozycje nieistotne dla firmy i wymaga odfiltrowania. Rozwiązanie pośrednie — import jako punkt wyjścia, a następnie ręczne uzupełnianie o wiedzę kierowców — sprawdza się najczęściej, pod warunkiem że kolumna KOD pozwala odróżnić jedno źródło od drugiego.

Punkty na mapie są funkcją, którą łatwo wdrożyć i równie łatwo zaniedbać. Zbiór wczytany raz przy uruchomieniu systemu po roku bywa nieaktualny — bramy zmieniają godziny, parkingi znikają, rampy dostają nowe ograniczenia. Warto od początku ustalić, kto odpowiada za jego aktualizację i w jakim rytmie.

Powiązane tabele i dokumentacja

Punkty mapowe działają razem z definicją mapy i pozostałymi strukturami transportowymi:

FAQ

Najczęściej zadawane pytania o tabelę _maps_points

01

Do czego służy kolumna TYP_AUTA?

Pozwala ograniczyć widok mapy do punktów dostępnych dla konkretnego rodzaju pojazdu. Parking czy rampa użyteczna dla dostawczaka bywa nieosiągalna dla zestawu z naczepą ze względu na wysokość bramy albo promień skrętu. Puste pole oznacza punkt widoczny dla wszystkich pojazdów.

02

Dlaczego tabela nie ma klucza głównego?

W obecnej definicji nie zdefiniowano żadnego indeksu. Przy niewielkiej liczbie punktów nie wpływa to na działanie, ale ma dwie konsekwencje: nic nie zapobiega powstaniu identycznych wierszy przy powtórzonym imporcie, a odczyt zawsze obejmuje całą tabelę. Przy kilku tysiącach punktów warto to uzupełnić.

03

Jak sprawdzić, czy import punktów się nie powtórzył?

Zapytaniem grupującym po współrzędnych i tytule z warunkiem HAVING COUNT(*) > 1. Powtórzone wczytanie tego samego pliku nie jest niczym blokowane, a duplikaty objawiają się nakładającymi się znacznikami — co przy grupowaniu znaczników bywa niewidoczne aż do przybliżenia widoku.

04

Czy punkt może istnieć bez przypisanej mapy?

Tak — kolumna ID_MAPS nie ma zdefiniowanego klucza obcego, więc nic nie blokuje wskazania nieistniejącej mapy ani nie usuwa punktów po skasowaniu mapy. Takie osierocone wiersze nie są widoczne nigdzie w interfejsie, ale zajmują miejsce i zaburzają statystyki. Warto je kontrolować okresowym zapytaniem.

Słownik pojęć

Słownik pojęć

Pojęcia związane z prezentacją danych geograficznych w systemie.

TTelematyka GPS
Rejestracja pozycji i parametrów pracy pojazdu przekazywana do systemu transportowego. Pozwala potwierdzić realizację kursu i rozliczyć czas pracy kierowcy.
GGeofencing
Wirtualna granica wokół obiektu. Przekroczenie jej przez pojazd automatycznie wyzwala zdarzenie w systemie, na przykład rejestrację wjazdu na plac.
MMicrosoft SQL Server
Serwer relacyjnej bazy danych, na którym pracują aplikacje SoftwareStudio. Odpowiada za spójność danych, uprawnienia dostępu, kopie zapasowe i wydajność zapytań.
IIndeks bazodanowy
Struktura przyspieszająca wyszukiwanie wierszy w tabeli. Dobrze dobrane indeksy skracają czas zapytań, ale spowalniają zapisy i zajmują miejsce na dysku.
TTMS
Transportation Management System — system planowania i rozliczania transportu: przyjmuje zlecenia przewozowe, przydziela pojazdy i kierowców, planuje trasy i rozlicza koszty kursu.
YYMS
Yard Management System — system zarządzania placem i rampami. Porządkuje kolejność obsługi pojazdów, przydziela okna czasowe i mierzy rzeczywisty czas postoju.
RRampa przeładunkowa
Stanowisko, przy którym odbywa się załadunek lub rozładunek pojazdu. Jej przepustowość jest zwykle wąskim gardłem całego magazynu.

Zobacz to w praktyce

Sprawdź, jak systemy SoftwareStudio oparte na MS SQL Server wspierają ten obszar Twojej firmy.