SQL Server w logistyce

Tabela _parametry w bazie danych SQL Server

Centralne ustawienia systemu — pogrupowane, opisane i przypisane do ról, zamiast rozproszone po plikach konfiguracyjnych.

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
  • Parametr jest identyfikowany parą grupa + kod, na której założono indeks unikalny.
  • Kolumna ROLA pozwala nadać temu samemu ustawieniu różne wartości dla różnych grup użytkowników.
  • Znacznik VISIBLE ukrywa parametry techniczne przed użytkownikiem, nie usuwając ich z konfiguracji.
  • Znacznik SYSTEMOWE decyduje, czy wiersz zostanie nadpisany przy synchronizacji z bazą wzorcową.

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

Systemy magazynowe różnią się między wdrożeniami setkami drobiazgów: czy dokument wymaga akceptacji, ile dni wstecz wolno wystawiać przyjęcia, jaki format ma numer etykiety, czy skanowanie lokalizacji jest obowiązkowe. Rozrzucenie tych ustawień po plikach konfiguracyjnych kończy się zawsze tak samo — po roku nikt nie wie, gdzie czego szukać. Tabela [dbo].[_parametry] zbiera je w jednym miejscu.

Identyfikacja opiera się na dwóch kolumnach. GRUPA porządkuje parametry tematycznie, KOD wskazuje konkretne ustawienie w obrębie grupy. Indeks unikalny na tej parze pilnuje, żeby jedno ustawienie miało dokładnie jedną wartość — bez tego zachowanie systemu zależałoby od kolejności odczytu wierszy.

Dwa znaczniki logiczne odpowiadają za rzeczy często mylone. VISIBLE decyduje, czy parametr jest widoczny w ekranie konfiguracji — pozwala ukryć ustawienia techniczne, których nikt poza wdrożeniowcem nie powinien zmieniać. SYSTEMOWE rozstrzyga natomiast, czy wiersz zostanie nadpisany przy synchronizacji z bazą wzorcową. Parametr ukryty nadal działa; parametr systemowy nadal jest widoczny.

Jak system ustala wartość parametru
Grupa GrupaTematyczne uporządkowanie ustawień w obrębie modułu
Kod KodWskazanie konkretnego parametru wewnątrz grupy
Rola RolaTa sama pozycja może mieć inną wartość dla innej grupy użytkowników
Wartość WartośćOdczytany ciąg steruje zachowaniem aplikacji

Wszystkie wartości są przechowywane jako tekst, więc liczba i data wymagają konwersji po odczycie — i kontroli poprawności przy zapisie.

Budowa tabeli — wykaz kolumn

Dziewięć kolumn opisuje identyfikację parametru, jego wartość oraz sposób traktowania przy synchronizacji i w interfejsie.

Wykaz kolumn tabeli
KolumnaTypWymaganaZnaczenie
AKTYWNEbit
wartość logiczna 0/1
takOznaczenie czy dany wiersz jest aktywny
GRUPAvarchar(50)
tekst do 50 znaków
takSymbol grupy parametrów
IDint
liczba całkowita
takUnikalny identyfikator wiersza tabeli
KODvarchar(20)
tekst do 20 znaków
takUnikalny kod parametru
OPISvarchar(50)
tekst do 50 znaków
takOpis parametru
ROLAvarchar(50)
tekst do 50 znaków
takOznaczenie roli
SYSTEMOWEbit
wartość logiczna 0/1
takOznaczenie czy dany wiersz jest systemowy, czy będzie syncrhonizowany z bazą ROOT
VISIBLEbit
wartość logiczna 0/1
takOznaczenie czy dany parametr jest widoczny czy ukryty z poziomu programu
WARTOSCvarchar(500)
tekst do 500 znaków
nieWartość parametru

Kolumna WARTOSC ma typ varchar(500), więc przechowuje wszystko jako tekst — również liczby, daty i wartości logiczne. Konwersja i sprawdzenie poprawności leżą po stronie aplikacji.

Indeksy i wydajność zapytań

Trzy indeksy odpowiadają dwóm sposobom sięgania po parametr: przez pełny adres grupa plus kod oraz przez sam kod, gdy grupa nie jest znana.

Indeksy zdefiniowane na tabeli
IndeksKolumnyRodzaj
GRUPA_KODGRUPA, KODunikalny
KODKODzwykły
PK__parametryIDklucz główny

Indeks GRUPA_KOD jest unikalny i to jego najważniejsza funkcja — wymusza jednoznaczność ustawienia. Osobny indeks na samym kodzie obsługuje przypadek, gdy parametr jest wyszukiwany bez podania grupy, co zdarza się w narzędziach diagnostycznych.

Konfiguracja w bazie danych: co się sprawdza, a co mści

Przechowywanie ustawień w tabeli daje elastyczność, której nie ma konfiguracja w plikach. Ta sama elastyczność bywa jednak źródłem problemów, jeżeli zabraknie kilku prostych reguł.

Praktyka pracy z parametrami konfiguracyjnymi
ZagadnieniePodejście, które się sprawdzaCzego unikać
NazewnictwoGrupa odpowiada modułowi, kod opisuje ustawienieKody typu PARAM1, PARAM2 — po roku nieczytelne
OpisZdanie mówiące, co się zmieni po zmianie wartościPowtórzenie nazwy kodu innymi słowami
Wartości logiczneJedna konwencja w całej bazie, na przykład 1 i 0Mieszanie TAK/NIE, T/N, true/false
Zmiany na produkcjiTest na kopii bazy, potem przeniesienieZmiana wartości „na próbę” w godzinach pracy
Parametry nieużywaneWyłączenie znacznikiem AKTYWNEUsunięcie wiersza — aplikacja może go nadal odczytywać

Wiersz z pustą wartością i wiersz nieistniejący to dla aplikacji dwie różne sytuacje — usunięcie parametru bywa groźniejsze niż jego wyzerowanie.

Szczególnej ostrożności wymaga ostatni punkt. Aplikacja odczytująca nieistniejący parametr zachowa się zgodnie z wartością domyślną wpisaną w kodzie — a ta niekoniecznie odpowiada temu, co było ustawione. Wyłączenie znacznikiem AKTYWNE zachowuje wiersz i pozwala wrócić do poprzedniego stanu, jeżeli okaże się, że parametr jednak był potrzebny.

Jak korzystać z tabeli w praktyce

Przy utrzymaniu konfiguracji w bazie warto trzymać się poniższych zasad:

  • Wypełniaj kolumnę OPIS zdaniem mówiącym, co zmieni się po zmianie wartości — nie powtórzeniem nazwy kodu.
  • Przyjmij jedną konwencję dla wartości logicznych w całej bazie i trzymaj się jej; mieszanie 1/0 z TAK/NIE to częsta przyczyna błędów po wdrożeniu.
  • Ukrywaj znacznikiem VISIBLE parametry techniczne zamiast liczyć na to, że nikt ich nie znajdzie.
  • Nie modyfikuj wierszy z SYSTEMOWE = 1; zostaną nadpisane przy synchronizacji z bazą wzorcową.
  • Testuj zmiany na kopii bazy — parametr sterujący obiegiem dokumentów potrafi wstrzymać pracę całego magazynu.
  • Wyłączaj nieużywane pozycje znacznikiem AKTYWNE zamiast je usuwać; brak wiersza i pusta wartość to dla aplikacji dwie różne sytuacje.

Przegląd parametrów wdrożeniowych z pominięciem ustawień systemowych — punkt wyjścia przy porównywaniu dwóch instalacji:

SELECT  GRUPA,
        KOD,
        WARTOSC,
        OPIS,
        ROLA,
        CASE VISIBLE WHEN 1 THEN 'widoczny' ELSE 'ukryty' END AS W_INTERFEJSIE
FROM    dbo._parametry
WHERE   SYSTEMOWE = 0
  AND   AKTYWNE   = 1
ORDER BY GRUPA, KOD;

Zestawienie wyniku tego zapytania z dwóch środowisk najszybciej tłumaczy, dlaczego ten sam system zachowuje się na nich inaczej.

Konfiguracja przechowywana w bazie jest wygodna dokładnie tak długo, jak długo da się ją przeczytać. Kilkadziesiąt parametrów z sensownymi opisami to narzędzie; kilkaset z pustą kolumną opisu to przeszkoda przy każdej późniejszej zmianie.

Powiązane tabele i dokumentacja

Parametry sterują zachowaniem mechanizmów opisanych w pozostałych tabelach konfiguracyjnych:

FAQ

Najczęściej zadawane pytania o tabelę _parametry

01

Czym różni się znacznik VISIBLE od SYSTEMOWE?

Odpowiadają za dwie różne rzeczy. VISIBLE decyduje, czy parametr jest widoczny na ekranie konfiguracji — ukryty nadal działa, po prostu użytkownik go nie zobaczy. SYSTEMOWE rozstrzyga, czy wiersz zostanie nadpisany przy synchronizacji z bazą wzorcową. Parametr może być jednocześnie widoczny i systemowy albo ukryty i wdrożeniowy.

02

Po co parametrowi przypisanie do roli?

Pozwala nadać temu samemu ustawieniu różne wartości dla różnych grup użytkowników. Magazynier i kierownik mogą mieć inny domyślny zakres dat na liście dokumentów albo inny poziom szczegółowości raportu — bez zakładania osobnych parametrów dla każdego przypadku.

03

Dlaczego lepiej wyłączyć parametr niż go usunąć?

Bo dla aplikacji brak wiersza i pusta wartość to dwie różne sytuacje. Odczytując nieistniejący parametr, system zastosuje wartość domyślną wpisaną w kodzie — a ta niekoniecznie odpowiada poprzedniemu ustawieniu. Wyłączenie znacznikiem AKTYWNE zachowuje wiersz i pozwala wrócić do stanu sprzed zmiany.

04

Jak porównać konfigurację dwóch instalacji?

Zapytaniem zwracającym parametry wdrożeniowe uporządkowane po grupie i kodzie, uruchomionym na obu bazach. Zestawienie wyników jest zwykle najszybszą odpowiedzią na pytanie, dlaczego ten sam system zachowuje się na dwóch środowiskach inaczej — częściej niż różnice w wersji oprogramowania.

Słownik pojęć

Słownik pojęć

Pojęcia związane z konfiguracją systemu przechowywaną w bazie danych.

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.
RRole i uprawnienia
Mechanizm przypisywania użytkownikom dostępu do funkcji i danych. Zamiast nadawać uprawnienia pojedynczo, przypisuje się je do roli odpowiadającej stanowisku.
WWdrożenie
Proces uruchomienia systemu w firmie: analiza procesów, konfiguracja, migracja danych, szkolenia i uruchomienie produkcyjne.
MMigracja danych
Przeniesienie kartotek i historii ze starego systemu do nowego. Etap, na którym najczęściej ujawnia się rzeczywista jakość danych w firmie.
AAktualizacja wersji
Wgranie nowego wydania oprogramowania wraz ze zmianami wynikającymi z przepisów. Wymaga testów na kopii bazy przed wdrożeniem produkcyjnym.
EERP
Zintegrowany system zarządzania przedsiębiorstwem, obejmujący finanse, kadry, sprzedaż i zakupy. Systemy magazynowe wymieniają z nim dokumenty i kartoteki.

Zobacz to w praktyce

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