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: 16 kwietnia 2026 07:56
  • Data zakończenia: 16 kwietnia 2026 08:14

Egzamin zdany!

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

Która z funkcji agregujących dostępnych w SQL służy do obliczania średniej z wartości znajdujących się w określonej kolumnie?

A. MIN
B. COUNT
C. SUM
D. AVG
Funkcja AVG w języku SQL jest wbudowaną funkcją agregującą, która służy do obliczania średniej wartości we wskazanej kolumnie. Oblicza ona średnią arytmetyczną z wartości liczbowych w danej kolumnie, co jest niezwykle przydatne w analizie danych. Na przykład, jeśli mamy tabelę z wynikami sprzedaży, możemy użyć zapytania SQL: SELECT AVG(sprzedaż) FROM tabela_sprzedaży; aby uzyskać średnią sprzedaż. Dobrą praktyką jest stosowanie tej funkcji w połączeniu z klauzulą GROUP BY, co pozwala na obliczenie średnich wartości w różnych grupach danych, na przykład średnia sprzedaż według kategorii produktowej. Przy stosowaniu funkcji AVG warto pamiętać, że ignoruje ona wartości NULL, co wpływa na wynik obliczeń. W kontekście analizy danych w SQL, znajomość takich funkcji jak AVG jest kluczowa dla efektywnego przetwarzania i analizy informacji, co stanowi fundament dobrego zarządzania danymi.

Pytanie 2

Wykonanie następującego polecenia PHP umożliwia:

$zapytanie = mysqli_query($db, "UPDATE ...");
A. dodanie nowych danych do bazy
B. pobranie danych z bazy
C. zmianę struktury bazy
D. zmianę danych w bazie
Polecenie PHP mysqli_query z użyciem instrukcji SQL UPDATE służy do modyfikacji danych w bazie danych. Funkcja mysqli_query umożliwia wykonywanie zapytań SQL na połączeniu z bazą danych reprezentowanym przez zmienną $db. Instrukcja UPDATE jest stosowana do aktualizacji istniejących rekordów w tabeli w bazie danych. Przykładowo, jeśli chcesz zaktualizować pole nazwa w tabeli użytkownicy, możesz użyć polecenia UPDATE users SET name='NowaNazwa' WHERE id=1. To podejście umożliwia dynamiczne zarządzanie danymi, co jest kluczowe w aplikacjach internetowych wymagających bieżącej aktualizacji informacji. W praktyce należy pamiętać o dobrych praktykach, takich jak walidacja danych wejściowych i zabezpieczenie przed atakami SQL injection, np. poprzez stosowanie przygotowanych zapytań. Aktualizowanie danych w bazie to jedna z podstawowych operacji CRUD (Create Read Update Delete), które są fundamentem zarządzania danymi w większości aplikacji obsługujących bazy danych. Poprawne użycie tej funkcji wymaga zrozumienia struktury SQL i znajomości specyfiki używanego systemu zarządzania bazą danych.

Pytanie 3

W SQL, aby zmienić dane w tabeli, wykorzystuje się instrukcję

A. UPDATE
B. SELECT
C. JOIN
D. CREATE
Odpowiedź 'UPDATE' jest poprawna, ponieważ w języku SQL polecenie to służy do modyfikacji danych w istniejących rekordach tabeli. Umożliwia aktualizację wartości w jednym lub więcej polach w wybranych wierszach, których identyfikacja może być dokonana poprzez zastosowanie klauzuli WHERE. Na przykład, aby zaktualizować nazwisko użytkownika w tabeli 'Użytkownicy', można użyć polecenia: 'UPDATE Użytkownicy SET nazwisko = 'NoweNazwisko' WHERE id = 1;'. Dobrą praktyką jest zawsze uwzględnienie klauzuli WHERE, aby uniknąć przypadkowego zaktualizowania wszystkich rekordów w tabeli. Polecenie UPDATE jest częścią standardu SQL i szeroko stosowane w codziennej pracy z bazami danych, co czyni je kluczowym narzędziem w zarządzaniu danymi. Warto również pamiętać, że przed wykonaniem aktualizacji zaleca się wykonanie kopii zapasowej danych, aby zabezpieczyć się przed niezamierzonymi zmianami.

Pytanie 4

Polecenie MySQL pokazane poniżej spowoduje, że użytkownikowi tkowal zostaną odebrane określone uprawnienia:

REVOKE DELETE, UPDATE ON pracownicy FROM 'tkowal'@'localhost';
A. odebrane uprawnienia do usuwania i modyfikacji danych w tabeli pracownicy
B. odebrane uprawnienia do usuwania i dodawania rekordów w tabeli pracownicy
C. przydzielone uprawnienia do wszelkich zmian struktury tabeli pracownicy
D. przydzielone uprawnienia do usuwania oraz aktualizacji danych w tabeli pracownicy
Polecenie REVOKE w MySQL jest używane do cofania praw dostępu, które wcześniej zostały przyznane użytkownikowi. W zapytaniu REVOKE DELETE UPDATE ON pracownicy FROM tkowal@localhost cofamy prawa do usuwania i aktualizowania danych w tabeli pracownicy użytkownikowi o nazwie tkowal. To konkretne polecenie wskazuje, że wspomniane uprawnienia były wcześniej nadane temu użytkownikowi i teraz administrator bazy danych postanowił je cofnąć. Revoke jest kluczowe w zarządzaniu bezpieczeństwem i kontrolą dostępu w systemach baz danych zwłaszcza gdy potrzeby biznesowe lub polityka bezpieczeństwa wymagają ograniczenia możliwości użytkowników MySQL. Praktycznym przykładem może być sytuacja w której pracownik o niższym poziomie uprawnień nie powinien modyfikować lub usuwać kluczowych danych w bazie co zabezpiecza dane przed nieautoryzowanymi zmianami. Dobre praktyki branżowe zalecają regularne przeglądy uprawnień i ich aktualizację tak aby były one zgodne z aktualnymi potrzebami operacyjnymi i polityką bezpieczeństwa organizacji. Zarządzanie uprawnieniami w bazach danych jest fundamentalnym elementem bezpieczeństwa IT.

Pytanie 5

Zaproponowana baza danych składa się z trzech tabel oraz dwóch relacji. Żeby uzyskać listę wszystkich lekarzy przypisanych do danego pacjenta, konieczne jest porównanie kluczy

Ilustracja do pytania
A. Lekarze.id = Pacjenci.id
B. Lekarze.id = Pacjenci.Recepty_id
C. Lekarze.id = Recepty.id
D. Lekarze.id = Pacjenci.Lekarze_id
Poprawna odpowiedź polega na właściwym zrozumieniu relacji między tabelami Lekarze a Pacjenci w bazie danych. Aby wyświetlić wszystkich lekarzy przypisanych do konkretnego pacjenta konieczne jest użycie klucza obcego Lekarze_id w tabeli Pacjenci. Relacja ta jest kluczowa gdyż każda wizyta pacjenta jest przypisana konkretnemu lekarzowi dzięki temu kluczowi. W praktycznych zastosowaniach relacje takie są niezbędne do efektywnego zarządzania danymi w systemach zdrowotnych umożliwiając szybkie uzyskanie informacji o lekarzach opiekujących się pacjentem. Standardy baz danych zakładają użycie kluczy obcych w celu utrzymania integralności danych. Jest to zgodne z zasadą normalizacji polegającą na eliminacji redundancji i zapewnieniu spójności danych. W kontekście projektowania baz danych dobre praktyki wymagają jasno zdefiniowanych relacji co pozwala na łatwiejsze skalowanie i zarządzanie systemem. Zrozumienie i poprawne zastosowanie tej wiedzy umożliwia tworzenie wydajnych i elastycznych struktur danych.

Pytanie 6

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

A. określenie podłańcucha znaków z tekstu wejściowego
B. usuniecie określonego tekstu
C. przycinanie wyświetlanego tekstu
D. łączenie tekstu do wyświetlenia
Funkcja CONCAT w języku SQL jest używana do łączenia dwóch lub więcej ciągów tekstowych w jeden. Jest to bardzo przydatne narzędzie w zarządzaniu danymi, gdyż pozwala na tworzenie bardziej złożonych i informacyjnych komunikatów tekstowych z pojedynczych elementów. Funkcja ta przyjmuje jako argumenty dowolną liczbę ciągów znakowych, a jej wynik to jeden skonsolidowany ciąg. Na przykład, jeżeli mamy dwie kolumny, 'imię' i 'nazwisko', używając CONCAT możemy stworzyć pełne imię i nazwisko: SELECT CONCAT(imię, ' ', nazwisko) AS pełne_imie FROM użytkownicy; W wyniku tego zapytania otrzymamy pełne imiona i nazwiska użytkowników. Funkcja ta jest zgodna z normami ANSI SQL i jest wspierana przez większość systemów zarządzania bazami danych, takich jak MySQL, PostgreSQL, czy Microsoft SQL Server, co sprawia, że jest bardzo uniwersalnym narzędziem w świecie baz danych.

Pytanie 7

Zamieszczone poniżej zapytanie SQL przyznaje uprawnienie SELECT:

GRANT SELECT ON hurtownia.* TO 'sprzedawca'@'localhost';
A. dla konta root na serwerze sprzedawca
B. do wszystkich tabel w bazie danych hurtownia
C. do wszystkich kolumn w tabeli hurtownia
D. dla konta root na serwerze localhost
Podane polecenie SQL <code>GRANT SELECT ON hurtownia.* TO 'sprzedawca'@'localhost';</code> jest poprawne, ponieważ przyznaje uprawnienia do wykonywania zapytań SELECT na wszystkich tabelach w bazie danych hurtownia. Operator <code>.*</code> w kontekście bazy danych oznacza, że dotyczy to wszystkich tabel znajdujących się w tej bazie. Przyznawanie uprawnień w taki sposób jest zgodne z najlepszymi praktykami zarządzania dostępem w systemach baz danych, ponieważ umożliwia kontrolowanie, którzy użytkownicy mogą uzyskiwać dostęp do danych. W praktyce, jeśli 'sprzedawca' potrzebuje przeglądać dane ze wszystkich tabel w hurtowni, to takie przyznanie uprawnień jest najbardziej efektywne. Takie podejście ułatwia zarządzanie uprawnieniami, pozwalając administratorom na nadawanie ogólnych uprawnień w ramach bazy danych, zamiast przypisywania ich dla każdej tabeli z osobna. Dobrą praktyką jest również regularne przeglądanie i aktualizowanie przydzielonych uprawnień, aby zapewnić bezpieczeństwo i zgodność z zasadami ochrony danych.

Pytanie 8

W tabeli programiści znajdują się kolumny: id, nick, ilosc_kodu, ocena. W kolumnie ilosc_kodu zapisano liczbę linii kodu, które programista napisał w danym miesiącu. Jakie zapytanie umożliwi obliczenie całkowitej liczby linii kodu stworzonych przez wszystkich programistów?

A. SELECT MAX(ilosc_kodu) FROM programisci
B. SELECT COUNT(programisci) FROM ilosc_kodu;
C. SELECT SUM(ilosc_kodu) FROM programisci;
D. SELECT SUM(ocena) FROM ilosc_kodu;
Poprawna odpowiedź to 'SELECT SUM(ilosc_kodu) FROM programisci;'. To polecenie wykorzystuje funkcję agregującą SUM, która sumuje wartości w kolumnie 'ilosc_kodu' dla wszystkich wpisów w tabeli 'programisci'. Jest to najbardziej odpowiednia metoda do obliczenia całkowitej liczby linii kodu napisanych przez wszystkich programistów w danym miesiącu. Funkcje agregujące, takie jak SUM, COUNT, AVG, MAX czy MIN, są kluczowe w SQL, ponieważ pozwalają na efektywne przetwarzanie danych i uzyskiwanie podsumowań na podstawie określonych kryteriów. Dobrą praktyką jest również używanie jednoznacznych aliasów w zapytaniach oraz dbanie o czytelność kodu, co ułatwia jego późniejsze modyfikacje oraz utrzymanie. Przykładowo, można rozszerzyć zapytanie o dodatkowe filtry, aby obliczyć sumę linii tylko dla programistów o określonej ocenie, używając klauzuli WHERE. Tego typu umiejętności są niezbędne w codziennej pracy analityka danych, programisty lub administratora baz danych, gdzie przetwarzanie informacji w sposób efektywny i zrozumiały ma kluczowe znaczenie dla podejmowania decyzji biznesowych.

Pytanie 9

Czego nie należy brać pod uwagę przy zabezpieczaniu serwera bazy danych przed atakami hakerskimi?

A. Aktywacja zapory
B. Defragmentacja dysków
C. Używanie skomplikowanych haseł do bazy
D. Zamykanie portów związanych z bazą danych
Defragmentacja dysków, mimo że może poprawić wydajność dysków twardych, nie jest bezpośrednio związana z zabezpieczeniem serwera bazy danych przed atakami hakerów. Zabezpieczenia bazy danych powinny koncentrować się na praktykach, które bezpośrednio wpływają na ochronę danych i dostęp do nich. Przykładem skutecznych środków ochrony są złożone hasła, które utrudniają nieautoryzowany dostęp do systemu. Stosowanie silnych haseł, które łączą litery, cyfry oraz znaki specjalne, jest podstawowym krokiem w kierunku zabezpieczenia bazy danych. Kolejnym aspektem jest blokowanie portów, które nie są niezbędne do działania bazy danych, co może znacznie ograniczyć możliwości ataku z sieci. Włączenie zapory (firewall) także przyczynia się do ochrony, monitorując i kontrolując ruch sieciowy. Warto podkreślić, że zgodnie z zasadami bezpieczeństwa, minimalizacja punktów dostępu do bazy danych jest kluczowa dla jej ochrony.

Pytanie 10

Przedstawione zapytanie SELECT wykonane na tabeli przechowującej dane o uczestnikach konkursu ma za zadanie wybrać:

SELECT MAX(wiek) - MIN(wiek) FROM uczestnicy;
A. najmłodszy i najstarszy wiek uczestników
B. różnicę wieku pomiędzy najstarszym a najmłodszym uczestnikiem
C. ilość najstarszych uczestników
D. średnią wartość wieku uczestników
Prawidłowa odpowiedź to różnica wieku pomiędzy najstarszym i najmłodszym uczestnikiem, ponieważ zapytanie SQL wykorzystuje funkcje agregujące MAX oraz MIN na kolumnie wieku. Funkcja MAX(wiek) zwraca najwyższą wartość wieku w zbiorze danych, co odpowiada wiekowi najstarszego uczestnika, podczas gdy MIN(wiek) zwraca najniższą wartość, czyli wiek najmłodszego uczestnika. Różnica tych dwóch wartości daje nam dokładny wynik, przedstawiający zakres wieku w grupie uczestników. Tego typu analizy są niezwykle przydatne w kontekście organizacji zawodów, gdzie zrozumienie różnorodności wiekowej może wpłynąć na planowanie sekcji rywalizacyjnych czy strategii marketingowych. Rekomenduje się, aby w praktyce wykorzystać podobne zapytania do analizy demografii uczestników, co może pomóc w lepszym dostosowaniu wydarzeń do potrzeb grupy docelowej oraz w analizie trendów w uczestnictwie w różnych kategoriach wiekowych.

Pytanie 11

Na podstawie jakiego parametru oraz z ilu tabel będą zwrócone wiersze w wyniku podanego zapytania?

SELECT * FROM producent, hurtownia, sklep, serwis WHERE
producent.nr_id = hurtownia.nr_id AND
producent.wyrob_id = serwis.wyrob_id AND
hurtownia.nr_id = sklep.nr_id AND
sklep.nr_id = serwis.nr_id AND
producent.nr_id = 1;
A. Na podstawie parametru nr_id dla wszystkich tabel
B. Na podstawie parametru wyrob_id tylko dla trzech tabel
C. Na podstawie parametru wyrob_id tylko dla trzech tabel
D. Na podstawie parametru nr_id tylko dla trzech tabel
Zapytanie SQL w poleceniu jest skonstruowane tak by pobierać dane z czterech tabel: producent hurtownia sklep i serwis W warunku WHERE użyto klauzuli dotyczącej parametru nr_id co powoduje że połączenia między tabelami są realizowane na podstawie tego właśnie parametru Jest to typowe podejście w relacyjnych bazach danych gdzie klucz główny jednej tabeli jest kluczem obcym w innej umożliwiając łączenie danych Parametr nr_id pojawia się wielokrotnie w klauzuli WHERE jako kryterium dla różnych połączeń między tabelami To pozwala na uzyskanie spójnej listy wierszy które spełniają wszystkie zdefiniowane warunki Dzięki temu zapytanie zwraca wiersze dla wszystkich czterech tabel co jest zgodne z odpowiedzią numer 1 Takie podejście umożliwia tworzenie złożonych raportów i analiz danych branżowych Warto także zauważyć że użycie JOIN w taki sposób często optymalizuje wydajność zapytań co jest dobrą praktyką w zarządzaniu bazami danych SQL

Pytanie 12

W języku PHP przeprowadzono operację przedstawioną w ramce. Jak można postąpić, aby wyświetlić wszystkie wyniki tego zapytania?

$tab = mysqli_query($db, "SELECT imie FROM Osoby WHERE wiek < 18");
A. pokazać zmienną $db
B. zaindeksować zmienną tab, tab[0] to pierwsze imię
C. użyć polecenia mysql_fetch
D. zastosować pętlę z poleceniem mysqli_fetch_row
Prawidłowa odpowiedź dotyczy zastosowania pętli z poleceniem mysqli_fetch_row. W języku PHP przy pracy z bazą danych MySQL wykorzystujemy bibliotekę mysqli, która oferuje funkcje pozwalające na manipulację danymi. Funkcja mysqli_query wykonuje zapytanie SQL na połączeniu z bazą danych, zwracając wynik w postaci obiektu typu mysqli_result. Aby pobrać wszystkie wiersze wyników, konieczne jest zastosowanie pętli, która iteruje przez każdy wiersz zwracany przez zapytanie. Funkcja mysqli_fetch_row jest używana do pobrania kolejnego wiersza z wyniku jako tablicy numerycznej. Przykładowy kod mógłby wyglądać następująco while ($row = mysqli_fetch_row($tab)) { echo $row[0]; } co pozwala na wyświetlenie imion wszystkich osób poniżej 18 roku życia. Praktyczne podejście polega na iteracyjnej obsłudze wyników zapytań, co jest zgodne z branżowymi standardami. Takie rozwiązanie umożliwia dynamiczne przetwarzanie danych w czasie rzeczywistym zwiększając elastyczność aplikacji. Dodatkowo warto pamiętać o odpowiednim zarządzaniu zasobami, takim jak zamknięcie połączenia z bazą danych po zakończeniu operacji. To podejście podkreśla znaczenie efektywnego zarządzania danymi w aplikacjach webowych.

Pytanie 13

W SQL, aby zabezpieczyć kwerendę CREATE USER przed utworzeniem konta, jeżeli ono już istnieje, należy użyć składni

A. CREATE USER OR DROP 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
B. CREATE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
C. CREATE USER IF NOT EXISTS 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
D. CREATE OR REPLACE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
Odpowiedź 'CREATE USER IF NOT EXISTS 'anna'@'localhost' IDENTIFIED BY 'yu&T%';' jest poprawna, ponieważ zastosowanie klauzuli 'IF NOT EXISTS' pozwala na utworzenie użytkownika tylko w przypadku, gdy konto o podanej nazwie nie istnieje w systemie. Jest to niezwykle użyteczne w praktyce, ponieważ minimalizuje ryzyko wystąpienia błędów związanych z próbą utworzenia użytkownika, który już został wcześniej zdefiniowany, co mogłoby prowadzić do niepotrzebnych komplikacji w zarządzaniu bazą danych. Dzięki temu podejściu administratorzy mogą tworzyć skrypty, które są bardziej elastyczne i odporne na błędy, co jest zgodne z najlepszymi praktykami w zakresie zarządzania bazami danych. Warto także zaznaczyć, że odpowiednia obsługa błędów oraz unikanie zbędnych operacji wpływa na wydajność systemu, co jest kluczowym aspektem w środowiskach produkcyjnych, gdzie każda operacja ma znaczenie dla dostępności i efektywności aplikacji korzystających z bazy danych.

Pytanie 14

Jakie będą skutki wykonania podanego zapytania w tabeli?

ALTER TABLE nazwa1 ADD nazwa2 DOUBLE NOT NULL;
A. dodanie kolumny nazwa2 typu zmiennoprzecinkowego
B. zmiana wartości kolumny nazwa2 na DOUBLE
C. zmiana nazwy kolumny z nazwa1 na nazwa2
D. dodanie kolumny nazwa2 z wartością domyślną typu DOUBLE
Pytanie dotyczy użycia polecenia SQL ALTER TABLE w celu modyfikacji struktury istniejącej tabeli. W przedstawionym zapytaniu ALTER TABLE nazwa1 ADD nazwa2 DOUBLE NOT NULL; widzimy, że użyto słowa kluczowego ADD co wskazuje na dodanie nowej kolumny do tabeli. Kolumna ta nazywa się nazwa2 i ma typ danych DOUBLE co oznacza, że będzie przechowywać wartości zmiennoprzecinkowe. Specyfikacja NOT NULL oznacza, że żadna wartość w tej kolumnie nie może być NULL co jest częstym wymogiem w bazach danych aby zapewnić spójność i prawidłowość danych. Dodawanie nowych kolumn do tabeli jest typową operacją w zarządzaniu bazami danych umożliwiającą rozbudowę ich struktury w celu spełnienia nowych wymagań biznesowych. Typ DOUBLE jest szczególnie użyteczny w przechowywaniu danych liczbowych wymagających dużej precyzji takich jak wartości finansowe czy pomiary naukowe. Ważne jest aby zawsze po dodaniu nowej kolumny dostosować aplikacje korzystające z bazy danych aby mogły poprawnie obsługiwać nowe dane co jest zgodne z najlepszymi praktykami w branży IT.

Pytanie 15

Jaką czynność należy wykonać przed zrobieniem kopii zapasowej danych w MySQL?

A. sprawdzenie, czy baza działa wystarczająco wydajnie
B. zweryfikowanie poprawności tabel w bazie oraz ewentualne naprawienie usterek
C. przyznanie uprawnień do przeglądania bazy dla Administratora
D. ustalenie systemu kodowania znaków w bazie
Sprawdzenie poprawności tabel w bazie przed wykonaniem kopii bezpieczeństwa jest kluczowym krokiem, który pozwala na zapewnienie integralności danych. W przypadku, gdy w tabelach występują błędy, takie jak uszkodzone wiersze czy niedopasowane indeksy, proces tworzenia kopii zapasowej może nie uwzględnić tych problemów, co w konsekwencji prowadzi do utraty danych lub trudności w ich przywróceniu. W MySQL, przed rozpoczęciem backupu, zaleca się użycie polecenia 'CHECK TABLE' do weryfikacji stanu tabel. Przykładowo, jeśli tabela 'users' jest sprawdzana i wykryto błąd, można zastosować 'REPAIR TABLE', aby naprawić uszkodzenia. Dobrą praktyką w branży jest regularne tworzenie kopii zapasowych oraz prowadzenie audytów jakości danych, co pozwala na minimalizację ryzyka utraty informacji. Utrzymywanie bazy danych w dobrym stanie technicznym poprzez regularne sprawdzanie tabel oraz ich naprawianie jest zalecane w dokumentacji MySQL oraz innych systemów zarządzania bazami danych, co podkreśla znaczenie tego procesu w kontekście bezpieczeństwa danych.

Pytanie 16

W MySQL nadanie roli DBManager użytkownikowi pozwala na uzyskanie praw umożliwiających

A. nadzorowanie serwera
B. wszelkie operacje na bazach danych serwera
C. wszystkie działania na bazach danych oraz użytkownikach serwera
D. tworzenie kont użytkowników na serwerze oraz przypisywanie im haseł
Odpowiedź 'wszelkie operacje na bazach danych serwera' jest prawidłowa, ponieważ rola DBManager w MySQL przyznaje użytkownikowi pełne uprawnienia do zarządzania bazami danych. Obejmuje to możliwość tworzenia, modyfikowania i usuwania baz danych oraz tabel, a także wykonywania zapytań w tych bazach. Rola ta jest użyteczna w kontekście administracji bazami danych, gdzie administratorzy muszą mieć dostęp do wszystkich funkcji związanych z danymi. Przykładowo, administrator może wykorzystać tę rolę do optymalizacji wydajności baz danych poprzez indeksowanie tabel lub do tworzenia kopii zapasowych. Z perspektywy dobrych praktyk, nadawanie ról z odpowiednimi uprawnieniami powinno być przeprowadzane z rozwagą, aby zminimalizować ryzyko nieautoryzowanego dostępu i zapewnić integralność danych. Warto również pamiętać, że w MySQL można zastosować szczegółowe uprawnienia dla poszczególnych użytkowników, co pozwala na dostosowanie dostępu do konkretnych zadań w organizacji.

Pytanie 17

W języku SQL wykonano przedstawione poniżej polecenia GRANT. Kto będzie miał prawo do przeglądania danych oraz ich zmiany?

GRANT ALL ON firmy TO 'adam'@'localhost';
GRANT ALTER, CREATE, DROP ON firmy TO 'anna'@localhost;
GRANT SELECT, INSERT, UPDATE ON firmy TO 'tomasz'@'localhost';
A. Adam i Anna
B. Anna i Tomasz
C. Jedynie Tomasz
D. Tomasz i Adam
Odpowiedź 'Tomasz i Adam' jest poprawna, ponieważ obaj użytkownicy mają przypisane odpowiednie uprawnienia do przeglądania oraz modyfikacji danych w bazie 'firmy'. Adam otrzymał pełne uprawnienia, co oznacza, że może przeglądać (SELECT) oraz modyfikować (INSERT, UPDATE, DELETE) dane, a także zmieniać strukturę tabel (ALTER, CREATE, DROP). Tomasz, z kolei, ma przydzielone szczegółowe uprawnienia do przeglądania danych (SELECT) oraz ich modyfikacji (INSERT, UPDATE). W praktyce, przydzielanie uprawnień w bazach danych odbywa się zgodnie z zasadą minimalnych uprawnień, co oznacza, że każdy użytkownik powinien mieć tylko te uprawnienia, które są mu niezbędne do realizacji przydzielonych zadań. Dobrą praktyką jest regularna weryfikacja przydzielonych uprawnień oraz ich dostosowywanie do zmieniających się potrzeb organizacji.

Pytanie 18

Jakie polecenie pozwala na dodanie kolumny zadanie kompletne do tabeli zadania?

A. INSERT INTO zadania VALUES zadania kompletne
B. ALTER TABLE zadania ADD COLUMN zadaniekompletne int
C. ADD COLUMN zadanie kompletne WITH zadania
D. CREATEINDEX zadania ADD COLUMN zadanie_kompletne int
Odpowiedź 'ALTER TABLE zadania ADD COLUMN zadaniekompletne int' jest na pewno trafna. To polecenie ALTER TABLE to taki standard do zmiany struktury tabeli w relacyjnych bazach, jak MySQL czy PostgreSQL. Dzięki temu możemy dodać nową kolumnę do tabeli, co w tym przypadku robimy, dodając 'zadaniekompletne' jako kolumnę typu całkowitego (int). To jest super, gdy chcemy przechowywać liczby, na przykład ile zadań zostało już ukończonych. Warto pamiętać, że dobrze jest, żeby nazwy kolumn były jasne i jednoznaczne, bo to potem bardzo ułatwia pracę z danymi. Przykład: jak mamy tabelę 'zadania' i chcemy widzieć, jak sobie radzą użytkownicy, to dodanie kolumny 'zadaniekompletne' pozwoli nam śledzić, ile rzeczy zostało ukończonych, co pomoże w ocenie efektywności działań. Można też pomyśleć, żeby zamiast liczby używać flagi boolowskiej, ale to już zależy od systemu. Jeśli chcesz dalej rozwijać swoje umiejętności, to warto zajrzeć do dokumentacji SQL różnych baz, żeby lepiej złapać różnice w działaniu.

Pytanie 19

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

A. utworzyć indeks.
B. utworzyć osobną tabelę przechowującą tylko te pola.
C. dodać więzy integralności.
D. dodać klucz obcy.
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 20

ALTER TABLE transport MODIFY COLUMN rok_produkcji INT;
Wykonanie powyższej kwerendy SQL w bazie MySQL spowoduje:
A. usunięcie kolumny rok_produkcji w tabeli transport.
B. zmianę typu danych w kolumnie rok_produkcji na INT.
C. utworzenie tabeli transport zawierającej kolumnę rok_produkcji.
D. dodanie kolumny rok_produkcji typu INT w tabeli transport.
Poprawnie – polecenie ALTER TABLE ... MODIFY COLUMN w MySQL służy do modyfikowania istniejącej kolumny, a nie do jej tworzenia czy usuwania. W podanym przykładzie baza danych szuka tabeli o nazwie `transport`, a następnie zmienia definicję kolumny `rok_produkcji` tak, aby jej typ danych był `INT`. Jeśli kolumna już istnieje (a musi istnieć, żeby MODIFY zadziałało), to po wykonaniu polecenia dalej będzie miała tę samą nazwę, ale jej typ i właściwości zostaną nadpisane nową definicją. W MySQL warto pamiętać, że przy MODIFY COLUMN trzeba podać pełną definicję kolumny, nie tylko sam typ. Czyli jeśli wcześniej była np. NOT NULL albo miała domyślną wartość, to dobra praktyka jest napisać coś w stylu: `ALTER TABLE transport MODIFY COLUMN rok_produkcji INT NOT NULL DEFAULT 2000;` – inaczej można przypadkiem zgubić część ustawień. W praktyce takie polecenia stosuje się przy zmianach w projekcie bazy: np. najpierw kolumna jest typu VARCHAR, bo ktoś przechowuje tam rok jako tekst, a potem, zgodnie z lepszymi zasadami projektowania, zmienia się to na typ liczbowy INT, żeby można było łatwo filtrować, sortować, robić warunki typu `WHERE rok_produkcji > 2015`. Z mojego doświadczenia dobrze jest przed taką zmianą sprawdzić, czy wszystkie dane da się bezpiecznie skonwertować na liczbę, bo jeśli w kolumnie są jakieś śmieciowe wartości tekstowe, to MySQL może je obciąć albo zamienić na 0, co później robi bałagan w raportach. W środowiskach produkcyjnych takie ALTER TABLE najlepiej wykonywać po zrobieniu kopii zapasowej i często w oknie serwisowym, bo przy dużych tabelach operacja może chwilowo blokować dostęp do danych.

Pytanie 21

Wartość atrybutu w tabeli, który pełni rolę klucza głównego

A. jest używana do szyfrowania zawartości tabeli
B. musi być unikalna
C. nigdy nie jest innego typu niż numeryczny
D. może przyjmować wartość null (NULL)
Klucz podstawowy w bazach danych to coś, co naprawdę musi być unikalne, żeby każda informacja w tabeli była dobrze zidentyfikowana. Przykładowo, w tabeli 'Klienci' mamy kolumnę 'ID_klienta'. To jest dobry klucz podstawowy, bo każdy klient musi mieć swój własny numer, żeby nie było sytuacji, gdzie dwóch klientów ma ten sam identyfikator. Gdyby klucz podstawowy był taki sam dla różnych rekordów, mogłoby to wywołać spore zamieszanie przy aktualizacjach czy usuwaniu danych. Warto też pamiętać, że są takie rzeczy jak indeksy, które mogą pomóc w zapewnieniu, że klucz podstawowy jest unikalny i przyspiesza wyszukiwanie danych. Można użyć kluczy naturalnych, które mają sens w kontekście danych, albo kluczy syntetycznych, które system tworzy sam, jak na przykład GUID-y. Z mojego doświadczenia, to znajomość tych zasad naprawdę pomaga w lepszym projektowaniu baz danych.

Pytanie 22

W języku SQL polecenie INSERT INTO

A. aktualizuje rekordy określoną wartością.
B. dodaje tabelę.
C. wprowadza dane do tabeli.
D. dodaje pola do tabeli.
Polecenie INSERT INTO w SQL służy dokładnie do tego, co wskazuje poprawna odpowiedź: do wprowadzania danych do istniejącej tabeli. W praktyce oznacza to dodanie nowego wiersza (rekordu) do tabeli, która ma już zdefiniowaną strukturę: kolumny, typy danych, klucze itp. Najprostszy przykład w standardowym SQL wygląda tak: INSERT INTO klienci (imie, nazwisko, email) VALUES ('Jan', 'Kowalski', '[email protected]'); Tutaj tabela klienci już istnieje, a polecenie tylko dopisuje nowy rekord. Moim zdaniem warto zapamiętać, że INSERT pracuje na danych, a nie na strukturze tabeli. Do tworzenia tabel służy CREATE TABLE, do zmiany struktury ALTER TABLE, a do modyfikacji istniejących rekordów UPDATE. W codziennej pracy z bazami danych INSERT INTO jest jednym z absolutnie podstawowych poleceń. Używa się go przy obsłudze formularzy rejestracji użytkownika, dodawaniu zamówień w sklepie internetowym, logowaniu zdarzeń w systemie (logi), czy zapisywaniu wyników pomiarów z czujników. Dobrą praktyką jest zawsze podawanie listy kolumn, do których wstawiamy dane, zamiast polegać na kolejności kolumn w tabeli. Dzięki temu kod SQL jest czytelniejszy i mniej podatny na błędy po zmianach w strukturze tabeli. Warto też wiedzieć, że istnieją różne warianty INSERT, np. INSERT ... SELECT (wstawianie danych na podstawie wyników zapytania), INSERT IGNORE czy INSERT ... ON CONFLICT/ON DUPLICATE KEY w konkretnych systemach (PostgreSQL, MySQL). To wszystko dalej jest ta sama rodzina poleceń: celem zawsze jest dodanie nowych rekordów, a nie modyfikacja starych czy zmiana schematu bazy. Z mojego doświadczenia, kto dobrze ogarnie różne formy INSERT, temu dużo łatwiej budować sensowne aplikacje bazodanowe.

Pytanie 23

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

A. Jest unikalny dla danej tabeli
B. Składa się wyłącznie z jednego pola
C. W przypadku tabeli z danymi osobowymi może to być pole nazwisko
D. Może przyjmować wyłącznie wartości liczbowe
Klucz podstawowy to atrybut (lub zbiór atrybutów) w tabeli, który jednoznacznie identyfikuje każdy wiersz w tej tabeli. Jego unikalność w obrębie tabeli jest kluczowa, ponieważ pozwala na zapobieganie duplikatom i zapewnia integralność danych. Na przykład, w tabeli przechowującej informacje o klientach, kolumna z identyfikatorem klienta (np. ID klienta) powinna być kluczem podstawowym, ponieważ każdy klient musi mieć unikalny identyfikator. Standardy baz danych, takie jak model relacyjny, podkreślają znaczenie kluczy podstawowych w zapewnieniu stabilności i efektywności w przechowywaniu danych. Użycie klucza podstawowego również wpływa na wydajność operacji wyszukiwania i łączenia tabel, dlatego w projektowaniu baz danych należy starannie dobierać atrybuty, które będą pełnić tę rolę, aby spełniały wymagania unikalności oraz wydajności.

Pytanie 24

Testy związane ze skalowalnością aplikacji mają na celu zweryfikowanie, czy program

A. jest właściwie opisany w dokumentacji
B. jest chroniony przed nieautoryzowanymi działaniami, np. dzieleniem przez zero
C. jest w stanie funkcjonować przy zaplanowanym i większym obciążeniu
D. posiada odpowiednie funkcje
Odpowiedź mówiąca o tym, że aplikacja potrafi działać przy zakładanym i większym obciążeniu, jest kluczowa, gdyż skalowalność oprogramowania odnosi się do zdolności systemu do efektywnego działania w warunkach wzrastającego zapotrzebowania na zasoby. Oznacza to, że aplikacja powinna być w stanie obsługiwać rosnącą liczbę użytkowników, transakcji lub innych operacji bez degradacji wydajności. Przykładem może być system e-commerce, który w okresie wyprzedaży musi obsługiwać znacznie więcej użytkowników niż w normalnych okolicznościach. Aby zapewnić skalowalność, programiści mogą wykorzystywać różne architektury, takie jak mikroserwisy, które pozwalają na niezależne skalowanie poszczególnych komponentów aplikacji. Dobre praktyki obejmują również wykorzystanie chmurowych rozwiązań, takich jak AWS czy Azure, które oferują elastyczność i automatyczne skalowanie w odpowiedzi na wzrost obciążenia. Warto także wdrażać mechanizmy monitorowania i optymalizacji wydajności, aby na bieżąco dostosowywać zasoby do potrzeb użytkowników.

Pytanie 25

Jakie polecenie należy zastosować, aby wysłać dane przy pomocy funkcji mysqli_query() w skrypcie PHP, który dodaje informacje z formularza umieszczonego na stronie internetowej do bazy danych?

A. SELECT
B. INSERT INTO
C. ALTER
D. UPDATE
Odpowiedź 'INSERT INTO' jest poprawna, ponieważ jest to standardowa kwerenda SQL używana do wstawiania nowych rekordów do tabel w bazie danych. W kontekście PHP i funkcji mysqli_query(), wstawianie danych z formularza zazwyczaj obejmuje przygotowanie kwerendy, która zawiera instrukcję INSERT INTO wraz z nazwą tabeli oraz danymi, które mają zostać dodane. Na przykład, jeśli mamy formularz z polami 'imie' i 'nazwisko', kwerenda mogłaby wyglądać następująco: 'INSERT INTO uzytkownicy (imie, nazwisko) VALUES (?, ?)'. Użycie znaków zapytania (?) jest zgodne z najlepszymi praktykami, ponieważ pozwala na bezpieczne wprowadzenie danych, chroniąc aplikację przed atakami SQL Injection. Dobrą praktyką jest również używanie PDO lub MySQLi z przygotowanymi zapytaniami, co zwiększa bezpieczeństwo oraz efektywność kodu. W ten sposób można skutecznie wstawiać dane do bazy danych, zachowując przy tym standardy programistyczne.

Pytanie 26

Funkcja agregująca MIN w języku SQL ma na celu określenie

A. liczby wierszy zwróconych przez kwerendę
B. liczby znaków w rekordach zwróconych przez kwerendę
C. średniej wartości kolumny obserwowanej w wyniku zapytania
D. wartości minimalnej z kolumny zwróconej przez kwerendę
Funkcja agregująca MIN w języku SQL służy do wyznaczania wartości minimalnej w zadanej kolumnie, co jest kluczowym aspektem analizy danych w bazach danych. Przykładowo, gdy korzystasz z zapytania SELECT MIN(wiek) FROM pracownicy, otrzymasz najniższy wiek pracownika w tabeli. To narzędzie jest niezwykle przydatne w raportowaniu oraz przy podejmowaniu decyzji opartych na danych, gdyż pozwala na szybkie określenie najniższych wartości w zestawieniach, takich jak najstarszy pracownik w firmie, najniższa cena produktu, czy najkrótszy czas realizacji zamówienia. W praktyce, używanie funkcji MIN pomaga organizacjom w identyfikacji problemów oraz w optymalizacji procesów. Stosowanie funkcji agregujących, takich jak MIN, jest zgodne z najlepszymi praktykami w zakresie analizy danych, ponieważ umożliwia efektywne przetwarzanie dużych zbiorów informacji i wyciąganie z nich wartościowych wniosków, co jest kluczowe w zarządzaniu danymi i tworzeniu raportów analitycznych.

Pytanie 27

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 28

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

A. formularz
B. kwerenda
C. raport
D. makropolecenie
Raport to narzędzie, które umożliwia zgrupowanie i prezentowanie informacji z wielu rekordów, co jest kluczowe w kontekście analizy danych oraz podejmowania decyzji biznesowych. Tworzenie raportów pozwala na syntetyzowanie informacji, co sprawia, że są one bardziej zrozumiałe dla odbiorców. W praktyce raporty mogą być wykorzystywane do monitorowania wyników sprzedaży, analiz finansowych, badań rynkowych czy oceny efektywności działań marketingowych. Dzięki zastosowaniu narzędzi do raportowania, takich jak systemy Business Intelligence, możliwe jest generowanie szczegółowych zestawień oraz wizualizacji, które wspierają decyzje strategiczne. Dobre praktyki w zakresie raportowania obejmują jasne definiowanie celów raportu, dobór odpowiednich wskaźników KPI oraz zastosowanie wizualizacji danych, co pozwala na lepsze zrozumienie przedstawianych informacji. W kontekście standardów branżowych, raporty powinny być tworzone zgodnie z zasadami klarowności, precyzji i adekwatności, aby skutecznie odpowiadały na potrzeby użytkowników.

Pytanie 29

W języku SQL podczas używania polecenia CREATE TABLE atrybut, który wskazuje na to, która kolumna jest kluczem podstawowym, to

A. GŁÓWNY KLUCZ
B. UNIQUE
C. PRIMARY KEY
D. IDENTITY FIELD
Odpowiedź "PRIMARY KEY" jest prawidłowa, ponieważ w języku SQL klucz podstawowy (ang. primary key) to unikalny identyfikator dla każdego rekordu w tabeli. Klucz podstawowy zapewnia, że żadne dwa rekordy nie mają tej samej wartości w kolumnie, co jest kluczowe dla integralności danych. Zwyczajowo klucz podstawowy definiuje się podczas tworzenia tabeli za pomocą polecenia CREATE TABLE, co zwiększa wydajność operacji wyszukiwania oraz modyfikacji danych. Przykład wykorzystania: tworząc tabelę pracowników, można zdefiniować kolumnę "id_pracownika" jako klucz podstawowy, co zapewni, że każdy pracownik będzie miał unikalny identyfikator. W standardach SQL zgodnych z ANSI, klucz podstawowy może składać się z jednej lub więcej kolumn, co pozwala na tworzenie bardziej skomplikowanych struktur danych. Dobrą praktyką jest również oznaczanie klucza podstawowego jako NOT NULL, co uniemożliwia wprowadzenie pustych wartości, co dodatkowo zwiększa integralność bazy danych.

Pytanie 30

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

A. utworzyć indeks
B. dodać klucz obcy
C. dodać więzy integralności
D. stworzyć osobną tabelę przechowującą tylko te pola
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 31

Jakie zapytanie należy użyć, aby wyświetlić tylko imię, nazwisko oraz ulicę wszystkich mieszkańców?

Ilustracja do pytania
A. SELECT imie, nazwisko, ulica FROM Mieszkancy, Adresy ON Mieszkancy.Adresy_id = Adresy.id
B. SELECT imie, nazwisko, ulica FROM Mieszkancy JOIN Adresy ON Mieszkancy.Adresy_id = Adresy.id
C. SELECT * FROM Mieszkancy, Adresy ON Mieszkancy.id = Adresy.id
D. SELECT * FROM Mieszkancy JOIN Adresy ON Adresy.id = Mieszkancy.Adresy.id
Odpowiedź SELECT imie nazwisko ulica FROM Mieszkancy JOIN Adresy ON Mieszkancy.Adresy_id = Adresy.id jest trafna, bo korzysta z dobrej składni dołączenia tabel w SQL. Dzięki temu wyciągasz tylko te kolumny, które są Ci potrzebne. W tym przypadku, używając JOIN, łączysz tabele Mieszkancy i Adresy na podstawie odpowiednich kluczy, co dobrze odpowiada zasadom baz danych. Klucz obcy Adresy_id w tabeli Mieszkancy wskazuje na id w tabeli Adresy, co jest super ważne, bo zapewnia, że dane są spójne. To zapytanie pokazuje, jak optymalizować SQL, bo ogranicza wybór do niezbędnych kolumn (imie, nazwisko, ulica), co zmniejsza obciążenie bazy i przyspiesza wyrzucanie wyników. W praktyce takie podejście jest fajne do efektywnego zarządzania danymi w relacyjnych bazach. Dobrze jest mieć w głowie, jak używać JOIN oraz wybierać konkretne kolumny, bo to naprawdę pomaga w pisaniu bardziej zrozumiałych i wydajnych zapytań, co jest przydatne w pracy zawodowej.

