Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 13 maja 2026 10:49
  • Data zakończenia: 13 maja 2026 11:07

Egzamin zdany!

Wynik: 32/40 punktów (80,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

Jakie są właściwe etapy tworzenia bazy danych?

A. Zdefiniowanie celu, normalizacja, stworzenie tabel, utworzenie relacji
B. Zdefiniowanie celu, utworzenie relacji, stworzenie tabel, normalizacja
C. Zdefiniowanie celu, normalizacja, utworzenie relacji, stworzenie tabel
D. Zdefiniowanie celu, stworzenie tabel, utworzenie relacji, normalizacja
W procesie tworzenia bazy danych kluczowym pierwszym krokiem jest określenie celu, który pozwala zrozumieć, jakie dane będą gromadzone oraz jakie operacje będą na nich wykonywane. Następnie przystępuje się do stworzenia tabel, które stanowią fundamentalne elementy bazy danych. Każda tabela powinna odpowiadać określonym kategoriom danych, a ich struktura powinna być dobrze przemyślana, aby umożliwić efektywne przechowywanie, zarządzanie oraz odczytywanie informacji. Po utworzeniu tabel ważne jest, aby zdefiniować relacje między nimi, co umożliwia integrację danych oraz ich logiczne powiązanie. Na końcu procesu następuje normalizacja, która ma na celu eliminację redundancji danych oraz zwiększenie integralności bazy, co przekłada się na jej wydajność. Przykładem może być stworzenie bazy danych dla systemu zarządzania uczelnią, gdzie tabele odpowiadają za studentów, kursy i wykładowców. Właściwe zdefiniowanie relacji pomoże w zrozumieniu, którzy studenci uczą się na jakich kursach, a normalizacja zabezpieczy przed powielaniem danych.

Pytanie 2

Zgodnie z zasadami ACID, które odnoszą się do realizacji transakcji, wymóg trwałości (ang. durability) oznacza, że

A. w trakcie wykonywania transakcji dane mogą być zmieniane przez inne transakcje
B. dane zatwierdzone przez transakcję powinny być dostępne niezależnie od wydarzeń, które nastąpią po jej zakończeniu
C. transakcja może w pewnych okolicznościach być podzielona na dwa niezależne etapy
D. w przypadku naruszenia spójności bazy danych transakcja usuwa tabele z kluczami obcymi
Trwałość (czyli durability) w bazach danych to taka cecha, która mówi, że jak już zatwierdzisz transakcję, to wszystkie zmiany zostaną na zawsze w systemie. To znaczy, że niezależnie od tego, co się później wydarzy, jak na przykład awaria, Twoje dane są bezpieczne. To naprawdę ważne, bo pozwala na utrzymanie spójności i pewności, że system działa tak, jak powinien. Weźmy na przykład systemy bankowe. Gdy robisz przelew, musisz być pewien, że pieniądze poszły tam, gdzie miały, nawet jak serwer padnie tuż po zakończeniu transakcji. Dobrze jest mieć też takie mechanizmy, jak zapisywanie dzienników, które pomagają odtworzyć dane, jeśli coś pójdzie nie tak. Trwałość to kluczowa sprawa w projektowaniu baz danych, bo buduje zaufanie użytkowników oraz pozwala spełnić różne normy i regulacje.

Pytanie 3

W firmowej tabeli znajdują się kolumny: nazwa, adres, NIP, obrót (obrót w ostatnim miesiącu), rozliczenie oraz status. Po wykonaniu kwerendy SQL

SELECT nazwa, NIP FROM firmy WHERE obrot < 4000;
na ekranie pojawią się:
A. tylko nazwa oraz numer NIP firm, które w ostatnim miesiącu miały obrót co najmniej 4000 zł
B. tylko nazwa oraz numer NIP firm, które w ostatnim miesiącu miały obrót mniejszy niż 4000 zł
C. wszystkie informacje o firmach, które w ostatnim miesiącu miały obrót poniżej 4000 zł
D. wszystkie informacje o firmach, które w ostatnim miesiącu uzyskały obrót co najmniej 4000 zł
W tej kwerendzie SQL chodziło o to, aby zrozumieć, że zapytanie 'SELECT nazwa, NIP FROM firmy WHERE obrót < 4000;' zwróci tylko nazwy firm i ich numery NIP. Tylko te firmy, co miały obrót poniżej 4000 zł w ostatnim miesiącu. SQL jako język zapytań daje nam możliwość wybierania konkretnych kolumn z tabeli i filtrowania wyników według różnych warunków. Tu wybraliśmy kolumny 'nazwa' i 'NIP', a filtr 'WHERE obrót < 4000' pokazuje nam tylko te firmy, które spełniają ten warunek. To bardzo ważne w praktycznym użyciu SQL, bo często musimy wyświetlać dane według określonych kryteriów. Dzięki temu zapytaniu łatwo możemy zidentyfikować firmy, które mogą potrzebować wsparcia finansowego lub jakiejś pomocy z powodu niskiego obrotu.

Pytanie 4

Jakie jest zadanie funkcji PHP o nazwie mysql_num_rows()?

A. zwrócić liczbę wierszy znajdujących się w wyniku zapytania
B. ponumerować rekordy w bazie danych
C. zwrócić rekord o numerze podanym jako parametr funkcji
D. zwrócić następny rekord z wynikami zapytania
Funkcja mysql_num_rows() w PHP jest używana do zwracania liczby wierszy w wyniku zapytania SQL, co jest kluczowe w pracy z danymi w bazach danych. Gdy wykonujemy zapytanie, na przykład za pomocą mysql_query(), otrzymujemy wynik w formie zasobu. Funkcja mysql_num_rows() pozwala na określenie, ile wierszy zostało zwróconych przez to zapytanie. To jest szczególnie przydatne w sytuacjach, gdy chcemy wiedzieć, czy dane istnieją, na przykład w aplikacjach webowych, gdzie użytkownik szuka określonych informacji. Oznacza to, że możemy dostosować logikę naszej aplikacji na podstawie liczby wyników. Ponadto, korzystając z tej funkcji, możemy monitorować i optymalizować zapytania, co jest zgodne z najlepszymi praktykami w zakresie wydajności i zarządzania bazami danych. Warto również zauważyć, że mysql_num_rows() działa w kontekście wywołania do bazy danych, co oznacza, że musi być używana w kontekście zasobu wynikowego, aby działać poprawnie.

Pytanie 5

Jaką funkcję agregującą można zastosować, aby uzyskać ilość rekordów?

A. AVG
B. SUM
C. NUMBER
D. COUNT
Funkcja agregująca COUNT jest używana w bazach danych do zwracania liczby rekordów spełniających określone kryteria. Jest to jedna z podstawowych funkcji agregujących, która pozwala na szybkie uzyskanie informacji o objętości danych w tabeli. Na przykład, w zapytaniu SQL, które ma na celu policzenie liczby wszystkich klientów w tabeli "klienci", możemy użyć: SELECT COUNT(*) FROM klienci. Zwróci to całkowitą liczbę rekordów. Funkcja COUNT może być również używana z warunkami, co pozwala na bardziej zaawansowane analizy, takie jak: SELECT COUNT(*) FROM klienci WHERE kraj = 'Polska', co policzy tylko tych klientów, którzy są z Polski. W praktyce, COUNT jest nieoceniony w raportowaniu i analizie danych, umożliwiając analitykom i programistom szybkie zrozumienie struktury danych. Dobra praktyka to zawsze stosować COUNT w kontekście grupowania danych przy użyciu klauzuli GROUP BY, co pozwala na uzyskanie liczby rekordów w poszczególnych grupach.

Pytanie 6

Czym w relacyjnej bazie danych jest odpowiednik encji?

A. tabela
B. atrybut
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 7

Dana jest tabela studenci o polach id_albumu, ubezpieczenie. Modyfikacja w kolumnie ubezpieczenie polegająca na zmianie wierszy bez wartości (NULL) na ciąg znaków „brak” zostanie wykonana kwerendą

A. ALTER TABLE studenci ADD ubezpieczenie='brak' WHERE ubezpieczenie IS NULL;
B. UPDATE studenci ubezpieczenie IS NULL SET ubezpieczenie='brak';
C. UPDATE studenci SET ubezpieczenie='brak' WHERE ubezpieczenie IS NULL;
D. ALTER TABLE studenci MODIFY COLUMN ubezpieczenie='brak' NOT NULL;
Prawidłowa kwerenda używa instrukcji UPDATE z klauzulą SET oraz warunkiem w części WHERE: „UPDATE studenci SET ubezpieczenie='brak' WHERE ubezpieczenie IS NULL;”. To dokładnie odpowiada temu, co chcemy zrobić: zaktualizować istniejące rekordy w tabeli, tylko w tych wierszach, gdzie kolumna ubezpieczenie ma wartość NULL. UPDATE służy właśnie do modyfikowania danych w tabeli, a nie do zmiany jej struktury. Kluczowy jest tu warunek WHERE ubezpieczenie IS NULL – bez tego zmienilibyśmy wartość ubezpieczenie na „brak” we wszystkich wierszach, co byłoby poważnym błędem. W SQL porównanie z NULL odbywa się zawsze przez IS NULL lub IS NOT NULL, a nie przez operator =, bo NULL oznacza „brak danych”, a nie konkretną wartość. Moim zdaniem warto zapamiętać ten schemat, bo w praktyce pracy z bazami danych bardzo często trzeba „sprzątać” dane: zastępować wartości NULL jakimiś domyślnymi opisami, np. „nieznany”, „nie dotyczy”, „brak danych”. Przykładowo: UPDATE klienci SET telefon='brak' WHERE telefon IS NULL; albo UPDATE pracownicy SET premia=0 WHERE premia IS NULL;. To jest ten sam wzorzec działania. Dobrą praktyką jest też najpierw wykonać SELECT z tym samym warunkiem WHERE, żeby zobaczyć, które rekordy zostaną zmodyfikowane, zanim puścimy właściwy UPDATE. W projektowaniu baz danych przyjęło się, że UPDATE służy do zmiany zawartości wierszy, a ALTER TABLE do zmiany struktury tabeli (dodawanie kolumn, zmiana typów, kluczy itp.). Mieszanie tych dwóch ról prowadzi potem do dziwnych błędów. W standardowym SQL nie ma możliwości aktualizacji tylko części wierszy poprzez ALTER TABLE, dlatego tutaj jedynym sensownym, poprawnym i zgodnym z dobrymi praktykami rozwiązaniem jest właśnie użycie UPDATE z warunkiem WHERE ubezpieczenie IS NULL.

Pytanie 8

Organizacja społeczna, która skupia pracowników i ma na celu nadzorowanie warunków pracy oraz ochronę ich praw i interesów zawodowych, to

A. Straż Pożarna
B. kierownik zakładu
C. związek zawodowy
D. komisja BHP
Związek zawodowy to organizacja społeczna, która zrzesza pracowników w celu obrony ich praw oraz reprezentowania ich interesów zawodowych. Głównym zadaniem związków zawodowych jest monitorowanie warunków pracy i walka o poprawę sytuacji w miejscu zatrudnienia, co jest kluczowe w kontekście ochrony praw pracowniczych. Przykłady działań związków zawodowych obejmują negocjacje zbiorowych umów pracy, które mogą regulować wynagrodzenia, czas pracy oraz inne istotne aspekty zatrudnienia. Związki zawodowe mają również na celu wspieranie pracowników w sytuacjach konfliktowych z pracodawcą, co może obejmować mediacje czy nawet strajki w przypadku naruszeń ich praw. Działalność związków zawodowych opiera się na Kodeksie pracy oraz przepisach prawa dotyczących związków zawodowych, co zapewnia im legitymację prawną do działania. Warto także zauważyć, że związki zawodowe są istotnym elementem demokratycznych systemów pracy, promując dialog społeczny i współpracę z pracodawcami oraz rządem w celu osiągnięcia korzystnych warunków dla wszystkich stron.

Pytanie 9

Aby przyspieszyć operacje na bazie danych należy dla pól często wyszukiwanych lub sortowanych

A. dodać więzy integralności.
B. utworzyć osobną tabelę przechowującą tylko te pola.
C. dodać klucz obcy.
D. utworzyć indeks.
Prawidłowo – kluczem do przyspieszenia wyszukiwania i sortowania w relacyjnej bazie danych jest utworzenie indeksu na kolumnach, po których najczęściej filtrujesz (WHERE), łączysz tabele (JOIN) albo sortujesz (ORDER BY). Indeks działa podobnie jak spis treści czy indeks na końcu książki – zamiast przeglądać każdą stronę po kolei, silnik bazy danych korzysta z dodatkowej struktury danych (najczęściej drzewa B-drzewiastego, tzw. B-tree), żeby bardzo szybko znaleźć interesujące wiersze. W praktyce oznacza to, że zapytania, które wcześniej skanowały całą tabelę (full table scan), zaczynają wykorzystywać indeks, co drastycznie zmniejsza liczbę odczytanych stron danych z dysku. W SQL jest to standardowa dobra praktyka: dla kolumn używanych w warunkach wyszukiwania i sortowania tworzy się indeksy, ale z umiarem, żeby nie przesadzić. Z mojego doświadczenia w projektach webowych typowe indeksy to np. indeks na kolumnie email w tabeli użytkowników, indeks na data_dodania w tabeli z artykułami albo indeks złożony (wielokolumnowy) na (user_id, created_at) w tabeli logów czy zamówień. Dzięki temu zapytania typu SELECT * FROM zamowienia WHERE user_id = ? ORDER BY created_at DESC działają bardzo szybko. Warto też wiedzieć, że dobry administrator lub programista zawsze sprawdza plany wykonania zapytań (EXPLAIN w MySQL/PostgreSQL) i na tej podstawie decyduje, które indeksy są naprawdę potrzebne. Tworzenie indeksów na oślep nie jest najlepszym pomysłem, ale sensowne indeksowanie jest absolutnym standardem w profesjonalnych systemach bazodanowych i jedną z podstawowych technik optymalizacji wydajności.

Pytanie 10

W bazie danych istnieje tabela ksiazki, która posiada pola: tytul, id_autora, data_wypoz, id_czytelnika. Codziennie tworzony jest raport dotyczący książek wypożyczonych w danym dniu, który wyświetla jedynie tytuły książek. Która kwerenda SQL jest odpowiednia do generowania tego raportu?

A. SELECT * FROM ksiazki
B. SELECT tytul FROM ksiazki WHERE data_wypoz = CURRENT_DATE()
C. SELECT tytul FROM ksiazki
D. SELECT tytul, data_wypoz FROM ksiazki WHERE data_wypoz = CURRDATENT_E()
Ta odpowiedź jest prawidłowa, ponieważ wykorzystuje funkcję CURRENT_DATE(), która zwraca bieżącą datę systemową. Zapytanie SQL SELECT tytul FROM ksiazki WHERE data_wypoz = CURRENT_DATE(); umożliwia wybranie jedynie tych książek, które zostały wypożyczone w dniu, w którym raport jest generowany. To podejście jest zgodne z dobrymi praktykami w zakresie zarządzania danymi, ponieważ pozwala na efektywne filtrowanie danych bez zbędnych informacji. W kontekście bazy danych, operacje takie jak filtrowanie danych według daty są kluczowe dla tworzenia raportów, które są użyteczne i zrozumiałe dla użytkowników. Dzięki temu możemy na przykład generować codzienne zestawienia wypożyczeń książek, co jest szczególnie przydatne w bibliotekach oraz innych instytucjach zajmujących się wynajmem materiałów. Użycie odpowiednich funkcji w SQL jest nie tylko korzystne, ale również zwiększa efektywność procesów analitycznych oraz zarządzania danymi.

Pytanie 11

W diagramie ER powiązanie między dwoma zbiorami encji nazywamy

A. związkiem.
B. atrybutem.
C. dziedziną.
D. krotką.
Poprawna odpowiedź to „związek”, bo w diagramie ER (Entity-Relationship) właśnie tak nazywamy powiązanie między dwoma zbiorami encji. Mamy encje, czyli zbiory obiektów z rzeczywistości, na przykład „Klient” i „Zamówienie”, a pomiędzy nimi rysujemy relację: „Klient składa Zamówienie”. Ta linia, często z nazwą i krotnością (1:1, 1:N, N:M), to właśnie związek. W notacji Chen’a czy notacji Crow’s Foot zawsze chodzi o to samo: formalne opisanie, jak dane z jednego zbioru encji są powiązane z danymi z innego zbioru. W praktyce projektowania baz danych związek w diagramie ER prawie zawsze przekłada się na relację w modelu relacyjnym: albo na klucz obcy (np. tabela zamówienia ma kolumnę klient_id), albo na dodatkową tabelę asocjacyjną przy relacjach wiele‑do‑wielu (np. tabela produkt_zamówienie). Moim zdaniem ważne jest, żeby od początku myśleć o związku nie tylko jako o kresce na diagramie, ale jako o czymś, co później będzie miało konkretne odwzorowanie w SQL, w kluczach obcych, indeksach i ograniczeniach integralności. Z punktu widzenia dobrych praktyk branżowych, poprawne modelowanie związków to podstawa: pozwala zadbać o integralność referencyjną, unikać duplikacji danych i poprawnie odzwierciedlić reguły biznesowe. Na przykład relacja 1:N między Klientem a Zamówieniem jasno mówi, że jedno zamówienie należy do dokładnie jednego klienta, ale klient może mieć wiele zamówień. Dzięki temu, gdy później piszesz kwerendy SQL, dokładnie wiesz, jak łączyć tabele za pomocą JOIN i które klucze obce są obowiązkowe. W praktyce w firmach, które poważnie podchodzą do projektowania baz, diagram ER z dobrze opisanymi związkami jest normalnym elementem dokumentacji technicznej i ułatwia współpracę między programistami, analitykami i administratorami baz danych.

Pytanie 12

Wskaż system do zarządzania treściami.

A. Joomla!
B. Apache
C. MariaDB
D. phpMyAdmin
Joomla! to system zarządzania treścią (CMS), który umożliwia użytkownikom tworzenie i edytowanie stron internetowych bez potrzeby zaawansowanej wiedzy programistycznej. Jest to jeden z najpopularniejszych CMS na świecie, używany przez miliony witryn, od prostych blogów po skomplikowane portale e-commerce. Jego zalety obejmują elastyczność, możliwość łatwego dostosowywania za pomocą rozbudowanych wtyczek i szablonów oraz aktywną społeczność, która wspiera rozwój i aktualizacje. Joomla! umożliwia zarządzanie użytkownikami, co pozwala na tworzenie złożonych struktur dostępu do treści, co jest istotne w kontekście dużych organizacji. Dobre praktyki przy korzystaniu z Joomla! obejmują regularne aktualizacje, aby zapobiegać lukom bezpieczeństwa, oraz optymalizację treści pod kątem SEO, co zwiększa widoczność witryn w wynikach wyszukiwania. System ten jest zgodny z wieloma standardami webowymi, co czyni go solidnym wyborem dla profesjonalnych projektów webowych.

Pytanie 13

Można wydać instrukcję transakcyjną ROLLBACK, aby

A. cofnąć transakcję po zastosowaniu instrukcji COMMIT
B. cofnąć działanie transakcji
C. zatwierdzić transakcję
D. zatwierdzić jedynie wybrane modyfikacje transakcji
Odpowiedź 2 jest poprawna, ponieważ instrukcja ROLLBACK jest używana w systemach zarządzania bazami danych, aby cofnąć wszystkie zmiany wprowadzone w bieżącej transakcji. ROLLBACK przywraca stan bazy danych do momentu sprzed rozpoczęcia transakcji, co jest niezwykle istotne w kontekście zapewnienia integralności danych. W sytuacjach, gdy transakcja kończy się błędem lub występują nieprzewidziane okoliczności, ROLLBACK umożliwia usunięcie wszystkich niepoprawnych lub niekompletnych operacji. Na przykład, podczas aktualizacji danych w bazie, jeśli część operacji zakończy się niepowodzeniem, a część nie, zastosowanie ROLLBACK pozwala na ochronę danych przed niespójnym stanem. W praktyce, ROLLBACK powinien być stosowany w ramach transakcji, co jest zgodne z zasadami ACID (Atomicity, Consistency, Isolation, Durability), które są kluczowe dla bezpieczeństwa i spójności operacji w bazach danych. Dobrą praktyką jest również testowanie scenariuszy, w których mogą wystąpić błędy, aby upewnić się, że ROLLBACK działa poprawnie w sytuacjach awaryjnych, co może pomóc w ochronie przed utratą danych oraz w utrzymaniu zaufania użytkowników względem systemu.

Pytanie 14

Zastosowanie klauzuli PRIMARY KEY w poleceniu CREATE TABLE sprawi, że dane pole stanie się

A. kluczem podstawowym
B. indeksem unikalnym
C. indeksem klucza
D. kluczem obcym
Klauzula PRIMARY KEY w instrukcji CREATE TABLE definiuje unikalny identyfikator dla każdej rekord w tabeli, co oznacza, że pole oznaczone jako klucz podstawowy musi mieć unikalne wartości i nie może zawierać wartości NULL. Klucz podstawowy jest fundamentalnym elementem w relacyjnych bazach danych, ponieważ umożliwia tworzenie relacji między tabelami oraz zapewnia integralność danych. Na przykład, jeśli mamy tabelę 'Użytkownicy' z kolumną 'ID', która jest kluczem podstawowym, to każda wartość w tej kolumnie będzie unikalna, co pozwala na jednoznaczne identyfikowanie użytkowników. Zgodnie z normami SQL, klucz podstawowy może składać się z jednej lub wielu kolumn, a w przypadku złożonego klucza podstawowego, wszystkie kolumny muszą spełniać warunki unikalności oraz nie mogą mieć wartości NULL. W praktyce, użycie klucza podstawowego jest kluczowe dla organizacji danych i optymalizacji zapytań, ponieważ bazy danych mogą tworzyć indeksy na tych polach, co przyspiesza operacje wyszukiwania i sortowania.

Pytanie 15

Zawarta baza danych składa się z trzech tabel oraz dwóch relacji. Aby uzyskać informacje o wszystkich lekarzach przypisanych do wybranego pacjenta, konieczne jest porównanie kluczy

Ilustracja do pytania
A. Lekarze.id = Pacjenci.Recepty_id
B. Lekarze.id = Recepty.id
C. Lekarze.id = Pacjenci.id
D. Lekarze.id = Pacjenci.Lekarze_id
Odpowiedź Lekarze.id = Pacjenci.Lekarze_id jest poprawna, ponieważ w bazach danych relacyjne połączenie między tabelami jest realizowane przez klucze obce. Tabela Pacjenci zawiera kolumnę Lekarze_id, która jest kluczem obcym odnoszącym się do kolumny id w tabeli Lekarze. Dzięki temu połączeniu możemy określić, który lekarz jest przypisany do danego pacjenta. W praktyce oznacza to, że możemy wykonywać zapytania SQL, które łączą te tabele i wyświetlają dane wszystkich lekarzy przypisanych do konkretnego pacjenta. Przykładowe zapytanie SELECT może wyglądać tak SELECT Lekarze.imie Lekarze.nazwisko FROM Pacjenci INNER JOIN Lekarze ON Pacjenci.Lekarze_id = Lekarze.id WHERE Pacjenci.id = [id_pacjenta]. Takie podejście jest zgodne z dobrymi praktykami projektowania baz danych zgodnie z zasadami normalizacji co zwiększa spójność i integralność danych. Poprawne użycie kluczy obcych jest fundamentalne w kontekście zarządzania relacjami między danymi oraz umożliwia przeprowadzanie bardziej złożonych analiz danych z różnych tabel w sposób wydajny i bezpieczny.

Pytanie 16

Model fizyczny replikacji bazy danych pokazany na ilustracji jest modelem

Ilustracja do pytania
A. centralnego subskrybenta
B. centralnego wydawcy
C. rozproszonym
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 17

W tabeli psy znajdują się kolumny: imię, rasa, telefon_właściciela, rok_szczepienia. Jakie polecenie SQL należy zastosować, aby znaleźć numery telefonów właścicieli psów, które zostały zaszczepione przed 2015 rokiem?

A. SELECT telefon_właściciela FROM psy WHERE rok_szczepienia < 2015
B. SELECT psy FROM rok_szczepienia < 2015
C. SELECT imię, rasa FROM psy WHERE rok_szczepienia > 2015
D. SELECT telefon_właściciela FROM psy WHERE rok_szczepienia > 2015
Wybrana odpowiedź jest poprawna, ponieważ precyzyjnie określa, jak za pomocą języka SQL można uzyskać telefony właścicieli psów, których szczepienia miały miejsce przed rokiem 2015. W poleceniu SQL używamy klauzuli SELECT, aby wybrać konkretne kolumny z tabeli. W tym przypadku interesuje nas kolumna 'telefon_wlasciciela'. Klauzula WHERE służy do filtrowania danych, co pozwala na zastosowanie warunku, który musi być spełniony, aby rekordy zostały zwrócone. Warunek 'rok_szczepienia < 2015' jest logiczny i zgodny z wymaganiami pytania. Taka konstrukcja zapytania jest zgodna z najlepszymi praktykami, ponieważ jasno określa, co chcemy uzyskać oraz jakie kryteria muszą zostać spełnione. Przykładowe zastosowanie tego typu zapytania może obejmować analizę danych dotyczących zdrowia psów, co jest istotne dla weterynarzy, hodowców czy właścicieli zwierząt. Umożliwia to podejmowanie świadomych decyzji dotyczących opieki zdrowotnej zwierząt.

Pytanie 18

W jaki sposób będzie uporządkowana lista stworzona z wszystkich kolumn tabeli uczniowie, obejmująca uczniów o średniej wyższej niż 5, która zostanie zwrócona jako rezultat przedstawionego zapytania?

SELECT *
FROM uczniowie
WHERE srednia > 5
ORDER BY klasa DESC;
A. Malejąco według parametru srednia
B. Rosnąca według parametru klasa
C. Malejąco według parametru klasa
D. Rosnaco według parametru srednia
Zapytanie SQL używa klauzuli ORDER BY klasa DESC co oznacza że wyniki będą posortowane malejąco według kolumny klasa Klauzula ORDER BY jest używana w języku SQL do sortowania wyników zapytania Użycie DESC oznacza że sortowanie będzie w porządku malejącym co w praktyce oznacza że najwyższe wartości będą na początku listy a najniższe na końcu To jest przydatne gdy chcemy uzyskać strukturę danych w której najważniejsze lub najbardziej istotne rekordy są prezentowane na samym początku na przykład gdy analizujemy dane w kontekście hierarchicznym lub priorytetowym W tym przypadku sortujemy malejąco według klasy co może być użyteczne na przykład gdy chcemy szybko zidentyfikować uczniów z wyższych klas którzy osiągają wysokie wyniki średnia powyżej 5 Dobre praktyki w SQL zalecają jasne i precyzyjne definiowanie kryteriów sortowania co ułatwia zrozumienie logiki zapytania oraz zapewnia jego przewidywalne działanie Jeśli dane wymagają częstego sortowania warto rozważyć optymalizację poprzez odpowiednie indeksy co może znacząco poprawić wydajność zapytań zwłaszcza w dużych zestawach danych

Pytanie 19

Aby zapewnić integralność danych w bazie programu Microsoft Access, należy zastosować

A. defragmentację bazy
B. archiwizację bazy
C. więzy integralności
D. kwerendę aktualizującą
Wybór więzów integralności jako metody zapewnienia spójności danych w programie Microsoft Access jest właściwy, ponieważ więzy te definiują zasady, które muszą być spełnione w bazie danych, aby utrzymać spójność i poprawność danych. Przykładowo, można ustawić więzy integralności, które zapobiegają wprowadzeniu duplikatów w kluczowych polach, takich jak identyfikator klienta, co jest kluczowe dla unikania konflikty i błędów w analityce danych. Więzy integralności mogą obejmować takie elementy jak klucze główne, klucze obce oraz unikalne ograniczenia, które pomagają w zachowaniu logiki relacyjnej w bazie danych. Dobrą praktyką jest regularne przeglądanie i aktualizowanie więzów integralności, aby zapewnić ich adekwatność do zmieniających się potrzeb danych. Ponadto, w sytuacjach, gdy dane są wprowadzane przez wiele źródeł, więzy integralności stają się kluczowym narzędziem w zarządzaniu jakością i spójnością danych, co jest zgodne z najlepszymi praktykami w zakresie zarządzania danymi.

Pytanie 20

Aby aplikacja PHP mogła nawiązać połączenie z bazą danych, konieczne jest najpierw użycie funkcji o nazwie

A. mysqli_connect
B. mysqli_select_db
C. mysqli_create_db
D. mysqli_close
Funkcja mysqli_connect jest kluczowym elementem w procesie komunikacji aplikacji PHP z bazą danych. Jej głównym zadaniem jest nawiązanie połączenia z serwerem MySQL, co jest niezbędne, zanim jakiekolwiek operacje na danych mogą zostać przeprowadzone. Wywołując tę funkcję, należy podać odpowiednie parametry: nazwę hosta (zazwyczaj 'localhost'), nazwę użytkownika, hasło oraz nazwę bazy danych, z którą chcemy pracować. Na przykład: $conn = mysqli_connect('localhost', 'user', 'password', 'database');. Dobrą praktyką jest również sprawdzenie, czy połączenie zostało nawiązane poprawnie, co można zrobić za pomocą odpowiednich warunków. W przypadku ewentualnych błędów podczas nawiązywania połączenia, funkcja ta zwraca wartość false, co umożliwia dalsze działania naprawcze. Dodatkowo, w kontekście bezpieczeństwa, warto stosować techniki takie jak przygotowywanie zapytań (prepared statements), aby zminimalizować ryzyko ataków typu SQL Injection. Właściwe nawiązanie połączenia z bazą danych jest fundamentem każdej aplikacji webowej opartej na PHP.

Pytanie 21

Integralność encji w systemie baz danych będzie zapewniona, jeśli między innymi

A. klucz główny zawsze będzie liczbą całkowitą
B. dla każdej tabeli zostanie ustanowiony klucz główny
C. każdy klucz główny będzie miał odpowiadający mu klucz obcy w innej tabeli
D. każda kolumna otrzyma zdefiniowany typ danych
Inne odpowiedzi na to pytanie wskazują na powszechnie występujące błędne przekonania dotyczące integralności encji. Twierdzenie, że klucz główny musi być zawsze liczbą całkowitą, jest błędne, ponieważ klucz główny może przyjmować różne typy danych, takie jak ciągi znaków, co może być użyteczne w przypadku identyfikatorów alfanumerycznych. Przypisanie typu danych dla każdej kolumny jest ważne, ale samo w sobie nie gwarantuje integralności encji, ponieważ nie eliminuje problemu duplikacji wartości, co jest kluczowe dla kluczy głównych. Ponadto, sugerowanie, że każdy klucz główny powinien mieć odpowiadający klucz obcy w innej tabeli, prowadzi do nieporozumienia, ponieważ klucz główny nie musi być powiązany z kluczem obcym, jeśli tabela nie jest częścią relacji. Klucze obce są używane do tworzenia relacji między tabelami, ale nie są wymogiem dla każdej tabeli. W praktyce, klucz główny jest podstawowym wymogiem dla spójności danych w tabelach, natomiast inne aspekty, takie jak typ danych czy relacje między tabelami, są uzupełniające i nie mogą być traktowane jako równorzędne do roli klucza głównego w zapewnieniu integralności encji.

Pytanie 22

Obiekt bazy danych, którego głównym przeznaczeniem jest drukowanie lub wyświetlanie zestawień danych, to

A. makro.
B. moduł.
C. raport.
D. formularz.
W tym pytaniu łatwo się pomylić, bo w bazach danych mamy kilka typów obiektów, które „coś pokazują” użytkownikowi. Kluczowe jest jednak rozróżnienie: czym innym jest narzędzie do automatyzacji, czym innym interfejs do wprowadzania danych, a czym innym obiekt przeznaczony typowo do drukowania i prezentacji zestawień. Makro w bazie danych służy głównie do automatyzacji czynności: otwarcie formularza, uruchomienie kwerendy, wydruk raportu, eksport danych do pliku i tym podobne rzeczy. To jest taki prostszy mechanizm skryptowy, który pozwala zdefiniować sekwencję akcji bez pisania klasycznego kodu w języku programowania. Makro samo z siebie nie jest obiektem do drukowania danych, raczej „wywołuje” inne obiekty, na przykład raport, który dopiero generuje wydruk. Moduł z kolei to już typowo programistyczny element – w Accessie jest to moduł VBA (Visual Basic for Applications). Tam umieszcza się procedury, funkcje, bardziej złożoną logikę biznesową, obsługę zdarzeń. Moduł działa w tle, nie jest przeznaczony do bezpośredniej prezentacji danych użytkownikowi, tylko do ich przetwarzania, walidacji, sterowania działaniem aplikacji bazodanowej. Wybór modułu oznacza pomieszanie warstwy logiki z warstwą prezentacji. Formularz często kusi jako odpowiedź, bo też „wyświetla dane”. Jednak jego głównym celem jest interakcja: wprowadzanie, edycja, przeglądanie rekordów, czasem proste filtrowanie. Formularz jest zoptymalizowany do pracy na pojedynczych rekordach lub niewielkich listach, a nie do tworzenia eleganckich, wielostronicowych zestawień z nagłówkami, stopkami, grupowaniem i sumami. Typowy błąd myślowy polega na tym, że skoro coś widać na ekranie, to znaczy, że nadaje się do drukowania raportów. W praktyce w poprawnie zaprojektowanej bazie formularze służą do pracy bieżącej z danymi, a raporty – do tworzenia końcowych dokumentów: wydruków, plików PDF, załączników do maili. Właśnie dlatego właściwą odpowiedzią jest raport, bo to on jest standardowym obiektem bazy danych zaprojektowanym specjalnie do prezentacji zestawionych danych w formie wydruku lub podglądu.

Pytanie 23

W języku SQL instrukcja INSERT INTO

A. dodaje kolumny do istniejącej tabeli
B. wprowadza dane do tabeli
C. zmienia rekordy na zadaną wartość
D. tworzy nową tabelę
Polecenie INSERT INTO w języku SQL jest używane do dodawania nowych danych do tabeli w bazie danych. Jego podstawowa składnia to: INSERT INTO nazwa_tabeli (kolumna1, kolumna2, ...) VALUES (wartość1, wartość2, ...). Dzięki temu poleceniu użytkownicy mogą wprowadzać nowe rekordy, co jest kluczowe w zarządzaniu danymi w relacyjnych bazach danych. Przykładowo, jeżeli mamy tabelę 'użytkownicy' z kolumnami 'imie', 'nazwisko' i 'wiek', możemy dodać nowego użytkownika za pomocą: INSERT INTO użytkownicy (imie, nazwisko, wiek) VALUES ('Jan', 'Kowalski', 30). Warto zauważyć, że polecenie to może być używane w kontekście transakcji, co pozwala na zachowanie integralności danych. Standard SQL, na którym opiera się wiele systemów zarządzania bazami danych, definiuje to polecenie jako fundamentalne w operacjach DML (Data Manipulation Language), co czyni je niezbędnym w każdej aplikacji, która wymaga wprowadzania danych do bazy.

Pytanie 24

Jakie funkcje należy najpierw wywołać, aby aplikacja PHP mogła nawiązać połączenie z bazą danych?

A. mysql_create_db
B. mysql_select_db
C. mysqli_close
D. mysqli_connect
Odpowiedź 'mysqli_connect' jest prawidłowa, ponieważ to właśnie ta funkcja jest pierwszym krokiem w nawiązywaniu połączenia z bazą danych w PHP. Funkcja ta przyjmuje parametry takie jak nazwa hosta, użytkownik, hasło oraz nazwa bazy danych, co pozwala na zbudowanie komunikacji między aplikacją a bazą danych. Dzięki temu, programista uzyskuje dostęp do danych przechowywanych w bazie, co jest kluczowe dla dynamicznych aplikacji webowych. Przykład użycia tej funkcji to: $link = mysqli_connect('localhost', 'username', 'password', 'database_name');. Warto pamiętać, że dobrym zwyczajem jest również sprawdzenie, czy połączenie zostało nawiązane poprawnie, co można zrobić za pomocą instrukcji if, aby uniknąć błędów w działaniu aplikacji. W kontekście najlepszych praktyk, ważne jest, aby unikać używania przestarzałych funkcji, takich jak mysql_connect, które nie obsługują nowoczesnych standardów bezpieczeństwa. Użycie mysqli_connect zapewnia większą funkcjonalność i bezpieczeństwo, a także jest zgodne z aktualnymi standardami programowania w PHP.

Pytanie 25

Które z poniższych zapytań SQL zwróci wszystkie kolumny z tabeli 'produkty'?

A. FETCH * FROM produkty;
B. GET * FROM produkty;
C. SELECT * FROM produkty;
D. SELECT produkty FROM *;
Zapytanie SQL, które zwraca wszystkie kolumny z tabeli, wykorzystuje składnię SELECT * FROM nazwa_tabeli. Gwiazdka (*) jest symbolem, który oznacza, że chcemy pobrać wszystkie kolumny z danej tabeli. Jest to bardzo przydatne, gdy chcemy szybko uzyskać pełne dane z tabeli bez konieczności wymieniania każdej kolumny z osobna. W praktyce często używa się tej składni w sytuacjach, gdy chcemy wykonać operacje diagnostyczne lub szybkie przeglądanie zawartości tabeli. Jednakże, w środowiskach produkcyjnych, zaleca się raczej precyzyjne określanie potrzebnych kolumn zamiast używania "*", ponieważ pozwala to na optymalizację zapytań i może zmniejszyć obciążenie bazy danych. Niemniej jednak, zapytanie SELECT * FROM produkty; jest poprawne i zgodne z SQL-owym standardem, co czyni je prawidłowym wyborem w tym kontekście.

Pytanie 26

Jakiej kwerendy w bazie MariaDB należy użyć, aby wybrać artykuły, których ceny mieszczą się w przedziale domkniętym <10, 20>?

A. SELECT * FROM Artykuly WHERE Cena LIKE 1%, 2%
B. SELECT * FROM Artykuly WHERE Cena BETWEEN 10 AND 20
C. SELECT * FROM Artykuly WHERE Cena IN (10, 20)
D. SELECT * FROM Artykuly WHERE Cena > 10 AND Cena < 20
Odpowiedź 'SELECT * FROM Artykuly WHERE Cena BETWEEN 10 AND 20;' jest prawidłowa, ponieważ wykorzystuje operator BETWEEN, który jest idealny do określenia wartości zawartych w obustronnie domkniętym przedziale. W tym przypadku zapytanie zwróci wszystkie artykuły, których cena jest równa 10 lub 20 oraz wszystkie wartości znajdujące się pomiędzy tymi dwoma wartościami. Operator BETWEEN jest standardowym sposobem na łatwe zapisywanie takich warunków w SQL, co czyni kod bardziej czytelnym i zrozumiałym. Przykład zastosowania to sytuacja, gdy chcemy znaleźć produkty w określonym przedziale cenowym na stronie e-commerce. Tego typu kwerendy są bardzo powszechne w analizie danych i zarządzaniu bazami danych, a ich znajomość jest kluczowa dla efektywnego wykonywania zadań związanych z eksploracją danych. Zastosowanie BETWEEN w praktyce pozwala na automatyzację procesów wyszukiwania i filtrowania danych, co jest zgodne z najlepszymi praktykami w zakresie optymalizacji zapytań w bazach danych.

Pytanie 27

Przedstawione zapytanie MySQL ma za zadanie

ALTER TABLE ksiazki MODIFY tytul VARCHAR(100) NOT NULL;
A. dodać do tabeli ksiazki kolumnę tytul.
B. zmienić nazwę kolumny w tabeli ksiazki.
C. usunąć kolumnę tytul z tabeli ksiazki.
D. zmienić typ kolumny tytul w tabeli ksiazki.
Twoja odpowiedź dobrze odczytuje składnię polecenia ALTER TABLE w MySQL. Instrukcja: ALTER TABLE ksiazki MODIFY tytul VARCHAR(100) NOT NULL; służy do zmiany definicji już istniejącej kolumny tytul w tabeli ksiazki. Słowo kluczowe MODIFY w MySQL oznacza właśnie modyfikację typu danych i atrybutów kolumny, bez zmiany jej nazwy. W tym przykładzie kolumna tytul zostaje ustawiona jako typ VARCHAR o długości 100 znaków oraz z ograniczeniem NOT NULL, czyli pole nie może przyjmować wartości pustej. Moim zdaniem to jedno z częstszych poleceń przy rozwijaniu aplikacji, bo schemat bazy prawie nigdy nie jest idealny od początku. W praktyce takie polecenie stosuje się np. gdy początkowo założyliśmy zbyt krótki tytuł, np. VARCHAR(50), i po czasie okazuje się, że część danych się nie mieści. Zamiast tworzyć nową kolumnę, zmieniamy typ i parametry istniejącej. Dobra praktyka przy pracy z ALTER TABLE to zawsze sprawdzić, czy modyfikacja nie spowoduje utraty danych, np. przy skracaniu długości VARCHAR. W środowiskach produkcyjnych często robi się to najpierw na kopii bazy lub w środowisku testowym, bo zmiany w strukturze tabel potrafią blokować tabelę i wpływać na wydajność. Warto też wiedzieć, że w MySQL do zmiany nazwy kolumny używa się ALTER TABLE ... CHANGE stara_nazwa nowa_nazwa typ, a do dodania nowej kolumny słowa kluczowego ADD. Dzięki rozróżnieniu MODIFY/CHANGE/ADD/ DROP łatwiej czyta się skrypty migracyjne i utrzymuje spójny model danych. Dobrą praktyką jest też trzymanie wszystkich takich zmian w repozytorium razem z kodem aplikacji, żeby zawsze było wiadomo, jaka wersja schematu jest aktualna.

Pytanie 28

Poziom izolacji transakcji Repeatable Read (tryb powtarzalnego odczytu) używany przez MS SQL jest związany z problemem

A. odczytów widm
B. utraty aktualizacji
C. brudnych odczytów
D. niepowtarzalnych odczytów
Wybór odpowiedzi 'niepowtarzalnych odczytów', 'brudnych odczytów' lub 'utraty aktualizacji' wskazuje na brak zrozumienia, jak działają różne poziomy izolacji transakcji w kontekście baz danych. Odczyty niepowtarzalne polegają na tym, że transakcja może odczytać różne wartości w kolejnych odczytach tego samego wiersza, co jest problemem rozwiązywanym przez poziom Repeatable Read. Oznacza to, że dane odczytane w jednym kroku transakcji pozostają spójne do końca tej transakcji, a zatem nie są one narażone na zmiany poprzez inne transakcje w tym samym czasie. Brudne odczyty występują, gdy jedna transakcja odczytuje dane zapisane przez inną, jeszcze niezakończoną transakcję, co jest problemem z kolei eliminowanym przez poziomy izolacji takie jak Read Committed. Utrata aktualizacji to inny problem, który polega na tym, że dwie transakcje odczytują tę samą wartość i zapisują zmodyfikowane wartości, przy czym ostatnia zapisuje nadpisując wcześniejszą, co także nie jest bezpośrednim problemem w kontekście Repeatable Read. W praktyce, zrozumienie różnicy między tymi problemami jest kluczowe dla zapewnienia spójności transakcji. Warto zatem studiować dokumentację i standardy, aby właściwie dobierać poziomy izolacji w zależności od wymagań konkretnej aplikacji.

Pytanie 29

W języku PHPnie ma możliwości

A. przetwarzanie danych z formularzy
B. obróbka informacji przechowywanych w bazie danych
C. tworzenie dynamicznej zawartości strony internetowej
D. zmienianie dynamiczne treści strony HTML w przeglądarce
Pomimo powszechnej wiedzy o zastosowaniach PHP, istnieje pewne nieporozumienie dotyczące jego funkcji w kontekście dynamicznych zmian na stronach internetowych. PHP jest używane do przetwarzania danych po stronie serwera, co oznacza, że jego zadaniem jest generowanie treści, które są następnie wysyłane do przeglądarki użytkownika. Pierwsza z niepoprawnych odpowiedzi sugeruje, że PHP może przetwarzać dane zgromadzone w bazie danych, co jest prawdą, jednak nie odnosi się do sedna pytania. PHP efektywnie współpracuje z bazami danych za pomocą zapytań SQL, ale to, co jest zwracane, to statyczny kod HTML. W kontekście generowania dynamicznej zawartości strony, PHP może być użyte do stworzenia HTML, ale nie do jego późniejszej modyfikacji w przeglądarce. Odpowiedź dotycząca generowania dynamicznej zawartości nie uwzględnia, że zmiany te są wynikiem działania PHP przed wysłaniem danych do klienta. Kolejna odpowiedź, sugerująca, że PHP może bezpośrednio zmieniać HTML w przeglądarkach, myli funkcjonalności języka. Nowoczesne aplikacje webowe często wykorzystują JavaScript do interakcji z użytkownikiem po załadowaniu strony, co pozwala na dynamiczne zmiany bez konieczności ponownego ładowania strony. Również przetwarzanie danych formularzy jest zadaniem, które PHP wykonuje, ale dotyczy to głównie zbierania i przesyłania danych do serwera, a nie modyfikacji treści na stronie po jej załadowaniu. Podsumowując, kluczowym aspektem jest zrozumienie, że PHP jest językiem po stronie serwera, a wszelkie dynamiczne interakcje w przeglądarkach powinny być zarządzane za pomocą technologii klienckich, takich jak JavaScript, co jest zgodne z aktualnymi standardami tworzenia aplikacji webowych.

Pytanie 30

Aby obliczyć liczbę wszystkich wierszy w tabeli Koty, należy zastosować zapytanie:

A. SELECT ROWNUM() FROM Koty
B. SELECT COUNT(ROWNUM) FROM Koty
C. SELECT COUNT(*) FROM Koty
D. SELECT COUNT(Koty) AS ROWNUM
Poprawna odpowiedź to 'SELECT COUNT(*) FROM Koty', ponieważ to standardowy sposób zliczania wszystkich wierszy w tabeli w SQL. Funkcja COUNT(*) zlicza wszystkie wiersze, niezależnie od tego, czy zawierają wartości NULL, czy nie. Jest to najczęściej używana metoda w praktyce, ponieważ zapewnia dokładny wynik i jest także optymalizowana przez silnik baz danych, co czyni ją efektywną. Na przykład, jeśli mamy tabelę 'Koty' zawierającą różne dane o kotach, użycie tego polecenia zwróci dokładną liczbę kotów zapisanych w tej tabeli. Dobrym zwyczajem jest również korzystanie z aliasów lub konstruowania zapytań z dodatkowymi warunkami, co pozwala na bardziej złożoną analizę danych. Przy pracy z dużymi zbiorami danych, zrozumienie jak działa COUNT(*) i jego zastosowanie w kontekście innych funkcji agregujących jest kluczowe dla optymalizacji zapytań. Warto również pamiętać, że w SQL standardowym zliczanie wierszy bezpośrednio z tabeli jest znacznie bardziej efektywne i czytelne niż inne metody, co czyni tę praktykę najlepszą do stosowania w codziennej pracy z bazami danych.

Pytanie 31

Kwerenda ALTER TABLE artykuly MODIFY cena float ma na celu wykonanie modyfikacji w tabeli artykuly?

A. wprowadzić kolumnę cena o typie float, o ile jeszcze nie istnieje
B. zmienić typ na float dla kolumny cena
C. zmienić nazwę kolumny cena na float
D. usunąć kolumnę cena, która jest typu float
Kwerenda ALTER TABLE artykuly MODIFY cena float ma na celu zmianę typu kolumny 'cena' w tabeli 'artykuly' na typ float. Typ float jest używany do przechowywania liczb zmiennoprzecinkowych, co jest szczególnie przydatne w przypadku cen, które mogą mieć ułamkowe wartości. Przykładem zastosowania tej kwerendy może być sytuacja, w której początkowo kolumna 'cena' była zdefiniowana jako typ integer, co ograniczałoby możliwość przechowywania wartości takich jak 19.99. Zmiana typu na float pozwala na większą precyzję, co jest zgodne z najlepszymi praktykami w zarządzaniu danymi finansowymi. Ważne jest, aby przed zmianą typu kolumny upewnić się, że wszystkie istniejące dane są zgodne z nowym typem, aby uniknąć błędów konwersji. Ostatecznie, korzystając z tego polecenia, dbamy o integralność danych oraz ich prawidłowe reprezentowanie, co jest kluczowe w każdej aplikacji związanej z zarządzaniem danymi.

Pytanie 32

Jaki typ powinien być zastosowany, aby pole w bazie danych mogło przechowywać liczby zmiennoprzecinkowe?

A. FLOAT
B. INT
C. VARCHAR
D. CHAR
Odpowiedź FLOAT jest poprawna, ponieważ ten typ danych w systemach baz danych jest zaprojektowany do przechowywania liczb zmiennoprzecinkowych, co oznacza, że może reprezentować liczby rzeczywiste z ułamkami. Typ FLOAT jest szczególnie przydatny w aplikacjach wymagających precyzyjnych obliczeń matematycznych, takich jak finanse, nauki przyrodnicze czy inżynieria. W przeciwieństwie do INT, który przechowuje tylko liczby całkowite, FLOAT pozwala na dużą elastyczność w zakresie wartości. Przykładem może być aplikacja bankowa, która potrzebuje przechowywać wartości depozytów oraz wypłat, które mogą być liczone z dokładnością do dwóch miejsc po przecinku. Dobrą praktyką jest także zrozumienie, że FLOAT, w zależności od implementacji, może mieć ograniczenia precyzyjności, dlatego w sytuacjach wymagających ekstremalnej dokładności, takich jak obliczenia naukowe, warto rozważyć użycie typu DOUBLE, który oferuje większą precyzję. W kontekście zarządzania bazą danych, istotne jest również, aby typ danych był zgodny z wymaganiami aplikacji oraz stosowany w odpowiednich konwencjach i standardach branżowych.

Pytanie 33

Jaką funkcją agregującą można uzyskać ilość rekordów?

A. NUMBER
B. COUNT
C. AVG
D. SUM
Funkcja COUNT jest naprawdę ważna w SQL, bo pozwala nam zliczać rekordy w naszych zbiorach danych. Używa się jej w różnych sytuacjach, na przykład przy robieniu raportów czy analizie danych. Możesz na przykład napisać zapytanie: SELECT COUNT(*) FROM klienci WHERE kraj = 'Polska'. Dzięki temu dowiesz się, ilu klientów jest z Polski. To bardzo przydaje się do analizy demograficznej czy oceniania rynku. Co też warto wiedzieć, COUNT działa na wszystkich rekordach, bez względu na to, co jest w kolumnach. Takie wszechstronne narzędzie z pewnością ułatwia pracę z danymi. A jeśli dodasz klauzulę GROUP BY do COUNT, to możesz zliczać rekordy w różnych kategoriach, co jest mega pomocne przy skomplikowanych raportach. Ogólnie rzecz biorąc, używanie funkcji agregujących jak COUNT to dobra praktyka w SQL, bo sprawia, że kod jest bardziej efektywny i czytelny.

Pytanie 34

Jakie narzędzie jest używane do organizowania oraz przedstawiania danych z wielu rekordów w celu ich wydruku lub dystrybucji?

A. raport
B. makropolecenie
C. formularz
D. kwerenda
Makropolecenie, formularz oraz kwerenda to narzędzia o różnych zastosowaniach, które często mylnie utożsamiane są z raportem. Makropolecenie to zestaw instrukcji, które automatyzują powtarzalne zadania w programach komputerowych, szczególnie w arkuszach kalkulacyjnych. Chociaż mogą one służyć do generowania raportów, same w sobie nie są narzędziem do grupowania informacji, lecz raczej do automatyzacji procesów. Formularz służy do zbierania danych od użytkowników, ale nie jest przeznaczony do ich analizy ani prezentacji w formie zrozumiałych zestawień. Kwerenda natomiast to zapytanie skierowane do bazy danych, które umożliwia wydobycie specyficznych informacji, ale ponownie, nie jest to narzędzie do ich prezentacji. Użytkownicy mogą mylić te narzędzia z raportem, co prowadzi do nieporozumień w zakresie ich funkcjonalności. Kluczowe jest zrozumienie, że raporty są podsumowaniem danych, które były wcześniej przetworzone, podczas gdy makropolecenia, formularze i kwerendy są narzędziami do działania na danych, ale nie do ich ostatecznego przedstawienia. Ważne jest, aby potrafić rozróżnić te pojęcia i stosować je zgodnie z ich przeznaczeniem w praktyce biznesowej.

Pytanie 35

Utworzono bazę danych z tabelą mieszkancy, która zawiera pola: nazwisko, imie, miasto. Następnie zrealizowano poniższe zapytanie do bazy: ```SELECT nazwisko, imie FROM mieszkancy WHERE miasto="Poznań" UNION ALL SELECT nazwisko, imie FROM mieszkancy WHERE miasto="Kraków"``` Wskaż zapytanie, które zwróci te same dane:

A. SELECT nazwisko, imie FROM mieszkancy WHERE miasto BETWEEN "Poznań" OR "Kraków"
B. SELECT nazwisko, imie FROM mieszkancy WHERE miasto="Poznań" OR miasto="Kraków"
C. SELECT nazwisko, imie FROM mieszkancy WHERE miasto HAVING "Poznań" OR "Kraków"
D. SELECT nazwisko, imie FROM mieszkancy AS "Poznań" OR "Kraków"
Wybrana odpowiedź jest poprawna, ponieważ wykorzystuje operator logiczny OR do połączenia dwóch warunków w klauzuli WHERE. W wyniku tego zapytania zostaną zwrócone wszystkie rekordy z tabeli 'mieszkancy', gdzie miasto to 'Poznań' lub 'Kraków'. To podejście jest zgodne z zasadami SQL, gdzie operator OR umożliwia łączenie warunków, co jest powszechnie stosowane w praktyce. Warto zauważyć, że zapytanie z wykorzystaniem operatora UNION ALL, które było pierwotnie zdefiniowane, również łączy wyniki z dwóch zapytań, ale każdy SELECT działa osobno. Użycie OR w tym przypadku jest bardziej efektywne, ponieważ pozwala na jedno zapytanie, co może przyspieszyć wykonanie w porównaniu do kilku zapytań UNION. W praktycznych zastosowaniach, gdy mamy do czynienia z wieloma kryteriami, stosowanie operatorów logicznych jest kluczowe dla uzyskania precyzyjnych wyników.

Pytanie 36

Które dane zostaną wybrane w wyniku działania kwerendy na przedstawionych rekordach?

SELECT id FROM samochody WHERE rocznik LIKE "2%4";
idmarkamodelrocznik
1FiatPunto2016
2FiatPunto2002
3FiatPunto2007
4OpelCorsa2016
5OpelAstra2003
6ToyotaCorolla2016
7ToyotaCorolla2014
8ToyotaYaris2004
A. Brak danych.
B. Identyfikatory równe 7 oraz 8.
C. Tylko identyfikator równy 8.
D. Wszystkie identyfikatory.
Prawidłowa odpowiedź wskazuje, że w wyniku działania kwerendy zostaną wybrane rekordy z id równymi 7 oraz 8, ponieważ oba te roczniki zaczynają się cyfrą 2 i kończą na 4, co spełnia warunek LIKE '2%4'. W SQL operator LIKE umożliwia wyszukiwanie wzorców w danych tekstowych i jest bardzo użyteczny w sytuacjach, gdy nieznana jest pełna wartość, a tylko jej część. W praktycznych aplikacjach, takich jak systemy zarządzania bazami danych, często stosuje się ten operator do filtrowania wyników na podstawie niepełnych informacji. Na przykład, jeżeli chciałbyś zidentyfikować wszystkie pojazdy z określonym rocznikiem, użycie LIKE może szybko zawęzić wyniki. Używanie tego operatora w połączeniu z innymi funkcjami SQL, jak GROUP BY czy JOIN, pozwala na kompozycję bardziej złożonych zapytań, co jest standardem w analityce danych.

Pytanie 37

Polecenie DBCC CHECKDB ('sklepAGD', Repair_fast) w systemie MS SQL Server

A. zweryfikuje spójność danej tabeli
B. sprawdzi spójność bazy danych i naprawi uszkodzone indeksy
C. przeprowadzi kontrolę spójności bazy danych i wykona kopię zapasową
D. sprawdzi spójność konkretnej tabeli i naprawi uszkodzone dane
Odpowiedzi, które stwierdzają, że polecenie DBCC CHECKDB sprawdza spójność określonej tabeli, są wynikiem nieporozumienia dotyczącego funkcji tego narzędzia. DBCC CHECKDB działa na poziomie bazy danych, a nie pojedynczych tabel, co oznacza, że jego celem jest ocena integralności całej struktury bazy danych. Przykładowo, niektóre użytkownicy mogą mylić CHECKDB z poleceniem CHECKTABLE, które rzeczywiście sprawdza spójność pojedynczych tabel. Inna błędna koncepcja występuje w odpowiedziach sugerujących, że polecenie wykonuje kopię bezpieczeństwa – w rzeczywistości DBCC CHECKDB nie tworzy kopii zapasowych, a jego celem jest identyfikacja problemów, a nie ich rozwiązanie poprzez archiwizację danych. Warto także zaznaczyć, że chociaż DBCC CHECKDB może naprawić uszkodzone indeksy, nie jest to jego jedyny zakres działania, co czyni błędnym ograniczenie jego funkcjonalności tylko do tego aspektu. Typowe błędy myślowe obejmują także nieznajomość roli, jaką odgrywają indeksy w bazach danych oraz ich wpływu na wydajność. Właściwe zrozumienie działania DBCC CHECKDB i jego opcji naprawczych jest kluczowe dla skutecznego zarządzania bazą danych i zapewnienia jej stabilności.

Pytanie 38

Które z poniższych twierdzeń na temat klucza głównego jest prawdziwe?

A. W przypadku tabeli z danymi osobowymi może to być pole nazwisko
B. Jest unikalny w ramach tabeli
C. Zawiera jedynie jedno pole
D. Może mieć tylko wartości liczbowe
Wszystkie niepoprawne odpowiedzi opierają się na nieporozumieniach dotyczących definicji i właściwości klucza podstawowego. Klucz podstawowy nie jest ograniczony do jednego pola; może być złożony z kilku atrybutów, co jest typowe w bardziej skomplikowanych modelach danych. Zastosowanie kilku pól jako klucza podstawowego jest często konieczne, aby zapewnić unikalność w sytuacjach, gdzie pojedyncze pole może nie wystarczyć. Odpowiedź wskazująca, że klucz podstawowy składa się tylko z jednego pola, prowadzi do myślenia, które nie odzwierciedla rzeczywistości projektowania baz danych. Ponadto, klucz podstawowy może przyjmować różne typy danych, w tym tekstowe, co jest niezgodne z twierdzeniem, że może on przyjmować jedynie wartości liczbowe. W rzeczywistości, wiele baz danych używa tekstowych wartości jako kluczy, zwłaszcza w kontekście identyfikatorów, które są bardziej zrozumiałe dla użytkowników. W przypadku danych osobowych, pole nazwisko nie jest odpowiednim kandydatem na klucz podstawowy, ponieważ nie jest unikalne - wielu użytkowników może mieć to samo nazwisko. Używanie nieunikalnych danych jako kluczy podstawowych narusza podstawowe zasady projektowania baz danych, co może prowadzić do błędów i problemów z integralnością danych. Rozumienie tych koncepcji jest kluczowe dla prawidłowego projektowania i administracji baz danych.

Pytanie 39

Wskaź na właściwą sekwencję tworzenia aplikacji?

A. Specyfikacja wymagań, analiza potrzeb klienta, tworzenie, wdrażanie, testowanie
B. Analiza potrzeb klienta, specyfikacja wymagań, tworzenie, wdrażanie, testowanie
C. Analiza potrzeb klienta, specyfikacja wymagań, tworzenie, testowanie, wdrażanie
D. Tworzenie, analiza potrzeb klienta, specyfikacja wymagań, wdrażanie, testowanie
Prawidłowa kolejność tworzenia aplikacji zaczyna się od analizy wymagań klienta, co jest kluczowym etapem, pozwalającym zrozumieć oczekiwania oraz potrzeby użytkowników. Następnie, na podstawie zebranych informacji, sporządzana jest specyfikacja wymagań, która dokładnie opisuje, jakie funkcjonalności i cechy powinna posiadać aplikacja. To dokument, który stanowi fundament dla dalszych prac programistycznych. W kolejnej fazie następuje etap tworzenia, w którym programiści przekształcają specyfikację w kod, implementując wszystkie wymagane funkcje. Po zakończeniu kodowania, aplikacja przechodzi testy, które mają na celu wykrycie błędów oraz weryfikację zgodności z wymaganiami. W końcowej fazie, po przeprowadzeniu testów i eliminacji ewentualnych problemów, aplikacja jest wdrażana, co oznacza jej udostępnienie użytkownikom. Cały proces powinien być zgodny z najlepszymi praktykami oraz standardami, takimi jak Agile czy Scrum, które kładą duży nacisk na iteracyjny rozwój oraz stałą komunikację z klientem, co zwiększa szansę na sukces projektu.

Pytanie 40

UPDATE klient SET miejscowosc='Warszawa' WHERE id IN(2,4);
W tabeli klient o polach: id, imie, nazwisko, miejscowosc znajduje się 5 rekordów o id od 1 do 5. Dla których wartości kolumny id przedstawiona kwerenda zaktualizuje zawartość pola miejscowosc na Warszawa?
A. 2, 3, 4
B. 2, 4
C. 1, 5
D. 3
W tym zadaniu kluczowe jest dokładne zrozumienie, jak działa klauzula WHERE w instrukcji UPDATE oraz jak interpretować zapis z operatorem IN. Konstrukcja `UPDATE klient SET miejscowosc='Warszawa' WHERE id IN(2,4);` nie wybiera „jakichś tam” rekordów losowo ani nie aktualizuje wszystkich wierszy, tylko bardzo konkretną podgrupę danych. Warunek `id IN (2,4)` jest równoważny zapisowi `id = 2 OR id = 4`. To oznacza, że silnik bazy danych przechodzi po rekordach i sprawdza: jeśli id danego rekordu jest równe 2 lub 4, to ustawia miejscowosc na 'Warszawa'. Jeśli id ma inną wartość, rekord jest pomijany. Częsty błąd myślowy polega na tym, że ktoś skupia się na liczbie rekordów w tabeli (tu: 5 wierszy o id 1–5) i próbuje dopasować odpowiedź na zasadzie „a może chodzi o środkowy”, „a może o wszystkie poza tymi z listy” albo „może IN działa jak jakiś zakres”. To złe podejście. Operator IN nie oznacza przedziału, tylko dokładną listę dopuszczalnych wartości. Jeżeli na przykład ktoś uznał, że zaktualizowany zostanie tylko rekord o id=3, to najpewniej zignorował treść warunku lub pomylił IN z BETWEEN. Podobnie wybieranie pary 1,5 czy trójki 2,3,4 sugeruje, że myśli się raczej o odcinku lub o „skrajnych” identyfikatorach, a nie o literalnie podanych liczbach wewnątrz nawiasu. W SQL, gdy chcemy objąć zakresem wszystkie id od 2 do 4, używamy `WHERE id BETWEEN 2 AND 4`, a nie `IN(2,4)`. Warto też utrwalić sobie, że brak dopasowania do warunku WHERE oznacza brak jakiejkolwiek zmiany w danym wierszu, więc rekordy o id 1, 3 i 5 pozostaną nietknięte. Dobra praktyka w pracy z bazami danych to zawsze czytanie warunku WHERE „na głos” i zastanowienie się, jakie dokładnie wartości są dopuszczone. Pozwala to uniknąć groźnych pomyłek, kiedy przypadkowo zmienilibyśmy zbyt wiele danych lub zupełnie nie te rekordy, które planowaliśmy edytować.