Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 15 kwietnia 2026 13:25
  • Data zakończenia: 15 kwietnia 2026 13:55

Egzamin zdany!

Wynik: 28/40 punktów (70,0%)

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Baza danych, która fizycznie znajduje się na wielu komputerach, lecz logicznie postrzegana jako całość, opiera się na architekturze

A. relacyjną
B. lokalną
C. rozproszoną
D. abstrakcyjną
Wybór architektury relacyjnej, abstrakcyjnej czy lokalnej do opisu systemu, w którym baza danych jest rozproszona, wskazuje na pewne nieporozumienia w zakresie terminologii i koncepcji baz danych. Architektura relacyjna odnosi się do struktury baz danych, w której dane są przechowywane w tabelach oraz powiązaniach między nimi, a nie do fizycznego rozmieszczenia danych. Systemy relacyjne mogą być wdrażane zarówno w architekturze lokalnej, jak i rozproszonej. Abstrakcyjna architektura danych dotyczy natomiast sposobów modelowania, które są niezależne od konkretnej technologii i nie odnoszą się bezpośrednio do fizycznego rozproszenia danych. Z kolei architektura lokalna odnosi się do sytuacji, w której wszystkie komponenty systemu są umieszczone w jednym miejscu, co zdecydowanie wyklucza możliwość rozproszenia danych. W praktyce, nieprawidłowy wybór architektury może prowadzić do problemów z wydajnością, dostępnością i skalowalnością systemu. Często mylone są pojęcia związane z architekturą baz danych i ich implementacją, co może skutkować błędnymi decyzjami projektowymi i trudnościami w zarządzaniu danymi. Dobrze jest zrozumieć, że architektura rozproszona nie tylko zwiększa wydajność, ale również poprawia bezpieczeństwo i dostępność danych, co czyni ją odpowiednim wyborem dla nowoczesnych systemów przetwarzania danych.

Pytanie 2

W tabeli artykuly znajduje się pole o nazwie nowy. Aby pole to wypełnić wartościami TRUE dla każdego rekordu, należy zastosować kwerendę

A. INSERT INTO nowy FROM artykuly SET TRUE;
B. UPDATE artykuly SET nowy = TRUE;
C. UPDATE nowy FROM artykuly VALUE TRUE;
D. INSERT INTO artykuly VALUE nowy = TRUE;
Poprawna kwerenda UPDATE artykuly SET nowy = TRUE; jest klasycznym przykładem instrukcji aktualizacji danych w SQL. Słowo kluczowe UPDATE wskazuje, że modyfikujemy istniejące rekordy, a nie dodajemy nowe. Nazwa tabeli artykuly określa, w której tabeli wykonujemy operację. Następnie część SET nowy = TRUE ustawia dla kolumny nowy wartość logiczną TRUE we wszystkich wierszach, ponieważ w zapytaniu nie ma klauzuli WHERE. I to jest tu kluczowe: brak WHERE oznacza, że aktualizacja dotknie każdego rekordu w tabeli. Moim zdaniem warto zapamiętać schemat: UPDATE nazwa_tabeli SET kolumna = wartość WHERE warunek;. W praktyce bardzo często dodaje się WHERE, np.: UPDATE artykuly SET nowy = TRUE WHERE data_dodania >= '2026-01-01'; – wtedy oznaczamy jako nowe tylko artykuły dodane od konkretnej daty. W zadaniu jednak wyraźnie jest mowa o każdym rekordzie, więc brak WHERE jest jak najbardziej zgodny z treścią. W większości systemów bazodanowych (MySQL, PostgreSQL, SQL Server, MariaDB) ta składnia jest standardowa i zalecana. Dobra praktyka jest taka, żeby przed odpaleniem UPDATE bez WHERE najpierw zrobić SELECT * FROM artykuly; albo SELECT COUNT(*) FROM artykuly;, żeby mieć świadomość, ile rekordów zmienimy. W projektach produkcyjnych często dodaje się też transakcje, np. w PostgreSQL: BEGIN; UPDATE artykuly SET nowy = TRUE; COMMIT; dzięki temu w razie pomyłki można zrobić ROLLBACK. Warto też wiedzieć, że kolumna typu logicznego może przyjmować wartości TRUE, FALSE, czasem 1/0 (np. w MySQL), ale forma z TRUE/FALSE jest czytelniejsza i bardziej zgodna z semantyką. W wielu aplikacjach webowych pole w stylu nowy służy np. do filtrowania artykułów w panelu administracyjnym albo na stronie głównej: SELECT * FROM artykuly WHERE nowy = TRUE;. To dokładnie ten sam atrybut, który przed chwilą masowo ustawiliśmy poleceniem UPDATE.

Pytanie 3

Wskaż zapytanie, które z tabeli klienci wybierze wyłącznie nazwiska trzech najlepszych klientów, czyli takich, którzy posiadają najwięcej punktów na swoim koncie (pole całkowite punkty)?

A. SELECT nazwisko FROM klienci LIMIT 3
B. SELECT nazwisko FROM klienci ORDER BY punkty DESC LIMIT 3
C. SELECT nazwisko FROM klienci ORDER BY nazwisko DESC LIMIT 3
D. SELECT LIMIT 3 nazwisko FROM klienci ORDER BY nazwisko DESC
Wybór odpowiedzi 'SELECT nazwisko FROM klienci ORDER BY punkty DESC LIMIT 3;' jest poprawny, ponieważ zapytanie to precyzyjnie spełnia wymagania przedstawione w pytaniu. Kluczowym elementem jest użycie klauzuli 'ORDER BY punkty DESC', która sortuje klientów w porządku malejącym według ich punktów. Dzięki temu, na górze wyników znajdą się ci klienci, którzy mają ich najwięcej. Następnie zastosowanie 'LIMIT 3' ogranicza wynik do trzech pierwszych rekordów, co odpowiada na potrzebę zidentyfikowania trzech najlepszych klientów. W praktycznych zastosowaniach, takich jak systemy CRM czy programy lojalnościowe, tego typu kwerendy są niezwykle przydatne do analizy klientów oraz do przyznawania nagród lub promocji. Dobre praktyki w zakresie pisania zapytań SQL sugerują, aby zawsze zwracać uwagę na kolejność sortowania oraz ograniczenie wyników, aby zwiększyć efektywność bazy danych oraz uniknąć zbędnych obliczeń.

Pytanie 4

Do naprawy i optymalizacji bazy danych w MySQL stosuje się polecenie:

A. mysqladmin
B. mysqldump
C. mysqlslap
D. mysqlcheck
W tym pytaniu łatwo się pomylić, bo wszystkie wymienione narzędzia są związane z MySQL, ale pełnią zupełnie inne role. Kluczowe jest rozróżnienie: co służy do testowania, co do backupu, co do administracji, a co do samej naprawy i optymalizacji struktur tabel. Wiele osób z rozpędu wybiera mysqldump, bo kojarzy się z „ratowaniem” bazy, ale mysqldump to typowe narzędzie do wykonywania kopii zapasowej w postaci skryptu SQL. Generuje plik z poleceniami CREATE TABLE i INSERT, który potem można odtworzyć, ale ono nie naprawia ani nie optymalizuje istniejących tabel na serwerze. To jest backup, a nie konserwacja struktury. Podobnie mylące bywa mysqladmin. To narzędzie administracyjne, służy do wykonywania operacji na poziomie serwera: można nim zatrzymać serwer, sprawdzić status, wyczyścić logi, przeładować uprawnienia, zmienić hasło roota i tym podobne rzeczy. Natomiast ono nie wykonuje operacji typu REPAIR TABLE czy OPTIMIZE TABLE na konkretnej bazie czy tabeli. To raczej „panel sterowania” serwerem niż śrubokręt do tabel. mysqlslap z kolei jest jeszcze czymś innym – to narzędzie do testów obciążeniowych. Używa się go do benchmarków, czyli sprawdzania, jak serwer MySQL reaguje na określoną liczbę zapytań, ilu wątków, jakie opóźnienia. Można dzięki niemu ocenić wydajność konfiguracji, ale ono nie dotyka struktury tabel w sensie naprawy czy optymalizacji. Typowy błąd myślowy przy tym pytaniu polega na wrzuceniu wszystkich narzędzi „mysql*” do jednego worka: skoro coś jest do MySQL, to pewnie da się tym wszystko zrobić. W praktyce dobre podejście administracyjne zakłada specjalizację: do backupu używa się mysqldump lub narzędzi typu xtrabackup, do testów wydajności mysqlslap, do ogólnych komend serwerowych mysqladmin, a do naprawy i optymalizacji struktur tabel właśnie mysqlcheck. Świadome rozróżnianie tych narzędzi bardzo ułatwia później diagnozowanie problemów z bazą i planowanie regularnych zadań utrzymaniowych.

Pytanie 5

Który z elementów relacyjnej bazy danych, zapisany w języku SQL, może być wykorzystany w zapytaniach modyfikujących kolumny danych udostępnione jako tabela, niezależnie od tego, czy jest stworzony programowo, czy dynamicznie?

A. Funkcja zdefiniowana
B. Zasada
C. Trigger
D. Procedura składowa
Funkcja zdefiniowana przez użytkownika (UDF) w języku SQL jest obiektem bazy danych, który może być wykorzystywany w zapytaniach, w tym w zapytaniach modyfikujących kolumny danych. UDF mogą przyjmować argumenty, wykonywać operacje na tych danych i zwracać wynik, co czyni je wszechstronnym narzędziem w programowaniu baz danych. Użycie funkcji zdefiniowanej zwiększa modularność kodu oraz umożliwia ponowne wykorzystanie logiki biznesowej, co jest zgodne z zasadami DRY (Don't Repeat Yourself). Przykładem zastosowania może być funkcja, która oblicza rabat na podstawie ceny i procentu rabatu, co można wywołać w zapytaniach aktualizujących ceny produktów. Warto również zauważyć, że UDF mogą być używane w kontekście różnych zapytań, a ich wyniki mogą być przetwarzane jak każda inna kolumna w wynikach zapytań. Dzięki temu programiści mogą łatwo implementować bardziej złożoną logikę bezpośrednio w zapytaniach SQL, co jest zgodne z najlepszymi praktykami w zakresie zarządzania danymi.

Pytanie 6

Do czego służy funkcja PHP o nazwie mysql_num_rows?

A. podawać liczbę wierszy, które są w wynikach zapytania
B. oddawać następny rekord z wyników zapytania
C. przyporządkować numery rekordom w bazie danych
D. zwracać rekord, którego numer został przekazany jako parametr funkcji
Wszystkie pozostałe odpowiedzi są niepoprawne z kilku kluczowych powodów. Pierwsza z niepoprawnych odpowiedzi sugeruje, że funkcja mysql_num_rows ma na celu ponumerowanie rekordów w bazie danych. Takie podejście jest mylące, ponieważ mysql_num_rows nie modyfikuje ani nie przechowuje żadnych danych w bazie, a jedynie zwraca informację o liczbie wierszy w zestawie wyników, co w żaden sposób nie wiąże się z ich numerowaniem. Kolejna błędna odpowiedź wskazuje, że funkcja miałaby zwracać kolejny rekord z wynikami zapytania. W rzeczywistości, mysql_num_rows nie zwraca danych samych w sobie, lecz jedynie informację o ich liczbie, co czyni tę odpowiedź zupełnie nietrafioną. Ostatnia niepoprawna odpowiedź sugeruje, że funkcja zwraca rekord na podstawie numeru podanego w jej parametrze. Znowu, taka interpretacja jest nieprawidłowa, ponieważ mysql_num_rows nie przyjmuje parametrów odnoszących się do konkretnych rekordów, a jedynie do zmiennej wynikowej, która zawiera efekty zapytania SQL. W związku z tym, każde z tych stwierdzeń nieodzwierciedla rzeczywistej funkcji mysql_num_rows i jej zastosowania w kontekście zarządzania i przetwarzania danych w PHP.

Pytanie 7

Baza danych MySQL została uszkodzona. Które z poniższych działańnie przyczyni się do jej naprawy?

A. Próba naprawy za pomocą polecenia REPAIR
B. Wykonanie replikacji bazy danych
C. Odtworzenie bazy z kopii zapasowej
D. Utworzenie nowej bazy i przeniesienie do niej tabel
Wykonanie replikacji bazy danych nie pomoże w naprawie uszkodzonej bazy MySQL, ponieważ replikacja polega na tworzeniu kopii danych z jednej bazy do drugiej w czasie rzeczywistym. Jeśli źródłowa baza danych jest uszkodzona, to zainicjowana replikacja jedynie skopiuje wszelkie błędy i uszkodzenia do nowej instancji. Replikacja jest techniką stosowaną głównie dla zwiększenia dostępności bazy danych lub zapewnienia wsparcia w przypadku awarii, a nie jako metoda naprawy uszkodzeń. Dla skutecznej naprawy bazy danych należy najpierw przywrócić jej integralność, a nie tylko jedynie skopiować uszkodzone dane. Dobrym przykładem jest użycie polecenia REPAIR TABLE, które jest dedykowane do naprawy uszkodzonych tabel, lub przywracanie bazy danych z kopii zapasowej, co zapewnia integralność i spójność danych. W sytuacji awarii bazy, kluczowe jest zrozumienie, że naprawa powinna być priorytetowym celem, a nie kopiowanie problemów.

Pytanie 8

Jaką funkcję pełni instrukcja DROP w języku SQL?

A. aktualizować dane obiektu
B. wprowadzić nowy obiekt
C. zmienić właściwości obiektu
D. usunąć już istniejący obiekt
Instrukcja DROP w języku SQL jest kluczowym narzędziem do zarządzania bazami danych, używaną do usuwania istniejących obiektów, takich jak tabele, widoki czy procedury składowane. Kiedy używamy polecenia DROP, nie tylko usuwamy obiekt z bazy danych, ale również wszystkie dane z nim związane, co sprawia, że operacja ta jest nieodwracalna. Przykładowo, jeśli chcemy usunąć tabelę o nazwie 'Użytkownicy', musimy użyć polecenia DROP TABLE Użytkownicy. Ważne jest, aby przed wykonaniem takiej operacji upewnić się, że dane są już zarchiwizowane lub nie są już potrzebne, ponieważ ta instrukcja nie da nam możliwości ich odzyskania po wykonaniu. W praktyce, DROP powinno być stosowane z rozwagą — zaleca się przed wykonaniem operacji wykorzystanie polecenia SELECT, aby sprawdzić, jakie dane są w danym obiekcie. Zgodnie z najlepszymi praktykami, organizacje powinny wprowadzać polityki dotyczące usuwania danych, aby zminimalizować ryzyko przypadkowej utraty ważnych informacji.

Pytanie 9

Jakiej funkcji w języku PHP należy użyć, aby nawiązać połączenie z bazą danych pod nazwą zwierzaki?

A. $polacz = sql_connect('localhost', 'root', '', 'zwierzaki')
B. $polacz = mysqli_connect('localhost', 'root', '', 'zwierzaki')
C. $polacz = db_connect('localhost', 'root', '', 'zwierzaki')
D. $polacz = server_connect('localhost', 'root', '', 'zwierzaki')
Odpowiedź $polacz = mysqli_connect('localhost', 'root', '', 'zwierzaki'); jest poprawna, ponieważ wykorzystuje funkcję mysqli_connect, która jest dedykowana do nawiązywania połączeń z bazami danych MySQL w języku PHP. Funkcja ta przyjmuje cztery argumenty: adres serwera (w tym przypadku 'localhost'), nazwę użytkownika ('root'), hasło (które jest puste w tym przykładzie) oraz nazwę bazy danych ('zwierzaki'). Użycie mysqli jest zgodne z aktualnymi standardami i dobrą praktyką w programowaniu, ponieważ oferuje szereg usprawnień w porównaniu do starszych metod, takich jak mysql_connect, które zostały usunięte w nowszych wersjach PHP. Mysqli (MySQL Improved) wspiera zarówno programowanie obiektowe, jak i proceduralne, co czyni go bardziej elastycznym. W przypadku nawiązywania połączenia warto również pamiętać o obsłudze błędów, co można osiągnąć poprzez dodatkowe sprawdzenie, czy połączenie zostało nawiązane pomyślnie za pomocą funkcji mysqli_connect_error(). Przykład poprawnego użytkowania w kodzie mógłby wyglądać następująco: $polacz = mysqli_connect('localhost', 'root', '', 'zwierzaki'); if (!$polacz) { die('Connection failed: ' . mysqli_connect_error()); }

Pytanie 10

W aplikacji PHP, która zarządza bazą danych, aby uzyskać numer błędu oraz jego opis po dokonaniu jakiejkolwiek operacji, jakie funkcje powinny być wykorzystane?

A. funkcje mysqli_error i mysqli_error_number
B. funkcje mysqli_error i mysqli_connect_errno
C. tylko funkcję mysqli_error
D. funkcje mysqli_error i mysqli_errno
Wybór funkcji mysqli_error i mysqli_connect_errno nie jest właściwy, ponieważ mysqli_connect_errno jest funkcją przeznaczoną do uzyskiwania numeru błędu połączenia z bazą danych, a nie błędu SQL. Użycie tej funkcji w kontekście operacji na bazie danych prowadzi do mylnego wniosku, że jej zastosowanie jest uniwersalne dla wszystkich błędów. W rzeczywistości, mysqli_connect_errno powinno być stosowane głównie podczas nawiązywania połączenia, natomiast dla błędów związanych z zapytaniami SQL właściwe są inne funkcje. Z kolei wskazanie tylko na funkcję mysqli_error nie jest wystarczające, ponieważ sama dostarcza jedynie opisu błędu, a nie jego numeru, co ogranicza możliwości analizy i diagnostyki. Użytkownicy często popełniają błąd myślowy, zakładając, że pojedyncza funkcja może spełnić wszystkie potrzeby związane z obsługą błędów. W prawidłowym procesie zarządzania błędami w programowaniu, kluczowe jest użycie zestawu funkcji, które dostarczają zarówno opisy, jak i kody błędów, co pozwala na bardziej wszechstronną reakcję na różne sytuacje awaryjne. Ignorowanie tej zasady może prowadzić do nieefektywnego debugowania i długotrwałych problemów w działaniu aplikacji.

Pytanie 11

Na tabeli 'dania', której wiersze zostały pokazane, wykonano przedstawioną kwerendę:

SELECT * FROM dania WHERE typ < 3 AND cena < 30 LIMIT 5;
Ile wierszy wybierze kwerenda?
idtypnazwacena
11Gazpacho20
21Krem z warzyw25
31Gulaszowa ostra30
42Kaczka i owoc30
52Kurczak pieczony40
62wieprzowy przysmak35
72Mintaj w panierce30
82Alle kotlet30
93Owoce morza20
103Grzybki, warzywka, sos15
113Orzechy i chipsy10
123Tatar i jajo15
133Bukiet warzyw10
A. 13
B. 8
C. 5
D. 2
Kwerenda SQL zawarta w pytaniu to `SELECT * FROM dania WHERE typ < 3 AND cena < 30 LIMIT 5;`. Analizując tę kwerendę, możemy zauważyć, że wybiera ona wiersze z tabeli `dania`, gdzie wartość kolumny `typ` jest mniejsza niż 3 oraz wartość kolumny `cena` jest mniejsza niż 30. Sprawdźmy dane w tabeli: dla `typ` 1 mamy trzy dania: Gazpacho (cena 20), Krem z warzyw (cena 25) oraz Gulaszowa ostra (cena 30), z których dwa pierwsze spełniają warunek dotyczący ceny. Dla `typ` 2 mamy Kaczkę i owoc (cena 30), Kurczaka pieczonego (cena 40) oraz Wieprzowy przysmak (cena 35), które nie spełniają wymogu ceny. W rezultacie, wiersze, które spełniają oba warunki to: Gazpacho oraz Krem z warzyw. Zatem kwerenda wybierze 2 wiersze. W kontekście praktycznym, umiejętność tworzenia filtrów w kwerendach SQL jest kluczowa w analizie danych oraz w tworzeniu raportów, co jest bardzo istotne w pracy z bazami danych.

Pytanie 12

Który typ danych należy przypisać kolumnie z kodami pocztowymi w tabeli relacyjnej bazy danych, aby przechowywała dane w formie łańcuchów znakowych o zdefiniowanej, stałej długości?

A. TEXT
B. BLOB
C. CHAR
D. DECIMAL
Poprawnie – dla kolumny z kodami pocztowymi najlepszym wyborem jest typ CHAR. Kody pocztowe są danymi tekstowymi, a nie liczbowymi, mimo że często składają się wyłącznie z cyfr. W wielu krajach (np. w Polsce, Wielkiej Brytanii czy Kanadzie) kod pocztowy może zawierać myślniki, spacje, a nawet litery. Co ważne, długość kodu jest z góry znana i stała (np. w Polsce zawsze 6 znaków w formacie „NN-NNN”). Typ CHAR został właśnie zaprojektowany do przechowywania krótkich łańcuchów znaków o stałej długości. Silnik bazy danych rezerwuje stałą ilość miejsca i dopełnia wartość spacjami, jeśli jest krótsza. Dzięki temu porównywanie, indeksowanie i sortowanie takich pól jest przewidywalne i wydajne. Moim zdaniem jest to dokładnie ten przypadek, który się podręcznikowo podaje na zajęciach: PESEL, NIP, numer dokumentu, kod pocztowy – wszystkie to typowe przykłady na CHAR. W praktyce np. w MySQL zdefiniujesz taką kolumnę jako CHAR(6), w PostgreSQL jako CHAR(6) albo ewentualnie VARCHAR(6), ale przy stałej długości CHAR jest bardziej jednoznacznym sygnałem projektowym. Dodatkowo użycie typu znakowego zapobiega „obcinaniu” zer wiodących, co jest częstym błędem przy traktowaniu kodów pocztowych jako liczby. W wielu systemach legacy właśnie z tego powodu trzeba było później migrować typ danych z numerycznego na tekstowy. Z punktu widzenia dobrych praktyk modelowania danych przyjmuje się zasadę: jeżeli coś nie służy do liczenia, tylko jest identyfikatorem lub etykietą, to przechowujemy to jako tekst, a dla stałej długości – jako CHAR o odpowiednim rozmiarze.

Pytanie 13

Po wykonaniu przedstawionego poniżej polecenia SQL użytkownik Ela będzie mógł

GRANT SELECT, INSERT, UPDATE, DELETE ON baza1.tab1 TO 'Ela'@'localhost';
A. wykonywania wszelkich działań na danych
B. jedynie dodawania i edytowania danych
C. jedynie tworzenia i zmiany struktury tabel
D. wykonywania wszystkich operacji na strukturze danych
Polecenie SQL GRANT SELECT INSERT UPDATE DELETE ON baza1.tab1 TO 'Ela'@'localhost' przyznaje użytkownikowi Ela pełny dostęp do danych w tabeli tab1 w bazie danych baza1. Oznacza to możliwość wykonywania wszystkich operacji związanych z zarządzaniem danymi w tej tabeli. Komenda GRANT jest używana do nadawania uprawnień użytkownikom bazy danych. W tym przypadku uprawnienia obejmują SELECT do odczytu danych INSERT do dodawania nowych rekordów UPDATE do modyfikacji istniejących danych oraz DELETE do usuwania rekordów. Uprawnienia te pokrywają pełne spektrum operacji związanych z manipulacją danymi co jest kluczowe w sytuacjach gdzie użytkownik musi mieć elastyczność w zarządzaniu zawartością tabeli. Dobrymi praktykami jest ograniczanie nadawania takich szerokich uprawnień tylko wtedy gdy jest to absolutnie konieczne w celu minimalizacji ryzyka nieautoryzowanej manipulacji danymi. Rozumienie i zarządzanie uprawnieniami użytkowników jest kluczowym elementem bezpieczeństwa bazy danych ponieważ pozwala na kontrolę dostępu i zapewnienie integralności danych. Tak szeroki dostęp jak w tym przypadku powinien być przyznawany z rozwagą i jedynie zaufanym użytkownikom w środowiskach produkcyjnych gdzie dane są szczególnie wrażliwe.

Pytanie 14

Aby zwiększyć wydajność operacji na bazie danych, należy dla pól, które są często wyszukiwane lub sortowane

A. dodać więzy integralności
B. dodać klucz obcy
C. stworzyć osobną tabelę przechowującą tylko te pola
D. utworzyć indeks
Tworzenie indeksu na polach, które często przeszukujesz lub sortujesz, to naprawdę ważna rzecz, jeśli chodzi o wydajność baz danych. Indeksy działają trochę jak spis treści w książkach – pozwalają systemowi szybko znaleźć te dane, których potrzebujesz, bez przeszukiwania całego folderu. Dzięki nim zapytania SELECT mogą iść jak burza, co ma ogromne znaczenie w aplikacjach, gdzie liczy się czas. Przykład? Jeśli zrobisz indeks na kolumnie 'email' w tabeli 'Users', to znacznie szybciej odnajdziesz użytkowników po adresie email. W praktyce warto też regularnie monitorować, jak działają te indeksy i je optymalizować, na przykład usuwając te, które są zbędne, żeby nie przeciążać bazy danych. Dobrze jest pamiętać, że przy dodawaniu lub aktualizowaniu danych, indeksy mogą trochę spowolnić działanie, więc lepiej używać ich z głową.

Pytanie 15

Model fizyczny replikacji bazy danych pokazany na ilustracji jest modelem

Ilustracja do pytania
A. rozproszonym
B. centralnego subskrybenta
C. centralnego wydawcy
D. równorzędnym
Model centralnego wydawcy jest popularnym rozwiązaniem w replikacji baz danych gdzie jeden centralny serwer działa jako główny wydawca danych do wielu subskrybentów. Kluczowa cecha tego modelu polega na tym że wszystkie zmiany są inicjowane na głównym serwerze co pozwala na scentralizowane zarządzanie danymi. Centralny wydawca zapewnia że dane są spójne i aktualizowane we wszystkich subskrybentach zmniejszając ryzyko konfliktów danych. Taka architektura jest często stosowana w organizacjach z rozproszonymi jednostkami gdzie centralny serwer w centrali obsługuje oddziały terenowe. Przykładami zastosowań są systemy ERP i CRM które wymagają jednoczesnej replikacji danych do wielu lokalizacji. Dobre praktyki w tej architekturze obejmują regularne monitorowanie wydajności serwerów oraz optymalizację przepustowości sieci by minimalizować opóźnienia. Modele centralnego wydawcy wykorzystują technologie takie jak SQL Server Replication czy Oracle Streams które są dobrze udokumentowane i szeroko stosowane w branży zapewniając niezawodność i skalowalność.

Pytanie 16

Celem testów wydajnościowych jest ocena

A. poziomu spełnienia wymagań dotyczących wydajności przez system bądź moduł
B. możliwości oprogramowania do funkcjonowania w warunkach niewłaściwej pracy systemu
C. możliwości oprogramowania do funkcjonowania w warunkach błędnej pracy sprzętu
D. sekwencji zdarzeń, w której prawdopodobieństwo wystąpienia każdego zdarzenia zależy wyłącznie od wyniku zdarzenia poprzedniego
Testy wydajnościowe są kluczowym elementem procesu zapewnienia jakości oprogramowania, mającym na celu ocenę, w jakim stopniu system lub moduł spełnia określone wymagania wydajnościowe. Zazwyczaj obejmują one pomiar czasu reakcji, przepustowości, obciążenia oraz skalowalności aplikacji w różnych warunkach użytkowania. Przykładowo, podczas testów wydajnościowych można symulować równoczesne połączenia użytkowników, aby ocenić, jak system zachowuje się pod dużym obciążeniem. Dobre praktyki w tej dziedzinie, takie jak przeprowadzanie testów w kontrolowanym środowisku oraz stosowanie narzędzi takich jak JMeter czy LoadRunner, pozwalają na uzyskanie wiarygodnych wyników. Prawidłowe przeprowadzenie testów wydajnościowych jest istotne nie tylko dla spełnienia oczekiwań klientów, ale także dla uniknięcia problemów z wydajnością po wdrożeniu systemu na rynek, co może prowadzić do utraty reputacji firmy oraz finansowych strat.

Pytanie 17

W systemie MySQL przypisanie roli DBManager daje użytkownikowi dostęp do

A. wszystkich działań na bazach danych oraz użytkownikach serwera
B. wszystkich działań na bazach danych
C. nadzorowania serwera
D. zakładania kont użytkowników serwera oraz ustalania im haseł
Sformułowane odpowiedzi, które nie wskazują na pełnię uprawnień roli DBManager, są mylące. Przyznawanie możliwości monitorowania serwera nie jest związane z rolą DBManager, ponieważ tę funkcję pełnią inne role lub użytkownicy, którzy posiadają specyficzne uprawnienia dostępu do narzędzi monitorujących. Monitorowanie serwera wymaga dostępu do logów systemowych oraz narzędzi analitycznych, co nie jest objęte rolą DBManager. Argumentując kwestię tworzenia użytkowników serwera i ustawiania im haseł, należy zauważyć, że zarządzanie użytkownikami to funkcjonalność, która jest zazwyczaj przypisywana administratorom bazy danych, a nie roli DBManager. W końcu, koncepcja pełnych operacji na bazach danych i użytkownikach serwera jest zbyt szeroka. Rolą DBManager jest zarządzanie samymi bazami danych, natomiast operacje na użytkownikach wymagają uprawnień, które nie są bezpośrednio związane z tą rolą. Właściwe przypisanie ról i uprawnień w MySQL jest kluczowe dla bezpieczeństwa oraz integralności danych, dlatego ważne jest, aby zrozumieć różnice między tymi funkcjami.

Pytanie 18

W MS SQL Server instrukcja RESTORE DATABASE jest używana do

A. aktualizacji bazy danych z kontrolą więzów integralności
B. usunięcia bazy danych z głównego serwera subskrybenta
C. reorganizacji bazy danych na podstawie zapisanych danych
D. przywrócenia bazy danych z kopii zapasowej
Zgłębiając swoją odpowiedź, dobrze zrozumieć, czemu inne odpowiedzi były błędne. Mówiąc o „przebudowywaniu bazy danych o buforowane dane”, to w sumie nie ma sensu w kontekście polecenia RESTORE DATABASE. Buforowe dane to coś zupełnie innego, są tymczasowe i w ogóle nie pasują do tematu przywracania bazy. Właściwie to takie „przebudowanie” nie jest w ogóle techniką zarządzania danymi. A usunięcie bazy danych z serwera? To już w ogóle inna sprawa; chodzi tu o DROP DATABASE, które po prostu ją likwiduje, a nie przywraca. Przymiarki do „odświeżenia bazy z kontrolą więzów integralności” mogą być mylące, bo to nie ma z tym nic wspólnego. Więzy integralności są ważne, ale nie są bezpośrednio związane z procesem przywracania. Warto zrozumieć różnice między backupem, przywracaniem danych a ich zarządzaniem, bo to kluczowe dla każdego, kto zajmuje się administrowaniem baz danych.

Pytanie 19

Tabela gory zawiera dane o polskich wzniesieniach oraz łańcuchach górskich, w których te wzniesienia się znajdują. Aby uzyskać Koronę Gór Polskich, czyli najwyższe wzniesienie w każdym z łańcuchów górskich, należy wykonać kwerendę

A. SELECT pasmo, szczyt, MAX(wysokosc) FROM gory GROUP BY pasmo
B. SELECT pasmo, szczyt FROM gory GROUP BY wysokosc
C. SELECT pasmo, szczyt, wysokosc FROM gory
D. SELECT pasmo, szczyt, MAX(wysokosc) FROM gory
Odpowiedź SELECT pasmo, szczyt, MAX(wysokosc) FROM gory GROUP BY pasmo; jest poprawna, ponieważ wykorzystuje funkcję agregującą MAX, która pozwala na wybranie najwyższego szczytu w każdym paśmie górskim. Grupa pasm górskich jest tworzona za pomocą klauzuli GROUP BY, co jest kluczowe w tym kontekście, ponieważ chcemy uzyskać najwyższy szczyt dla każdej grupy, a nie tylko globalny najwyższy szczyt. W praktyce, takie podejście jest niezwykle użyteczne w analizach geograficznych i tworzeniu raportów, gdzie grupowanie danych według określonych kryteriów pozwala na lepsze zrozumienie struktury danych. W kontekście baz danych, stosowanie funkcji agregujących w połączeniu z klauzulą GROUP BY jest standardową praktyką, co zwiększa efektywność zapytań oraz pozwala na uzyskanie bardziej precyzyjnych wyników. Przykładowo, podobne zapytania mogą być używane w analizach sprzedażowych, gdzie chcemy zobaczyć maksymalną sprzedaż w każdym regionie, co również wymaga grupowania danych według regionów.

Pytanie 20

W SQL, aby zmodyfikować strukturę tabeli, na przykład dodając lub usuwając kolumnę, należy użyć polecenia

A. DROP TABLE
B. UPDATE
C. TRUNCATE
D. ALTER TABLE
Odpowiedź "ALTER TABLE" jest poprawna, ponieważ jest to standardowe polecenie w języku SQL używane do modyfikacji istniejącej struktury tabeli. Dzięki temu poleceniu można dodawać nowe kolumny, usuwać istniejące, a także zmieniać typy danych kolumn. Przykładowo, aby dodać kolumnę "wiek" do tabeli "pracownicy", można użyć polecenia: "ALTER TABLE pracownicy ADD COLUMN wiek INT;". Innym zastosowaniem może być usunięcie kolumny, co osiągamy poprzez zapis: "ALTER TABLE pracownicy DROP COLUMN wiek;". W praktyce, stosowanie ALTER TABLE jest kluczowe w zarządzaniu bazami danych, szczególnie w przypadku rozwijania aplikacji, gdzie schematy danych mogą ewoluować z czasem. Warto pamiętać, że modyfikacje struktury tabeli mogą wpływać na integralność danych, dlatego przed ich wykonaniem zaleca się tworzenie kopii zapasowych oraz dokładne przemyślenie wpływu zmian na aplikacje korzystające z danej bazy danych.

Pytanie 21

Czym w relacyjnej bazie danych jest odpowiednik encji?

A. atrybut
B. tabela
C. kolumna
D. wiersz
Tabela w relacyjnej bazie danych to coś jak podstawowy budulec, który reprezentuje encję, czyli po prostu zestaw danych związanych z jakimś tematem. Każda tabela ma wiersze i kolumny. Wiersze są jak indywidualne rekordy, a kolumny to różne atrybuty, które mówią nam coś o tych rekordach. Weźmy na przykład tabelę 'Klienci' – tam znajdziesz kolumny jak 'ID', 'Imię', 'Nazwisko' i 'Adres'. Dzięki tabelom relacyjne bazy danych są w stanie spełniać normy ACID, czyli zapewniają atomowość, spójność, izolację i trwałość, co jest mega ważne dla integralności danych. Z praktyki wiem, że warto nauczyć się, jak definiować tabele, żeby skutecznie przechowywać i zarządzać danymi, bo to ma duży wpływ na to, jak szybko działają zapytania. Dlatego zrozumienie struktury tabeli i jej roli w bazach danych jest kluczowe dla każdego, kto się tym zajmuje.

Pytanie 22

$x = mysql_query('SELECT * FROM mieszkanci'); if (!$x) echo "??????????????????????????????"; W podanym kodzie PHP, w miejscu znaków zapytania powinien wyświetlić się komunikat:

A. Błąd w trakcie przetwarzania zapytania
B. Nieprawidłowa nazwa bazy danych
C. Zapytania zakończono sukcesem
D. Złe hasło do bazy danych
Wybór niepoprawnej odpowiedzi na pytanie dotyczące komunikatu o błędzie może prowadzić do nieporozumień w kontekście działania kodu PHP. Odpowiedź wskazująca na 'Zapytania przetworzono pomyślnie' jest błędna, ponieważ jeśli mysql_query zwraca false, oznacza to, że zapytanie nie zostało wykonane poprawnie, a więc nie może być mowy o jego pomyślnym przetworzeniu. Jeżeli chodzi o 'Nieprawidłowa nazwa bazy', to również nie jest to prawidłowe stwierdzenie, ponieważ problem może wystąpić z innymi przyczynami, takimi jak błędna składnia zapytania. W przypadku, gdy nazwa bazy jest nieprawidłowa, zazwyczaj pojawia się inny rodzaj błędu. Wreszcie, 'Nieprawidłowe hasło do bazy danych' to kolejna niepoprawna odpowiedź; błąd autoryzacji związany z hasłem do bazy danych zazwyczaj skutkuje problemem z połączeniem, co nie jest bezpośrednio związane z zapytaniem SQL. Dlatego ważne jest, aby rozumieć, że problemy z połączeniem i błędy w zapytaniach SQL są różnymi kwestiami, które wymagają różnych podejść do diagnozowania oraz rozwiązywania.

Pytanie 23

SELECT count(*) FROM Uczniowie WHERE srednia = 5;
Wynikiem uruchomienia przedstawionego zapytania SQL jest:
A. Suma ocen uczniów, których średnia ocen wynosi 5.
B. Średnia ocen wszystkich uczniów.
C. Liczba uczniów, których średnia ocen wynosi 5.
D. Liczba wszystkich uczniów.
Poprawnie – to zapytanie zwraca liczbę uczniów, których kolumna „srednia” ma wartość równą dokładnie 5. Funkcja agregująca COUNT(*) w SQL nie liczy sumy ani średniej, tylko po prostu zlicza wiersze spełniające warunek w klauzuli WHERE. W tym przypadku tabela Uczniowie jest filtrowana warunkiem srednia = 5, więc do liczenia trafiają wyłącznie rekordy uczniów, którzy mają średnią ocen równą 5. Dopiero na takim przefiltrowanym zbiorze wykonywany jest COUNT(*), który zwraca jedną liczbę – ile takich rekordów istnieje. Moim zdaniem to jedno z najczęściej używanych połączeń: WHERE + COUNT(*), bo w praktyce non stop chcemy wiedzieć „ile jest elementów spełniających warunek”. W raportach, panelach administracyjnych, dashboardach – np. ile jest klientów z określonym statusem, ilu użytkowników ma aktywne konto, ilu pracowników ma premię powyżej jakiegoś progu itd. Warto też zauważyć, że COUNT(*) liczy wszystkie wiersze, niezależnie od tego, czy jakieś inne kolumny są NULL, a kluczowe jest tylko to, że warunek WHERE jest spełniony. Dobrą praktyką jest zawsze dokładne określanie warunku filtrowania, bo drobna zmiana, np. srednia >= 5 zamiast srednia = 5, całkowicie zmienia znaczenie zapytania. W projektowaniu baz danych i zapytań SQL takie precyzyjne myślenie o warunkach i funkcjach agregujących jest absolutną podstawą profesjonalnej pracy z danymi.

Pytanie 24

Wymień dwa sposoby na zabezpieczenie bazy danych w Microsoft Access.

A. Określenie hasła do otwarcia bazy danych oraz wprowadzenie zabezpieczeń na poziomie użytkownika
B. Wprowadzenie zabezpieczeń na poziomie użytkownika oraz sesji
C. Zaszyfrowanie pliku bazy danych oraz wysyłanie SMS-ów z kodem autoryzacyjnym
D. Używanie funkcji anonimowych oraz ustawienie hasła dostępu do bazy danych
Ustalanie hasła do otwarcia bazy danych oraz zabezpieczeń na poziomie użytkownika to kluczowe aspekty bezpieczeństwa w kontekście zarządzania bazą danych Microsoft Access. Ustalanie hasła do bazy danych jest podstawowym krokiem w ochronie danych przed nieautoryzowanym dostępem. Każda próba otwarcia bazy wymaga podania poprawnego hasła, co znacząco utrudnia dostęp osobom trzecim. Dodatkowo, zabezpieczenia na poziomie użytkownika pozwalają na przypisanie różnych ról i uprawnień do konkretnych użytkowników, co zapewnia, że tylko uprawnione osoby mogą edytować, przeglądać lub usuwać dane. Przykładowo, menedżer bazy danych może zdefiniować użytkowników, którzy mają jedynie dostęp do raportów, podczas gdy inni mogą modyfikować dane. Takie podejście jest zgodne z dobrymi praktykami w zakresie zarządzania danymi, gdzie stosuje się zasady minimalnych uprawnień oraz segmentacji obowiązków, co zwiększa ogólne bezpieczeństwo systemu.

Pytanie 25

W bazie danych znajduje się tabela uczniowie z kolumnami: imie, nazwisko, klasa. Jakie polecenie SQL należy wykorzystać, aby znaleźć imiona oraz nazwiska uczniów, których nazwiska zaczynają się na literę M?

A. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko IN 'M%';
B. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko LIKE 'M%';
C. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko IN 'M%';
D. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko = 'M%';
Wybrana odpowiedź jest poprawna, ponieważ używa operatora LIKE, który jest standardowym rozwiązaniem w SQL do wyszukiwania wzorców w danych. W tym przypadku 'M%' oznacza, że chcemy znaleźć wszystkie nazwiska, które zaczynają się na literę M. Operator LIKE jest szczególnie przydatny w sytuacjach, gdy potrzebujemy elastycznego wyszukiwania, umożliwiającego zastosowanie symboli wieloznacznych, takich jak '%' oznaczający dowolną liczbę znaków. Przykład zastosowania tego zapytania może obejmować generowanie listy uczniów dla nauczycieli, którzy chcą szybko zobaczyć wszystkich uczniów z nazwiskiem zaczynającym się na M, co może być przydatne przy organizowaniu wydarzeń czy klas. Dobrą praktyką jest także używanie odpowiednich indeksów w bazie danych, co może znacznie przyspieszyć wykonanie zapytań, zwłaszcza w dużych zbiorach danych. Znajomość operatorów SQL i ich zastosowań, jak również umiejętność formułowania zapytań, jest kluczowa w pracy z relacyjnymi bazami danych.

Pytanie 26

Przedstawione polecenie SQL nadaje użytkownikowi adam@localhost prawa:

GRANT SELECT, INSERT, UPDATE, DELETE ON klienci TO adam@localhost
A. zarządzania strukturą bazy danych klienci.
B. manipulowania danymi w tabeli klienci.
C. zarządzania strukturą tabeli klienci.
D. manipulowania danymi bazy danych klienci.
Niepoprawne odpowiedzi sugerują, że polecenie SQL nadaje użytkownikowi 'adam' z hosta 'localhost' prawa zarządzania strukturą bazy danych lub tabeli 'klienci', co jest niezgodne z prawdą. Zgodnie z konstrukcją polecenia GRANT, użytkownik otrzymuje prawa do manipulowania danymi, a nie do zarządzania strukturą. Zarządzanie strukturą bazy danych lub tabeli obejmuje operacje takie jak CREATE, ALTER, DROP, które pozwalają na tworzenie, modyfikowanie lub usuwanie bazy danych lub tabeli. Te uprawnienia są zazwyczaj zarezerwowane dla administratorów bazy danych i nie są nadawane zwykłym użytkownikom, co jest zgodne z zasadą minimalnych uprawnień dla bezpieczeństwa systemu. Dodatkowo, polecenie nie odnosi się do całej bazy danych 'klienci', tylko do konkretnej tabeli 'klienci'. Tę pomyłkę można zrozumieć, jako nieprawidłowe zrozumienie hierarchii i struktury bazy danych.

Pytanie 27

Aby stworzyć warunek w zapytaniu wybierającym nazwiska wszystkich uczniów z klas początkowych (od pierwszej do trzeciej), można zastosować klauzulę

A. WHERE klasa < 3
B. WHERE klasa BETWEEN 1 AND 3
C. WHERE klasa >= 1 OR klasa <= 3
D. WHERE klasa IN (1, 3)
Odpowiedź "WHERE klasa BETWEEN 1 AND 3" jest poprawna, ponieważ klauzula BETWEEN umożliwia precyzyjne określenie zakresu wartości w bazie danych. W tym przypadku, chcemy wybrać uczniów z klas 1, 2 i 3, co idealnie pasuje do zastosowania klauzuli BETWEEN. Oznacza to, że zapytanie zwróci wszystkie rekordy, gdzie wartość w kolumnie 'klasa' mieści się w przedziale od 1 do 3, włącznie. Przykładowe zapytanie SQL mogłoby wyglądać tak: SELECT nazwisko FROM uczniowie WHERE klasa BETWEEN 1 AND 3; To podejście jest zgodne z dobrymi praktykami, ponieważ jest czytelne, zrozumiałe i łatwe do modyfikacji. Dodatkowo, stosowanie klauzuli BETWEEN jest bardziej efektywne niż inne metody, takie jak użycie operatorów porównania, co może prowadzić do błędów, jeśli na przykład nie uwzględni się wartości granicznych. W standardach SQL klauzula BETWEEN jest powszechnie uznawana za najlepszy sposób na określenie zakresu wartości, co czyni ją kluczowym narzędziem w pracy z danymi w bazach danych.

Pytanie 28

Wśród technik rozwiązywania problemów w przedsiębiorstwie znajdują się: ignorowanie, separacja, arbitraż oraz kompromis. Wskaż metodę, która szczególnie może być niebezpieczna i prowadzić do zaostrzenia konfliktu w firmie?

A. ignorowanie
B. arbitraż
C. kompromis
D. separacja
Odpowiedzią, która wskazuje na technikę szczególnie ryzykowną, jest ignorowanie. Ignorowanie problemów w firmie może prowadzić do ich eskalacji, ponieważ nie podejmowanie działań w sytuacjach konfliktowych często prowadzi do narastających napięć. Przykładowo, jeśli zespół projektowy ma niezgodności co do metodologii pracy, a kierownik postanowi to zignorować, różnice mogą się pogłębiać, prowadząc do braku współpracy i obniżenia morale. W praktyce, ignorowanie konfliktów jest jednym z najczęstszych błędów w zarządzaniu, co potwierdzają standardy zarządzania projektami, takie jak PMBOK, które zalecają aktywne podejście do rozwiązywania konfliktów. Ignorowanie problemów nie tylko wpływa na dynamikę zespołu, ale także może wpłynąć na wyniki finansowe organizacji, ponieważ niewłaściwe zarządzanie konfliktami może prowadzić do opóźnień w projektach oraz zwiększonych kosztów. Z tego względu kluczowe jest, aby menedżerowie i liderzy nie bagatelizowali konfliktów, lecz podejmowali działania w celu ich rozwiązania oraz wprowadzenia kultury otwartej komunikacji w zespole.

Pytanie 29

SELECT ocena FROM oceny WHERE ocena > 2 ORDER BY ocena;
Załóżmy, że istnieje tabela oceny zawierająca kolumny id, nazwisko, imię oraz ocena. Przykładowe zapytanie ilustruje:
A. sumę.
B. rekurencję.
C. selekcję.
D. łączenie.
Zapytanie SQL przedstawione w pytaniu jest przykładem selekcji ponieważ wykorzystuje klauzulę WHERE do filtrowania danych. Selekcja w kontekście baz danych oznacza wybieranie konkretnych wierszy z tabeli które spełniają określone kryteria. W tym przypadku kryterium to ocena większa niż 2. Takie podejście jest bardzo powszechne i użyteczne w analizie danych pozwalając na uzyskanie tylko istotnych informacji spośród dużych zbiorów danych. Klauzula WHERE jest jednym z podstawowych narzędzi SQL wykorzystywanym w praktycznie każdym systemie zarządzania bazami danych jak MySQL PostgreSQL czy Oracle. Umożliwia ona tworzenie elastycznych i złożonych zapytań które mogą zawierać różnorodne warunki logiczne takie jak porównania czy wyrażenia regularne. Dobre praktyki w zakresie projektowania baz danych zalecają używanie selekcji do ograniczania ilości przetwarzanych danych co zwiększa wydajność systemów. Zrozumienie mechanizmu selekcji jest kluczowe dla skutecznego zarządzania i optymalizacji baz danych szczególnie w projektach o dużej skali.

Pytanie 30

W sklepie internetowym wykorzystuje się tabelę faktura. W trakcie generowania faktury pole dataPlatnosci nie zawsze jest uzupełnione. Aby to skorygować, pod koniec dnia należy wprowadzić bieżącą datę do wierszy, gdzie to pole jest puste. W tym celu można wykorzystać kwerendę

A. UPDATE faktury SET dataPlatnosci=CURTIME() WHERE id = 3
B. UPDATE faktury SET dataPlatnosci=CURTIME() WHERE dataPlatnosci IS NOT NULL
C. UPDATE faktury SET dataPlatnosci=CURDATE() WHERE dataPlatnosci IS NULL
D. UPDATE faktury SET dataPlatnosci=CURDATE() WHERE dataplatnosci = '0000-00-00'
Poprawna odpowiedź to 'UPDATE faktury SET dataPlatnosci=CURDATE() WHERE dataPlatnosci IS NULL;'. Ta kwerenda jest odpowiednia, ponieważ aktualizuje pole 'dataPlatnosci' w tabeli 'faktury' tylko w tych wierszach, gdzie to pole jest puste (NULL). Użycie funkcji CURDATE() pozwala na wprowadzenie aktualnej daty, co jest praktycznym rozwiązaniem dla problemu niewypełnionych dat płatności. Warto pamiętać, że korzystanie z NULL jest standardem w bazach danych, który oznacza brak wartości. Z perspektywy dobrych praktyk w zarządzaniu danymi, ważne jest, aby dbać o pełność danych, co wpływa na późniejsze analizy i generowanie raportów. Tego rodzaju kwerendy powinny być stosowane regularnie, aby zapewnić integralność i aktualność danych w systemie, co jest kluczowe w kontekście e-commerce, gdzie terminowość transakcji ma istotne znaczenie. Na przykład, w sytuacji, gdy system generuje raporty dotyczące płatności, brak daty płatności może prowadzić do nieprawidłowych wniosków.

Pytanie 31

W języku PHP, aby nawiązać połączenie z bazą danych MySQL przy użyciu biblioteki mysqli, w poniższym zapisie w miejsce litery 'c' należy wpisać:

$a = new mysqli('b', 'c', 'd', 'e');
A. hasło dla użytkownika
B. nazwa użytkownika
C. adres serwera bazy danych
D. nazwa bazy danych
Odpowiedź 'nazwa użytkownika' jest na pewno właściwa, bo w konstruktorze klasy mysqli w PHP musimy podać nazwę użytkownika jako drugi argument. To ważne, bo bez tych danych, czyli nazwy użytkownika i hasła, nie da się połączyć z bazą danych. Używanie mysqli to dobra praktyka, zwłaszcza jeśli chodzi o bezpieczeństwo przed atakami SQL injection. Jak chcemy się połączyć, to zapisujemy to tak: $a = new mysqli('localhost', 'nazwa_użytkownika', 'hasło', 'nazwa_bazy'). Dzięki temu możemy na przykład ściągnąć dane z tabeli 'użytkownicy'. Warto też pamiętać o walidacji danych wejściowych i korzystaniu z przygotowanych zapytań, bo to naprawdę podnosi poziom bezpieczeństwa naszej aplikacji. I nie zapominaj, żeby zamknąć połączenie po zakończonej pracy, używając metody close().

Pytanie 32

Utworzono bazę danych zawierającą tabelę podzespoły, która składa się z pól: model, producent, typ, cena. Aby uzyskać listę wszystkich modeli pamięci RAM od firmy Kingston uporządkowaną według ceny, zaczynając od najniższej, należy wykorzystać zapytanie:

A. SELECT model FROM podzespoly WHERE typ="RAM" OR producent="Kingston" ORDER BY cena DESC
B. SELECT model FROM podzespoly WHERE typ="RAM" AND producent="Kingston" ORDER BY cena ASC
C. SELECT model FROM producent WHERE typ="RAM" OR producent="Kingston" ORDER BY podzespoly ASC
D. SELECT model FROM podzespoly WHERE typ="RAM" AND producent="Kingston" ORDER BY cena DESC
Wybór tej odpowiedzi jest prawidłowy, ponieważ kwerenda wykorzystuje poprawną składnię SQL do wyboru modeli pamięci RAM od producenta Kingston. Klauzula WHERE filtruje rekordy, aby uwzględnić tylko te, które mają typ 'RAM' oraz producenta 'Kingston', co jest kluczowe dla uzyskania właściwych wyników. Użycie operatora AND w tym kontekście zapewnia, że obie te cechy muszą być spełnione, co jest zgodne z zamiarem wyświetlenia wszystkich modeli pamięci RAM tego producenta. Dodatkowo, klauzula ORDER BY cena ASC sortuje wyniki w kolejności rosnącej według ceny, co jest wymagane do poprawnego przedstawienia danych od najtańszej do najdroższej pamięci. Takie podejście jest zgodne z dobrymi praktykami SQL, gdzie precyzyjne filtrowanie danych i porządkowanie wyników są kluczowe dla efektywności i dokładności zapytań. W praktyce, takie kwerendy mogą być używane w aplikacjach do zarządzania produktami czy bazach danych e-commerce, aby pomóc użytkownikom w szybkim odnajdywaniu pożądanych produktów w oparciu o konkretne kryteria.

Pytanie 33

Jak określa się podzbiór strukturalnego języka zapytań, który dotyczy formułowania zapytań do bazy danych przy użyciu polecenia SELECT?

A. SQL DDL (ang. Data Definition Language)
B. SQL DML (ang. Data Manipulation Language)
C. SQL DQL (ang. Data Query Language)
D. SQL DCL (ang. Data Control Language)
Wybór SQL DML, SQL DDL lub SQL DCL jako odpowiedzi na pytanie dotyczące podzbioru języka SQL, który służy do formułowania zapytań do bazy danych, wskazuje na pewne nieporozumienia dotyczące struktury i funkcji języka SQL. SQL DML (Data Manipulation Language) obejmuje polecenia takie jak INSERT, UPDATE i DELETE, które umożliwiają manipulację danymi w bazie, jednak nie jest to odpowiedź na zapytania, lecz na operacje modyfikujące dane. Z kolei SQL DDL (Data Definition Language) służy do definiowania struktury bazy danych, w tym tworzenia, modyfikowania i usuwania tabel oraz indeksów. Obejmuje polecenia takie jak CREATE, ALTER i DROP, które są kluczowe dla administracji bazy danych, ale nie dotyczą bezpośrednio pobierania danych. SQL DCL (Data Control Language) koncentruje się na zarządzaniu uprawnieniami i dostępem do danych w bazie, obejmując polecenia takie jak GRANT i REVOKE. Każda z tych odpowiedzi wprowadza w błąd, ponieważ nie odnosi się do kluczowych funkcji DQL, które skupiają się na wydobywaniu i analizie danych. Przy wyborze odpowiedzi ważne jest, aby zrozumieć różnice między tymi podzbiorami SQL i ich zastosowanie w praktyce. Typowe błędy myślowe obejmują mylenie manipulacji danymi z ich zapytaniem oraz niezrozumienie roli, jaką każda z tych kategorii pełni w zarządzaniu bazami danych. Kluczowe jest zatem, aby w kontekście pracy z bazami danych dokładnie rozróżniać te funkcje, co wpływa na efektywność i poprawność wykonywanych operacji.

Pytanie 34

W języku PHP nie można zrealizować

A. przetwarzania danych z formularzy
B. obróbki danych przechowywanych w bazach danych
C. tworzenia dynamicznej treści strony
D. zmiany dynamicznej zawartości strony HTML w przeglądarce
Przetwarzanie danych formularzy to jedna z kluczowych funkcji, które PHP realizuje na co dzień. PHP jest zaprojektowane do obsługi danych przesyłanych przez formularze HTML, co umożliwia dynamiczne przetwarzanie informacji wprowadzonych przez użytkowników. W momencie, gdy użytkownik wysyła formularz, PHP odbiera te dane i może je przetwarzać, walidować oraz zapisywać do bazy danych lub wykorzystywać w inny sposób, co czyni tę odpowiedź niepoprawną. Generowanie dynamicznej zawartości strony to kolejna funkcjonalność, którą PHP realizuje z powodzeniem. Dzięki PHP można tworzyć strony internetowe, które zmieniają się w zależności od różnych czynników, takich jak dane z bazy danych, aktualna godzina czy sesja użytkownika. PHP dynamicznie generuje HTML, który następnie jest wysyłany do przeglądarki. Wreszcie, PHP doskonale radzi sobie z przetwarzaniem danych zgromadzonych w bazach danych. Język ten może łączyć się z różnymi systemami zarządzania bazami danych, takimi jak MySQL, PostgreSQL czy SQLite, umożliwiając wykonywanie zapytań SQL oraz operacji na danych. Dlatego odpowiedzi dotyczące przetwarzania danych formularzy, generowania dynamicznej zawartości oraz interakcji z bazami danych są błędne, ponieważ PHP jest w stanie zrealizować te zadania z dużą skutecznością.

Pytanie 35

Wskaż zapytanie, w którym dane są uporządkowane.

A. SELECT AVG(ocena) FROM uczniowie WHERE klasa = 2;
B. SELECT imie, nazwisko FROM mieszkancy WHERE wiek > 18 ORDER BY wiek;
C. SELECT DISTINCT produkt, cena FROM artykuly;
D. SELECT nazwisko FROM firma WHERE pensja > 2000 LIMIT 10;
Odpowiedź wskazująca na zapytanie "SELECT imie, nazwisko FROM mieszkancy WHERE wiek > 18 ORDER BY wiek;" jest prawidłowa, ponieważ zawiera klauzulę ORDER BY, która służy do sortowania rekordów w wynikach zapytania. W tym przypadku dane są sortowane według kolumny 'wiek', co pozwala na uzyskanie uporządkowanej listy mieszkańców, którzy mają więcej niż 18 lat. Sortowanie danych jest kluczowym aspektem w zarządzaniu bazami danych, umożliwiającym łatwiejsze wyszukiwanie oraz analizę informacji. Przykładem zastosowania może być generowanie raportów, gdzie istotne jest uporządkowanie danych, na przykład według wieku, aby zobaczyć, jak rozkłada się wiek mieszkańców w danej grupie. Dodatkowo, stosowanie sortowania zgodnie z przyjętymi standardami SQL zwiększa czytelność oraz efektywność zapytań, a także ułatwia rozwiązywanie problemów związanych z przetwarzaniem danych.

Pytanie 36

Jaką wiadomość należy umieścić w przedstawionym fragmencie kodu PHP zamiast znaków zapytania? $a=mysql_connect('localhost','adam','mojeHasło'); if(!$a) echo "?????????????????????????";

A. Błąd połączenia z serwerem SQL
B. Rekord został pomyślnie dodany do bazy
C. Wybrana baza danych nie istnieje
D. Błąd w przetwarzaniu zapytania SQL
W sytuacji, gdy nie udaje się nawiązać połączenia z serwerem baz danych MySQL, komunikat błędu powinien jasno wskazywać na problem związany z połączeniem. W kodzie PHP, używając funkcji mysql_connect(), jeśli połączenie się nie powiedzie, zwracany jest błąd, który powinien być odpowiednio obsłużony. W tym przypadku odpowiednia treść komunikatu powinna brzmieć 'Błąd połączenia z serwerem SQL'. Ważne jest, aby programiści dbali o poprawne komunikaty błędów, ponieważ ułatwiają one diagnozowanie problemów. Dobrą praktyką jest także stosowanie obsługi wyjątków, co zwiększa stabilność aplikacji. Przykład: zamiast używać mysql_connect(), zaleca się korzystanie z mysqli lub PDO, które oferują bardziej zaawansowane opcje zarządzania błędami oraz obsługę wyjątków. W przypadku użycia mysqli, mógłbyś to zrobić w następujący sposób: $mysqli = new mysqli('localhost', 'adam', 'mojeHasło'); if ($mysqli->connect_error) { echo 'Błąd połączenia z serwerem SQL: ' . $mysqli->connect_error; } Poprawne raportowanie błędów jest kluczowym elementem programowania, ponieważ pozwala na szybką identyfikację i naprawę potencjalnych problemów.

Pytanie 37

Co wchodzi w skład standardowego frameworka?

A. przetwarzanie formularzy oraz wbudowany serwer
B. system uruchamiania i przetwarzania akcji oraz certyfikat http
C. zarządzanie komunikacją z bazą danych, system uruchamiania i przetwarzania akcji
D. domena oraz obsługa błędów
Wybór odpowiedzi, który nie odnosi się do zarządzania komunikacją z bazą danych oraz mechanizmu uruchamiania i przetwarzania akcji, może prowadzić do mylnych przekonań na temat roli frameworków. Na przykład, odpowiedzi dotyczące certyfikatu HTTP i serwera wbudowanego mogą sugerować, że te elementy są kluczowe dla frameworków, podczas gdy w rzeczywistości to mechanizmy, które są bardziej związane z infrastrukturą sieciową i konfiguracją serwera. Certyfikat HTTP jest istotny dla bezpieczeństwa komunikacji, ale nie jest częścią samego frameworka aplikacyjnego. Podobnie, obsługa formularzy jest funkcją, którą wiele frameworków oferuje, lecz nie jest ona wystarczająca do pełnego operowania w kontekście aplikacji webowych. Ponadto, odpowiedź dotycząca domeny i obsługi błędów może wprowadzać w błąd, ponieważ domena to szerszy termin związany z architekturą aplikacji, a obsługa błędów to mechanizm usprawniający interakcję użytkownika, ale nie definiujący samego frameworka. Właściwe zrozumienie roli zarządzania danymi i mechanizmów przetwarzania akcji jest kluczowe dla efektywnego tworzenia aplikacji, które są skalowalne i łatwe w utrzymaniu.

Pytanie 38

W SQL uprawnienie SELECT przydzielone za pomocą polecenia GRANT umożliwia użytkownikowi bazy danych

A. usuwanie danych z tabeli
B. zmienianie danych w tabeli
C. generowanie tabeli
D. uzyskiwanie danych z tabeli
Przywilej SELECT w języku SQL, przyznawany przy użyciu polecenia GRANT, umożliwia użytkownikowi baz danych na wykonywanie operacji odczytu danych z określonych tabel. Oznacza to, że użytkownik może pobierać informacje zapisane w tabelach bazy danych, co jest kluczowe dla większości aplikacji korzystających z danych. Na przykład, w kontekście aplikacji analitycznych, dostęp do danych pozwala na generowanie raportów i analiz, które wspierają podejmowanie decyzji. W praktyce, przyznanie przywileju SELECT jest standardową procedurą zabezpieczającą, ponieważ pozwala na kontrolowanie, którzy użytkownicy mogą zobaczyć dane w bazie, minimalizując ryzyko nieautoryzowanego dostępu. Warto również zaznaczyć, że w bazach danych, takich jak MySQL, PostgreSQL czy Oracle, przywileje są zarządzane w sposób hierarchiczny, co oznacza, że użytkownik z przywilejem SELECT może dodatkowo dziedziczyć inne przywileje, co zwiększa elastyczność zarządzania dostępem.

Pytanie 39

Tabele: Studenci, Zapisy, Zajecia są powiązane relacją. Aby wybrać jedynie nazwiska studentów oraz odpowiadające im idZajecia dla studentów z grupy 15, należy wydać kwerendę

Ilustracja do pytania
A. SELECT nazwisko, idZajecia FROM Studenci INNER JOIN Zapisy WHERE grupa= 15;
B. SELECT nazwisko, idZajecia FROM Studenci INNER JOIN Zapisy ON Studenci.id = Zapisy.idStudenta;
C. SELECT nazwisko, idZajecia FROM Studenci JOIN Zapisy ON Studenci.id = Zapisy.idStudenta WHERE grupa = 15;
D. SELECT nazwisko, idZajecia FROM Studenci JOIN Zapisy ON Studenci.id = Zapisy.idZajecia WHERE grupa = 15;
Wśród proponowanych rozwiązań pojawiają się charakterystyczne błędy, często spotykane przy pierwszych próbach pracy z relacyjnymi bazami danych. Bardzo łatwo jest pomylić się na etapie łączenia tabel, zwłaszcza gdy nie do końca rozumie się, jak działa klucz główny i obcy w praktyce. Jeden z typowych problemów polega na pominięciu warunku określającego, w jaki sposób tabele mają być połączone – wtedy system bazodanowy tworzy tzw. iloczyn kartezjański, czyli paruje każdy rekord z jednej tabeli z każdym z drugiej, co zwykle daje absurdalnie dużo wyników i nie ma nic wspólnego z rzeczywistością. Popularny błąd to też użycie niewłaściwych pól do łączenia – np. próba połączenia idStudenta z idZajecia, które są ze sobą kompletnie niepowiązane, bo reprezentują dwa różne byty. Z mojego doświadczenia wynika, że często myli się pole id w tabeli Studenci z polem idZajecia w tabeli Zapisy – to są zupełnie inne klucze i nie mają prawa się zgadzać. Inna pułapka pojawia się, gdy zapomni się o warunku WHERE filtrującym po konkretnej grupie, przez co wynik zawiera dane wszystkich studentów, a nie tylko tych z interesującej nas grupy. Trzeba też pamiętać, że poprawna kolejność oraz jawne stosowanie JOIN z warunkiem ON to nie tylko kwestia składni, ale i wydajności oraz czytelności kodu. Warto mocno utrwalić sobie, że łączenie przez JOIN i jasno określony warunek ON to podstawa dobrej praktyki i niemal zawsze sprawdza się przy pracy z większymi, złożonymi bazami danych – zupełnie inaczej niż domyślne, niejawne łączenia czy łączenie po złych polach.

Pytanie 40

Wskaż komendę, która dokonuje aktualizacji danych w tabeli?

A. UPDATE
B. ALTER
C. CREATE
D. SELECT
Odpowiedź "UPDATE" jest jak najbardziej trafna. To takie podstawowe polecenie SQL, które pozwala na aktualizowanie już istniejących danych w tabeli. Możesz dzięki niemu zmienić jeden albo kilka wierszy w tabeli, w zależności od tego, jakie masz kryteria. Na przykład, jeśli mamy tabelę "pracownicy" i chcemy zwiększyć pensję programistów do 6000 zł, wystarczy użyć polecenia: `UPDATE pracownicy SET pensja = 6000 WHERE stanowisko = 'programista';`. To polecenie działa w taki sposób, że modyfikuje dane, ale przy tym dba o integralność, co jest bardzo ważne w pracy z bazami danych. Warto zawsze dodawać klauzulę WHERE, żeby zmiany dotyczyły tylko wybranych wierszy – to pomoże uniknąć sytuacji, w której przypadkiem zmienisz wszystko. Umiejętność korzystania z UPDATE jest naprawdę istotna, jeżeli chcesz efektywnie zarządzać swoimi danymi.