Pytanie 32

W tabeli samochody w bazie danych, pole kolor może przyjmować jedynie wartości zdefiniowane w słowniku lakier. Jaką kwerendę należy wykorzystać, aby ustanowić relację między tabelami samochody a lakier?

A. ALTER TABLE samochody ADD FOREIGN KEY (barwa) REFERENCES samochody(kolor);
B. ALTER TABLE samochody ADD FOREIGN KEY (kolor) REFERENCES lakier(lakierId);
C. ALTER TABLE samochody ADD FOREIGN KEY kolor REFERENCES lakier;
D. ALTER TABLE samochody ADD FOREIGN KEY barwa REFERENCES samochody.lakier;
Aby połączyć tabele 'samochody' i 'lakier' za pomocą klucza obcego, należy zastosować kwerendę ALTER TABLE samochody ADD FOREIGN KEY (kolor) REFERENCES lakier(lakierId);. W tym przypadku 'kolor' w tabeli 'samochody' odnosi się do identyfikatora 'lakierId' w tabeli 'lakier', co zapewnia integralność referencyjną między tymi dwoma tabelami. Klucz obcy jest mechanizmem, który pozwala na zapewnienie, że wartości w kolumnie 'kolor' w tabeli 'samochody' muszą odpowiadać wartościom w kolumnie 'lakierId' w tabeli 'lakier', co zapobiega wprowadzeniu danych, które nie mają odpowiednika w tabeli 'lakier'. Przykładowo, jeżeli próbujemy dodać samochód w kolorze, który nie istnieje w tabeli 'lakier', system nie pozwoli na to działanie. Taka struktura bazy danych jest zgodna z zasadami normalizacji, która ma na celu eliminację redundancji danych oraz zwiększenie ich spójności. Stosowanie kluczy obcych jest standardem w projektowaniu relacyjnych baz danych, ponieważ ułatwia zarządzanie danymi oraz ich integralność.

Pytanie 33

Aby przywrócić bazę danych o nazwie Sklep z pliku towary.sql, należy w miejsce gwiazdek wpisać nazwę użytkownika. Polecenie wygląda następująco:

mysql -u ******* -p Sklep < towary.sql
A. nazwę odzyskiwanej tabeli.
B. liczbę importowanych obiektów bazy.
C. nazwę użytkownika.
D. adres IP bazy danych.
W tym poleceniu kluczowy jest fragment „-u *******”. Przełącznik -u w kliencie mysql zawsze oznacza nazwę użytkownika bazy danych, pod której kontem chcemy się połączyć z serwerem MySQL/MariaDB. Dlatego w miejsce gwiazdek wpisujemy konkretną nazwę użytkownika, np. root, admin, albo konto utworzone specjalnie do obsługi danej aplikacji, np. sklep_user. To jest standardowa składnia narzędzia wiersza poleceń mysql: mysql -u NAZWA_UŻYTKOWNIKA -p NAZWA_BAZY < plik.sql. Opcja -p mówi, że program ma poprosić o hasło dla tego użytkownika (nie podajemy hasła wprost w poleceniu, ze względów bezpieczeństwa). Nazwa bazy danych, do której importujemy dane, pojawia się dalej, w tym przykładzie jest to Sklep. Z kolei po znaku < podajemy plik z kopią bazy, czyli skryptem SQL zawierającym instrukcje CREATE TABLE, INSERT i inne potrzebne do odtworzenia struktury i danych. W praktyce przy przywracaniu baz danych zawsze łączymy się jako użytkownik, który ma odpowiednie uprawnienia: przynajmniej do tworzenia tabel i wstawiania danych w tej bazie (INSERT, CREATE, ALTER, czasem DROP). W środowiskach produkcyjnych dobrą praktyką jest nie używać konta root, tylko dedykowanego użytkownika z ograniczonymi uprawnieniami. Moim zdaniem warto też pamiętać, że adres IP serwera bazy (opcjonalnie podawany przez -h) i port (-P) to zupełnie inne parametry niż -u. One określają, z jakim serwerem się łączymy, a -u i -p – kim się logujemy. To rozróżnienie jest bardzo ważne przy codziennej administracji i automatyzacji backupów oraz importów.

Pytanie 34

Podczas zapisywania hasła użytkownika w serwisie WWW, na przykład w bankowości internetowej, aby zabezpieczyć je przed odczytaniem, zazwyczaj stosuje się funkcję

A. mieszających
B. abstrakcyjnych
C. klucza
D. cyklometrycznych
Użycie klucza do zabezpieczania haseł użytkowników jest standardową praktyką w dziedzinie bezpieczeństwa informatycznego. Klucz, który może być generowany na podstawie hasła lub stanowić odrębny, losowy ciąg znaków, jest stosowany w procesach szyfrowania. Dzięki temu, nawet jeśli dane hasło zostanie przechwycone, bez klucza nie jest możliwe jego odczytanie. W praktyce powszechnie wykorzystuje się algorytmy kryptograficzne, takie jak AES (Advanced Encryption Standard), które wymagają kluczy do szyfrowania i deszyfrowania informacji. W kontekście hasła użytkownika, stosuje się także techniki takie jak hashowanie, gdzie dane są przekształcane w unikalny skrót. Przykładem jest funkcja bcrypt, która nie tylko przechowuje hasło, ale i dodaje sól, co dodatkowo utrudnia ataki słownikowe. Takie podejście do zarządzania hasłami jest zgodne z najlepszymi praktykami, jak OWASP Password Storage Cheat Sheet, która zaleca unikanie przechowywania haseł w formie czystego tekstu oraz stosowanie silnych algorytmów kryptograficznych.

Pytanie 35

W celu utworzenia różnicowej kopii zapasowej bazy danych na serwerze MSSQL, konieczne jest użycie klauzuli

A. WITH FORMAT
B. FULL
C. DIFFERENTIAL
D. RESTORE
Odpowiedź 'DIFFERENTIAL' jest prawidłowa, ponieważ klauzula ta jest używana do tworzenia różnicowych kopii zapasowych bazy danych w systemie Microsoft SQL Server. Różnicowa kopia zapasowa zapisuje tylko te dane, które zmieniły się od ostatniej pełnej kopii zapasowej, co znacznie oszczędza czas i miejsca na dysku. W praktyce, aby wykonać różnicową kopię zapasową, stosuje się polecenie BACKUP z klauzulą DIFFERENTIAL. Na przykład: 'BACKUP DATABASE nazwa_bazy TO DISK = 'ścieżka_do_pliku.bak' WITH DIFFERENTIAL;'. Korzystanie z różnicowych kopii zapasowych jest zalecane w strategiach backupowych, gdyż zmniejsza czas potrzebny do przywrócenia systemu po awarii, a także przyspiesza proces tworzenia kopii. W dobrych praktykach branżowych, po zdefiniowaniu planu kopii zapasowych, rekomenduje się regularne testowanie procesu przywracania, aby upewnić się, że wszystkie kopie zapasowe są skuteczne i funkcjonalne.

Pytanie 36

W języku PHP uzyskano wyniki kwerend z bazy danych przy użyciu polecenia mysql_query. Aby wydobyć z otrzymanej kwerendy pojedynczy wiersz danych, konieczne jest użycie polecenia

