KWALIFIKACJA INF3 - CZERWIEC 2023

PYTANIE NR 30.
Który typ należy zastosować, aby pole bazy danych przyjmowało liczby rzeczywiste?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
FLOAT to typ liczbowy przeznaczony do przechowywania wartości ułamkowych (zmiennoprzecinkowych), czyli takich, które nie muszą być liczbami całkowitymi.
CHAR i VARCHAR są typami tekstowymi, a INT służy wyłącznie do liczb całkowitych, więc nie zapiszą poprawnie części ułamkowej.

Pełne wyjaśnienie:

W bazach danych typ kolumny określa, jakie dane mogą być w niej przechowywane oraz w jaki sposób będą zapisywane i porównywane. Jeśli pole ma przyjmować liczby rzeczywiste (czyli wartości z częścią ułamkową), potrzebny jest typ liczbowy obsługujący zapis ułamków.

Odpowiedź "FLOAT" jest właściwa, ponieważ w wielu popularnych systemach baz danych oznacza typ zmiennoprzecinkowy, używany do zapisu liczb z częścią ułamkową. Taki zapis jest typowy m.in. dla wyników pomiarów, współczynników, średnich czy współrzędnych.

Pozostałe odpowiedzi są niepoprawne z następujących powodów:

  • "INT" przechowuje wyłącznie liczby całkowite, więc próba zapisu wartości 12,5 spowoduje błąd albo utratę części ułamkowej (zależnie od DBMS i sposobu wprowadzania danych).
  • "CHAR" to tekst o stałej długości. Da się wpisać tam znaki wyglądające jak liczba (np. "12.5"), ale baza nie będzie traktować tego jako liczby: sortowanie, porównania i sumowanie będą działały inaczej niż dla typów liczbowych.
  • "VARCHAR" to tekst o zmiennej długości, z analogicznym problemem jak przy CHAR: pozornie "przechowa liczbę", ale matematyka i agregacje (SUM, AVG) nie zadziałają poprawnie bez konwersji.

W praktyce warto pamiętać, że typy zmiennoprzecinkowe bywają przybliżone, więc przy kwotach i rozliczeniach często stosuje się typy o stałej precyzji (np. DECIMAL/NUMERIC). Na egzaminie jednak kluczowa jest umiejętność rozróżnienia: tekst vs liczby całkowite vs liczby z częścią ułamkową.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
FLOAT to typ liczbowy przeznaczony do zapisu wartości ułamkowych w formie zmiennoprzecinkowej. Nadaje się do danych pomiarowych lub obliczeń, gdzie dopuszczalne są przybliżenia. W zależności od DBMS może mieć różną precyzję i zakres, dlatego zawsze warto sprawdzić dokumentację systemu.
Najczęściej są to typy zmiennoprzecinkowe, takie jak FLOAT, REAL lub DOUBLE, oraz typy o stałej precyzji, jak DECIMAL/NUMERIC. Pierwsza grupa bywa przybliżona (zaokrąglenia), druga jest częściej używana do kwot i wartości wymagających dokładności.
INT jest typem całkowitym, więc przechowuje wyłącznie liczby bez części ułamkowej. Wartości typu 3,14 nie da się poprawnie zapisać w INT bez utraty ułamka lub błędu. Jeśli dane mają mieć część po "przecinku", potrzebny jest typ zmiennoprzecinkowy albo stałoprzecinkowy.
Można zapisać ciąg znaków wyglądający jak liczba (np. "12.5"), ale baza będzie traktować to jako tekst. Skutki: błędne sortowanie (np. "100" przed "2"), brak poprawnych sum i średnich bez konwersji oraz ryzyko wprowadzenia niepoprawnych formatów (np. liter).
Dla cen i rozliczeń zwykle wybiera się typ o stałej precyzji (często spotykane są DECIMAL/NUMERIC), aby uniknąć błędów zaokrągleń typowych dla zmiennoprzecinkowych FLOAT/DOUBLE. W testach egzaminacyjnych ważne jest rozumienie różnicy: dokładność vs przybliżenie.
FLOAT jest często dobry dla danych pomiarowych i obliczeń inżynierskich, gdzie naturalnie występują przybliżenia i duży zakres wartości (np. czujniki, statystyka, współczynniki). Jeśli kluczowa jest dokładność do określonej liczby miejsc (np. finanse), lepszy bywa typ stałej precyzji.
Najczęstszy błąd to traktowanie CHAR/VARCHAR jako "uniwersalnych" typów, które mogą przechować wszystko, także liczby. To prowadzi do złych odpowiedzi, bo pytanie dotyczy typu liczbowego. Warto zapamiętać: CHAR i VARCHAR to tekst, a liczby mają osobne typy.
Liczby zmiennoprzecinkowe to wartości ułamkowe zapisywane w sposób umożliwiający duży zakres (np. bardzo małe i bardzo duże liczby), ale kosztem tego, że niektóre wartości nie są reprezentowane idealnie. W bazach danych odpowiadają im zwykle typy FLOAT/REAL/DOUBLE.
Zależy to od DBMS, ale zazwyczaj używa się poleceń pokazujących definicję tabeli (np. opis schematu) albo odczytu z widoków systemowych. Na egzaminie liczy się idea: typ kolumny jest częścią definicji tabeli i decyduje o tym, jakie wartości da się zapisać.
To zależy od systemu bazy danych. W wielu DBMS REAL i FLOAT należą do rodziny typów zmiennoprzecinkowych, ale mogą różnić się precyzją lub być synonimami określonych wariantów. Dlatego w praktyce trzeba sprawdzić znaczenie w dokumentacji konkretnej bazy.
info

Około 63% zdających odpowiada poprawnie na to pytanie. średnie

W praktyce zawodowej kluczowe jest to, że fLOAT to typ liczbowy przeznaczony do przechowywania wartości ułamkowych (zmiennoprzecinkowych), czyli takich, które nie muszą być liczbami całkowitymi.

Źródła:

  • PostgreSQL Documentation: "8.1. Numeric Types" (REAL, DOUBLE PRECISION, NUMERIC) https://www.postgresql.org/docs/current/datatype-numeric.html - accessed 2026-03-01
  • MySQL 8.0 Reference Manual: "Numeric Types" (FLOAT, DOUBLE, DECIMAL) https://dev.mysql.com/doc/refman/8.0/en/numeric-types.html - accessed 2026-03-01
  • Microsoft Learn: "float and real (Transact-SQL)" https://learn.microsoft.com/en-us/sql/t-sql/data-types/float-and-real-transact-sql - accessed 2026-03-01

Materiały:

  • Dokumentacja wybranego DBMS: rozdział o typach liczbowych
  • Materiały kursowe z projektowania relacyjnych baz danych i normalizacji
  • Ćwiczenia: projekt tabeli z kolumnami INT, typem zmiennoprzecinkowym i tekstowym oraz testowe inserty danych

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego