Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Bazy danych Algorytmy i podstawy informatyki

Aby w tworzonej w języku SQL tabeli praca dodać w kolumnie stawka warunek, że musi przyjmować rzeczywiste wartości dodatnie mniejsze od 50, należy użyć zapisu

A. … stawka float CHECK (stawka>0 AND stawka<50.00)
B. … stawka float CHECK (stawka BETWEEN 0 AND 50.00)
C. … stawka float CHECK (stawka>0 OR stawka<50.00)
D. … stawka float CHECK (stawka IN (0, 50.00))

Pytanie z egzaminu CKE, styczeń 2019 (arkusz E.14-X-19.01).

Zapis stawka float CHECK (stawka > 0 AND stawka < 50.00) dobrze oddaje warunek z treści zadania, bo jednocześnie sprawdza dwie rzeczy: wartość w kolumnie stawka musi być większa od zera oraz musi być mniejsza od 50. Operator AND jest tu kluczowy, ponieważ oba warunki muszą być spełnione naraz. Przykładowo wartości 0.01, 25.5 albo 49.99 przejdą kontrolę, ale 0, -3, 50 i 70 już nie powinny zostać zapisane do tabeli. W praktyce CHECK stosuje się właśnie po to, aby część reguł biznesowych była pilnowana bezpośrednio przez bazę danych, a nie tylko przez formularz w aplikacji. To jest dobra praktyka, bo aplikacja może mieć błąd, ktoś może wykonać INSERT ręcznie, a baza nadal chroni spójność danych. Moim zdaniem warto też pamiętać, że dla stawek pieniężnych częściej używa się typu DECIMAL, np. DECIMAL(5,2), zamiast FLOAT, bo FLOAT jest typem przybliżonym. Sam warunek logiczny pozostaje jednak taki sam: CHECK (stawka > 0 AND stawka < 50.00). Jeśli kolumna nie może być pusta, należałoby dodatkowo dopisać NOT NULL, bo w wielu systemach SQL CHECK nie blokuje wartości NULL tak, jak początkujący czasem zakładają.
W tym zadaniu najważniejsze jest poprawne przełożenie zdania „wartości dodatnie mniejsze od 50” na logikę SQL. Dodatnie oznacza większe od 0, a mniejsze od 50 oznacza, że sama wartość 50 nie jest już dozwolona. Dlatego potrzebne są dwa porównania połączone operatorem AND, czyli warunkiem jednoczesnym. Częstym błędem jest użycie BETWEEN 0 AND 50.00, bo ten operator w SQL obejmuje oba końce przedziału. To znaczy, że dopuściłby zarówno 0, jak i 50.00, a treść zadania mówi o wartościach dodatnich i mniejszych od 50, więc granice nie powinny wchodzić do zakresu. Równie zdradliwe jest użycie OR między porównaniami. Warunek stawka > 0 OR stawka < 50.00 przepuści prawie każdą liczbę: 100 spełnia część stawka > 0, a -10 spełnia część stawka < 50.00. Taki zapis nie ogranicza wartości do przedziału, tylko tworzy bardzo luźny filtr, praktycznie bez sensu dla tej reguły. Z kolei IN (0, 50.00) oznacza sprawdzenie, czy wartość jest dokładnie jedną z podanych wartości, czyli równa 0 albo równa 50.00. To jest wybór ze zbioru konkretnych elementów, a nie sprawdzanie zakresu. Z mojego doświadczenia wynika, że te pomyłki biorą się często z mieszania języka potocznego z logiką warunków. W bazach danych trzeba myśleć bardzo precyzyjnie: zakres otwarty zapisujemy przez > i <, a połączenie dwóch ograniczeń zakresu robimy przez AND.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.