| Termin | Definicja |
|---|---|
| Domyślna wartość kolumny | Domyślna wartość kolumny to wartość automatycznie przypisywana polu tabeli, gdy podczas wstawiania rekordu nie podano jej jawnie. Domyślna wartość kolumny — znaczenie w tabeliDomyślna wartość kolumny to reguła przypisana do konkretnego pola tabeli. Określa się w niej, jaka treść ma zostać wstawiona automatycznie wtedy, gdy podczas dodawania rekordu nie zostanie przekazana wartość dla danego pola. Dzięki temu nie trzeba za każdym razem wpisywać tych samych informacji, a część danych może być uzupełniana przez system bazodanowy zgodnie z wcześniej przyjętymi zasadami. Takie rozwiązanie dotyczy pojedynczej kolumny, a nie całego rekordu. Można więc ustalić, że dla kolumny przechowującej status zostanie użyte słowo „nowy”, dla pola z datą utworzenia zostanie zapisana bieżąca data, a dla kolumny logicznej zostanie przyjęta wartość oznaczająca brak aktywności. Reguła działa wyłącznie wtedy, gdy podczas wstawiania wiersza nie zostanie podana inna wartość. Jawnie przekazana informacja ma pierwszeństwo przed ustawieniem domyślnym, o ile konstrukcja zapytania i ograniczenia kolumny nie stanowią inaczej. Warto odróżnić brak wartości od wartości domyślnej. Brak wartości może oznaczać, że pole otrzyma wartość pustą, pozostanie nieuzupełnione albo zostanie odrzucone z powodu ograniczenia NOT NULL. Wartość domyślna jest natomiast konkretną regułą, która wskazuje, co ma się wydarzyć w przypadku pominięcia pola. To rozróżnienie ma znaczenie podczas projektowania tabel, sprawdzania poprawności danych i analizowania wyników zapytań. Domyślna wartość może być stałą, na przykład tekstem, liczbą lub wartością logiczną, ale może również wynikać z funkcji albo wyrażenia dostępnego w danym systemie bazodanowym. Często stosuje się ją do dat utworzenia, identyfikatorów pomocniczych, statusów, znaczników aktywności oraz pól opisujących źródło lub sposób powstania rekordu. Domyślna wartość kolumny a sposób zapisu danychNajczęściej reguła jest definiowana podczas tworzenia tabeli albo dodawana później do istniejącej kolumny. W składni SQL spotyka się konstrukcję opartą na słowie DEFAULT, po którym umieszcza się wartość lub wyrażenie. Przykładowo kolumna statusu może otrzymywać wartość „oczekuje”, a kolumna daty utworzenia może korzystać z funkcji zwracającej bieżący moment. Konkretna składnia zależy od używanego silnika bazy danych, dlatego przed zastosowaniem funkcji należy sprawdzić jego dokumentację. Istnieją dwa typowe sposoby pomijania pola w instrukcji INSERT. W pierwszym nie wymienia się kolumny na liście pól przeznaczonych do uzupełnienia. Wtedy system może zastosować ustawienie domyślne. W drugim przypadku używa się słowa DEFAULT jako wartości dla wskazanej kolumny. To pozwala jawnie zaznaczyć, że ma zostać użyta reguła zapisana w definicji tabeli. Nie każdy silnik interpretuje wszystkie warianty identycznie, dlatego ważna jest zgodność składni z konkretną bazą. Pominięcie kolumny nie zawsze oznacza zastosowanie wartości domyślnej. Jeżeli do pola zostanie przekazana wartość NULL, zwykle jest to świadome przekazanie pustej wartości, a nie prośba o użycie DEFAULT. Różnica może mieć wpływ na filtrowanie, sortowanie, raportowanie i działanie warunków sprawdzających brak danych. Przy projektowaniu tabel należy więc ustalić, czy NULL ma być dopuszczalny, czy pominięcie pola ma prowadzić do konkretnej wartości, oraz czy oba scenariusze powinny być traktowane tak samo. Domyślna wartość kolumny nie zastępuje wszystkich mechanizmów kontroli jakości. Ograniczenie NOT NULL pilnuje, aby pole nie pozostało puste, UNIQUE zapobiega powtarzaniu określonych wartości, a CHECK może ograniczać dozwolony zakres lub zestaw stanów. Reguła DEFAULT pomaga uzupełnić dane, lecz nie sprawdza samodzielnie, czy cała informacja w rekordzie jest logicznie poprawna. Domyślna wartość kolumny przy typowych problemachJednym z częstych problemów jest niezgodność typu. Jeśli kolumna przechowuje datę, a jako wartość domyślną zostanie podany tekst o nieprawidłowym formacie, utworzenie tabeli albo zapis rekordu może zakończyć się błędem. Podobna sytuacja wystąpi przy użyciu wartości ułamkowej w polu całkowitoliczbowym, zbyt długiego tekstu w kolumnie o ograniczonej długości lub nieobsługiwanej funkcji. Problemy mogą pojawić się również wtedy, gdy wartość domyślna narusza inne ograniczenia. Wpisanie powtarzalnego identyfikatora do kolumny oznaczonej jako UNIQUE może uniemożliwić dodanie kolejnego wiersza. Ustawienie wartości spoza dozwolonego zbioru może zadziałać w połączeniu z CHECK. Z kolei domyślna wartość NULL nie rozwiąże problemu, jeżeli kolumna została określona jako NOT NULL. W praktyce spotyka się także błędne założenie, że zmiana definicji domyślnej wartości uzupełni wszystkie wcześniejsze rekordy. Zazwyczaj reguła działa podczas kolejnych operacji zapisu i nie modyfikuje automatycznie danych już znajdujących się w tabeli. Jeżeli wcześniejsze wiersze wymagają ujednolicenia, trzeba wykonać osobną, świadomie przygotowaną operację aktualizacji. Inny problem dotyczy wartości zależnych od czasu. Bieżąca data lub moment utworzenia rekordu są wygodne, lecz należy pamiętać o strefie czasowej, ustawieniach środowiska i oczekiwanym formacie. W systemach działających w różnych lokalizacjach przyjęcie niejednoznacznej daty może utrudnić porównywanie wpisów. Warto ustalić, czy przechowywany jest sam dzień, czy pełny znacznik czasu, a także jaka konwencja ma obowiązywać w całej aplikacji. Nie powinno się również używać wartości domyślnej jako sposobu ukrywania braku danych. Jeżeli informacja jest obowiązkowa, lepiej zastosować właściwe ograniczenie i wymagać jej podania. Sztuczna wartość, taka jak ogólny opis „brak danych”, może utrudniać późniejsze zestawienia, ponieważ miesza rzeczywisty stan z informacją o niewypełnieniu pola. Domyślna wartość kolumny — praktyczne wskazówki projektowePrzed zdefiniowaniem reguły warto przeanalizować znaczenie kolumny i ustalić, czy istnieje jedna bezpieczna wartość początkowa. Dla statusu może to być stan rozpoczynający proces, dla pola logicznego określony stan początkowy, a dla daty moment utworzenia rekordu. Nie każda kolumna nadaje się do automatycznego uzupełniania. Pola zawierające opis, adres, wynik pomiaru lub decyzję użytkownika często powinny pozostać wymagane. Nazwa kolumny, jej typ i reguła domyślna powinny tworzyć spójną całość. Jeżeli pole nazywa się „data_zakonczenia”, ustawienie bieżącej daty przy każdym nowym rekordzie może prowadzić do błędnej interpretacji. Dla takiej kolumny bardziej właściwe może być dopuszczenie braku wartości do czasu zakończenia procesu. Z kolei pole „data_utworzenia” zwykle dobrze współpracuje z automatycznym zapisaniem chwili dodania rekordu. Przydatne jest testowanie kilku scenariuszy: dodania rekordu z pominięciem pola, przekazania własnej wartości, przekazania NULL, użycia wartości DEFAULT oraz próby zapisania danych niezgodnych z typem. Takie sprawdzenie ujawnia różnice między oczekiwanym działaniem a rzeczywistą interpretacją instrukcji. Warto także przetestować operacje wykonywane przez aplikację, formularz importu i ręczne zapytania, ponieważ każde źródło może inaczej budować instrukcję zapisu.
W większych strukturach danych zaleca się prowadzenie zmian definicji tabel w kontrolowany sposób. Każda modyfikacja powinna być możliwa do odtworzenia, a przed wdrożeniem należy sprawdzić, czy dotychczasowe rekordy spełniają nowe warunki. Szczególnej uwagi wymagają kolumny wykorzystywane w raportach, filtrach i połączeniach między tabelami, ponieważ pozornie niewielka zmiana wartości początkowej może zmienić wyniki zestawień. Kiedy sprawdzić domyślną wartość kolumny w serwisieDo serwisu warto zgłosić problem wtedy, gdy wpisy w tabeli otrzymują nieoczekiwane wartości, nowe rekordy są odrzucane mimo pominięcia pola albo dane różnią się zależnie od sposobu ich dodawania. Pomocne jest przygotowanie przykładowego zapytania, komunikatu błędu, nazwy tabeli oraz informacji o tym, które pola były pomijane, a które przekazywane jawnie. Pozwala to odtworzyć sytuację i odróżnić błąd definicji kolumny od błędu w aplikacji. Warszawskie Pogotowie Komputerowe 24/7 zajmuje się analizą problemów związanych z działaniem komputerów i oprogramowania, dlatego można przekazać do oceny sytuację, w której automatyczne uzupełnianie danych działa inaczej niż zakładano. Przed przekazaniem sprzętu zaleca się wykonanie kopii ważnych plików oraz przygotowanie opisu objawów. Nie powinno się samodzielnie zmieniać definicji tabeli na działającym środowisku bez kopii zapasowej i planu wycofania zmian. Weryfikacja powinna objąć nie tylko samą wartość DEFAULT, lecz także typ pola, dopuszczalność NULL, ograniczenia, wyzwalacze, procedury oraz kod aplikacji odpowiedzialny za zapis. Dopiero porównanie tych elementów pozwala ustalić, czy przyczyną jest błędna reguła, jawnie przekazywana wartość, niezgodność wersji składni, czy też dodatkowa logika uruchamiana podczas dodawania rekordu. Takie podejście ogranicza ryzyko przypadkowego usunięcia danych i ułatwia przywrócenie spójnego działania tabeli. |