A. mysql_list_fields
B. mysql_fetch_row
C. mysql_field_len
D. mysql_fetch_lengths
Odpowiedź mysql_fetch_row jest poprawna, ponieważ to funkcja, która pozwala na pobranie pojedynczego wiersza danych z zasobu zwróconego przez mysql_query. Zwraca ona tablicę, która zawiera wartości poszczególnych pól w wierszu, co umożliwia ich dalsze przetwarzanie. Dzięki tej funkcji programista może łatwo iterować przez wyniki kwerendy, co jest kluczowe w przypadku przetwarzania danych z baz danych. Na przykład, po wykonaniu kwerendy SELECT, można użyć pętli while, aby pobierać kolejne wiersze danych i je wyświetlać. Dobrą praktyką jest również sprawdzenie, czy zasób kwerendy jest poprawny przed użyciem tej funkcji, co pozwoli uniknąć błędów w czasie wykonywania skryptu. Warto dodać, że w nowszych wersjach PHP zaleca się korzystanie z rozszerzenia mysqli lub PDO, które oferują bardziej zaawansowane możliwości i większe bezpieczeństwo przy pracy z bazami danych.

Pytanie 37

Jak nazywa się sposób udostępniania bazy danych w Microsoft Access, który obejmuje wszystkie obiekty bazy znajdujące się na dysku sieciowym i używane jednocześnie przez różne osoby?

A. dzielonej bazy danych
B. folderu sieciowego
C. witryny programu SharePoint
D. serwera bazy danych
Folder sieciowy to metoda udostępniania bazy danych w Microsoft Access, która umożliwia kilku użytkownikom jednoczesny dostęp do tej samej bazy danych umieszczonej na dysku sieciowym. Taka forma udostępniania jest bardzo praktyczna w środowiskach współpracy, gdzie wiele osób musi korzystać z tych samych danych. Użytkownicy mogą otwierać, edytować i zapisywać obiekty bazy danych, co zwiększa efektywność pracy zespołowej. Kluczowe jest, aby folder sieciowy był odpowiednio skonfigurowany z uprawnieniami dostępu, co zapewnia zarówno współdzielenie zasobów, jak i bezpieczeństwo danych. Dobrą praktyką jest także regularne tworzenie kopii zapasowych bazy danych oraz zarządzanie wersjami, co pozwala na minimalizację ryzyka utraty danych. W kontekście standardów branżowych, korzystanie z udostępnionych folderów sieciowych powinno być zgodne z polityką bezpieczeństwa organizacji oraz zasadami zarządzania danymi.

Pytanie 38

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

A. Odtworzenie bazy z kopii zapasowej
B. Wykonanie replikacji bazy danych
C. Utworzenie nowej bazy i przeniesienie do niej tabel
D. Próba naprawy za pomocą polecenia REPAIR
Wykonanie replikacji bazy danych nie pomoże w naprawie uszkodzonej bazy MySQL, ponieważ replikacja jest procesem, który tworzy kopię danych z jednej bazy danych do drugiej. Gdy źródłowa baza danych jest uszkodzona, replikacja jedynie skopiuje te uszkodzone dane do bazy docelowej, co prowadzi do dalszych problemów. Zamiast naprawić uszkodzenia, replikacja może nawet pogorszyć sytuację, ponieważ błędne dane zostaną powielone. W praktyce, zanim podejmie się próbę replikacji, konieczne jest ustalenie, czy źródłowa baza danych jest w dobrym stanie. Warto również zwrócić uwagę na standardy zarządzania bazami danych, które zalecają regularne wykonywanie kopii zapasowych oraz monitorowanie stanu bazy danych. W przypadku uszkodzeń zawsze lepiej jest najpierw spróbować naprawić bazę lub przywrócić ją z kopii zapasowej, zanim podejmie się działania związane z replikacją, aby uniknąć propagacji błędów.

Pytanie 39

Aby wprowadzić dane do bazy przy użyciu polecenia PHP, konieczne jest przekazanie do jego parametrów

A. identyfikator połączenia z bazą danych w $zm1 i zapytanie INSERT INTO w $zm2
B. id wiersza w $zm1 i zapytanie INSERT INTO w $zm2
C. NULL w $zm1, aby baza mogła zapisać kod błędu i zapytanie SELECT w $zm2
D. identyfikator połączenia z bazą danych w $zm1 i zapytanie SELECT w $zm2
Poprawna odpowiedź wskazuje, że w parametrze $zm1 należy przekazać identyfikator połączenia z bazą danych, a w $zm2 zapytanie INSERT INTO. To podejście jest zgodne z zasadami korzystania z funkcji mysqli_query w PHP, która jest używana do wykonywania zapytań SQL na bazie danych. Identyfikator połączenia jest niezbędny, ponieważ pozwala PHP zidentyfikować, z którą bazą danych będzie nawiązywało interakcję. Zapytanie INSERT INTO umożliwia dodawanie nowych rekordów do określonej tabeli. Na przykład, jeśli chcemy dodać nowego użytkownika do tabeli 'users', możemy użyć polecenia: mysqli_query($connection, "INSERT INTO users (name, email) VALUES ('Jan Kowalski', '[email protected]')"). Przestrzeganie tych zasad jest zgodne z praktykami bezpieczeństwa, takimi jak unikanie SQL Injection, które można osiągnąć poprzez odpowiednie przygotowywanie zapytań oraz walidację danych przed ich wstawieniem.

Pytanie 40

Którą relację w projekcie bazy danych należy ustalić między tabelami widocznymi na ilustracji zakładając, że każdy klient sklepu internetowego dokona przynajmniej dwóch zamówień?

Ilustracja do pytania
A. 1:1
B. n:n
C. 1:n, gdzie 1 jest po stronie Zamówienia, a wiele po stronie Klienta
D. 1:n, gdzie 1 jest po stronie Klienta, a wiele po stronie Zamówienia
Poprawnie wskazana relacja 1:n (jeden do wielu), gdzie „1” jest po stronie tabeli Klient, a „n” po stronie tabeli Zamówienie, dokładnie odzwierciedla opisany przypadek biznesowy: jeden klient sklepu internetowego może złożyć wiele zamówień, a każde zamówienie należy do jednego, konkretnego klienta. W praktyce projektowania relacyjnych baz danych oznacza to, że w tabeli Zamówienie umieszczamy klucz obcy (np. kolumnę id_klienta), który wskazuje na klucz główny w tabeli Klient (np. id_klienta jako PRIMARY KEY). To jest klasyczny przykład relacji nadrzędny–podrzędny (parent–child). Z mojego doświadczenia w systemach e‑commerce taka struktura jest standardem, bo pozwala łatwo wykonywać typowe kwerendy: wyszukiwanie wszystkich zamówień danego klienta, liczenie wartości zamówień na klienta, analizę historii zakupów. Dodatkowo założenie, że każdy klient dokona co najmniej dwóch zamówień, wpływa na tzw. krotność minimalną po stronie Zamówienia (min 2), ale nie zmienia samego typu relacji – nadal jest to 1:n. W modelu logicznym i fizycznym realizujemy to przez odpowiednie więzy integralności: klucz główny w tabeli Klient i klucz obcy w tabeli Zamówienie z ON DELETE RESTRICT lub CASCADE (w zależności od polityki biznesowej). Taka relacja ułatwia normalizację danych: dane klienta trzymamy w jednym miejscu, unikamy duplikacji w wielu zamówieniach, a w razie zmiany np. adresu e‑mail aktualizujemy tylko jeden rekord. W dobrze zaprojektowanych schematach (np. zgodnych z 3NF) dokładnie tak modeluje się powiązanie Klient–Zamówienie.