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: 24 kwietnia 2026 13:27
  • Data zakończenia: 24 kwietnia 2026 13:49

Egzamin zdany!

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

W podanym fragmencie zapytania w języku SQL, komenda SELECT jest używana do zwrócenia SELECT COUNT(wartosc) FROM …

A. summy w kolumnie wartosc
B. średniej w kolumnie wartosc
C. ilości wierszy
D. średniej wartości z tabeli
No, trochę jest tu pomyłka. Ludzie często mylą to zapytanie SELECT COUNT(wartosc) z sumowaniem wartości, co nie jest do końca poprawne. Funkcja COUNT nie sumuje wartości, ona tylko liczy, ile jest niepustych wierszy. Więc jeżeli ktoś twierdzi, że to daje średnią, to wprowadza w błąd – średnią liczymy z pomocą funkcji AVG, a nie COUNT. W kolumnie 'wartosc' mogą być różne liczby, a suma wartości nie ma wiele wspólnego z tym, ile jest wierszy. Dobrze jest pamiętać, że średnia to coś innego niż liczba wierszy, co jest ważne do zrozumienia, jak działają zapytania w SQL. Jeśli ktoś myli te funkcje, to może się zgubić w analizie danych. Więc ogólnie mówiąc, warto wiedzieć, czym różnią się COUNT, AVG i inne funkcje agregujące, bo to kluczowe do ogarnięcia pracy z bazami danych.

Pytanie 2

Jakiego rodzaju oprogramowanie narzędziowe powinno być zainstalowane, aby umożliwić użytkownikowi przeprowadzanie operacji na zgromadzonych danych?

A. Otwarty mechanizm komunikacji bazy danych
B. System Zarządzania Bazą Danych (SZBD)
C. Klucz obcy
D. Obiektowy System Zarządzania Bazą Danych
System Zarządzania Bazą Danych, czyli SZBD, to coś, co naprawdę ma duże znaczenie w organizacjach, jeśli mówimy o danych. Dzięki niemu możemy działać z danymi znacznie sprawniej – przechowywać je, aktualizować, usuwać i robić wiele innych rzeczy. To taki pomost między tym, co robią użytkownicy, a samymi danymi. Przy takich systemach jak MySQL, PostgreSQL czy Oracle Database, możemy korzystać z super funkcji, takich jak transakcje czy zarządzanie użytkownikami. To nie tylko ułatwia życie, ale też pozwala na lepsze działania. No i nie zapominaj, że standardy jak SQL to klucz do komunikacji z bazami, niezależnie od technologii. Można też mówić o dobrych praktykach, jak robienie kopii zapasowych czy monitorowanie wydajności. Właściwie, wprowadzenie takiego systemu to fundament do skutecznego zarządzania danymi w każdej organizacji, więc warto się tym zająć.

Pytanie 3

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. Utworzenie nowej bazy i przeniesienie do niej tabel
C. Wykonanie replikacji bazy danych
D. Próba naprawy za pomocą polecenia REPAIR
Próba naprawy bazy danych za pomocą polecenia REPAIR może wydawać się sensownym rozwiązaniem, jednak nie zawsze jest skuteczna. REPAIR działa jedynie na tabelach, które są w formacie MyISAM, a w przypadku tabel InnoDB, które są bardziej powszechne w nowoczesnych aplikacjach, to polecenie jest bezsilne. Działania związane z naprawą w przypadku uszkodzeń bazy powinny skupiać się na odpowiednich narzędziach i procedurach specyficznych dla silnika bazy danych. Odtworzenie bazy z kopii bezpieczeństwa to proces, który jest kluczowy w zarządzaniu danymi. Jeśli mamy aktualną kopię zapasową, możemy szybko wrócić do stanu sprzed uszkodzenia, co jest najskuteczniejszym sposobem na wyeliminowanie problemów z danymi. Stworzenie nowej bazy i przeniesienie do niej tabel również nie rozwiązuje problemu, jeżeli tabele te zawierają uszkodzone dane. Tylko przeniesienie struktury tabeli nie naprawi błędów, które już występują w danych. W każdym przypadku, kluczowym krokiem przed podjęciem jakiejkolwiek akcji powinna być analiza przyczyn uszkodzenia oraz zabezpieczenie istniejących danych, zanim podejmie się dalsze kroki.

Pytanie 4

Podany fragment kodu PHP ma na celu wstawienie wartości z zmiennych $a, $b, $c do bazy danych, w tabeli dane. Tabela ta składa się z czterech kolumn, z których pierwsza to autoinkrementowany klucz podstawowy. Które z zapytań powinno być przypisane do zmiennej $zapytanie? ``````

A. ```INSERT INTO dane VALUES (NULL, '$a', '$b', '$c');```
B. ```SELECT '$a', '$b', '$c' FROM dane;```
C. ```INSERT INTO dane VALUES ('$a', '$b', '$c');```
D. ```SELECT NULL, '$a', '$b', '$c' FROM dane;```
Odpowiedzi, które zaczynają się od polecenia SELECT, są błędne, ponieważ nie mają na celu wstawienia nowych danych do tabeli. SELECT jest używane do pobierania danych z bazy danych, a nie do ich dodawania. Polecenie "SELECT '$a', '$b', '$c' FROM dane;" jedynie wyciąga dane, nie wprowadza żadnych zmian w tabeli, co nie spełnia wymagań zadania. Również "SELECT NULL, '$a', '$b', '$c' FROM dane;" działa podobnie, wciąż pozostając w zakresie odczytu danych, a nie ich dodawania. Dwa pierwsze polecenia nie tylko nie są związane z wstawianiem danych, ale również mogą wprowadzać użytkownika w błąd, sugerując, że ich celem jest modyfikacja bazy. Kolejna odpowiedź "INSERT INTO dane VALUES ('$a', '$b', '$c');" jest błędna, ponieważ nie uwzględnia klucza głównego, który powinien być autoinkrementowany. Przekazanie NULL jako pierwszego argumentu jest kluczowe, ponieważ pozwala bazie danych na zarządzanie identyfikatorem. Typowe błędy myślowe obejmują pomylenie operacji wstawiania z operacjami odczytu oraz nieprawidłowe przypuszczenie, że można pominąć kolumny kluczy głównych w zapytaniach wstawiających.

Pytanie 5

Dodanie ograniczenia klucza obcego w taki sposób, aby kolumna Klasy_id z tabeli Uczniowie była powiązana z kolumną id w tabeli Klasy zostanie wykonane przy użyciu polecenia

Ilustracja do pytania
A. ALTER TABLE Uczniowie ADD FOREIGN KEY FKKlasy FOREIGN KEY(Klasy_id) REFERENCES Klasy(id);
B. ALTER TABLE Uczniowie DROP FOREIGN KEY FKKlasy FOREIGN KEY(Klasy_id) REFERENCES Klasy(id);
C. ALTER TABLE Uczniowie DROP CONSTRAINT FKKlasy FOREIGN KEY(Klasy_id) REFERENCES Klasy(id);
D. ALTER TABLE Uczniowie ADD CONSTRAINT FKKlasy FOREIGN KEY(Klasy_id) REFERENCES Klasy(id);
W poleceniach dotyczących kluczy obcych bardzo łatwo pomylić operacje `ADD` i `DROP` oraz prawidłową składnię dla poszczególnych dialektów SQL. W przedstawionych błędnych odpowiedziach pojawia się kilka typowych nieporozumień. Część z nich próbuje używać słowa kluczowego `DROP`, które służy do usuwania istniejącego ograniczenia, a nie do jego tworzenia. Jeżeli naszym celem jest dopiero dodanie relacji między tabelą `Uczniowie` a tabelą `Klasy`, to użycie `DROP CONSTRAINT` albo `DROP FOREIGN KEY` jest po prostu logicznie sprzeczne z zadaniem – takie polecenia mogłyby mieć sens tylko wtedy, gdy klucz obcy `FKKlasy` już istnieje i chcemy go zlikwidować. W praktyce takie pomyłki wynikają z mylenia dwóch kroków: projektowania schematu (gdzie klucze dopiero dodajemy) z refaktoryzacją istniejącej bazy (gdzie często coś usuwamy i tworzymy na nowo). Kolejna sprawa to składnia `ADD FOREIGN KEY FKKlasy FOREIGN KEY(...)`. W standardowych systemach zarządzania bazą danych najpierw podaje się `ADD CONSTRAINT nazwa`, a dopiero później słowo `FOREIGN KEY` wraz z listą kolumn. Wpychanie nazwy ograniczenia między `ADD FOREIGN KEY` a definicję kolumn nie jest zgodne z zasadami składni SQL i po prostu nie zadziała. Moim zdaniem to efekt mieszania różnych przykładów z internetu, gdzie w jednych pokazuje się nazwane ograniczenia (`ADD CONSTRAINT ...`), a w innych anonimowe (`ADD FOREIGN KEY (...) REFERENCES ...`), bez nazwy. Dodatkowo, używanie w jednym poleceniu jednocześnie `DROP` i całej definicji `FOREIGN KEY(Klasy_id) REFERENCES Klasy(id)` jest nielogiczne: przy usuwaniu ograniczenia podajemy wyłącznie jego nazwę, bo silnik bazy już zna szczegóły definicji i nie trzeba ich powtarzać. W poprawnym podejściu zawsze zadajemy sobie pytanie: czy ja chcę coś dodać, czy usunąć, i czy składnia, której używam, odpowiada dokumentacji konkretnego systemu (np. SQL Server, MySQL, PostgreSQL). Stosowanie czytelnej, udokumentowanej formy `ALTER TABLE ... ADD CONSTRAINT ... FOREIGN KEY ... REFERENCES ...` jest zgodne z dobrymi praktykami i oszczędza sporo nerwów przy późniejszej administracji oraz migracjach schematu.

Pytanie 6

Jakiego polecenia SQL należy użyć, aby usunąć z tabeli artykuly wiersze, które zawierają słowo "sto" w dowolnej lokalizacji pola tresc?

A. DELETE * FROM artykuly WHERE tresc = "%sto%";
B. DELETE FROM artykuly WHERE tresc = "%sto%";
C. DELETE * FROM artykuly WHERE tresc LIKE "%sto%";
D. DELETE FROM artykuly WHERE tresc LIKE "%sto%";
Wszystkie błędne odpowiedzi opierają się na niezrozumieniu podstawowej funkcji operatora DELETE w języku SQL oraz zasad dotyczących dopasowywania wzorców. Przykłady takie jak 'DELETE * FROM artykuly WHERE tresc = "%sto%";' oraz 'DELETE * FROM artykuly WHERE tresc LIKE "%sto%";' zawierają nieprawidłowe użycie składni, które nie jest zgodne z standardem SQL. W SQL nie używa się znaku '*' w poleceniach DELETE, gdyż zapis 'DELETE * FROM' jest poprawny tylko dla zapytań SELECT. W kontekście usuwania danych, należy używać jedynie 'DELETE FROM', co jest wystarczające dla określenia, z jakiej tabeli mają zostać usunięte rekordy. Ponadto, pierwsza błędna odpowiedź zdobija wszystkie potencjalne błędy związane z niepoprawnym użyciem operatora '='. Operator '=' wymaga dokładnego dopasowania, co oznacza, że nie może być stosowany do wyszukiwania wzorców, w przeciwieństwie do operatora LIKE, który umożliwia elastyczne dopasowanie z użyciem znaków wieloznacznych. Typowym błędem jest więc przekonanie, że '=' oraz LIKE mogą być stosowane zamiennie bez uwzględnienia, że '=' nie przyjmuje znaków procentowych. Dlatego kluczowe jest, aby przed użyciem poleceń SQL upewnić się, że rozumie się ich składnię oraz zasady działania, co pozwoli uniknąć wielu pułapek w codziennej pracy z bazami danych.

Pytanie 7

Tabela filmy zawiera klucz główny id oraz klucz obcy rezyserID. Tabela reżyserzy posiada klucz główny id. Obie tabele są powiązane relacją jeden do wielu, gdzie strona reżyserzy jest po stronie jeden, a filmy po stronie wiele. Aby wykonać kwerendę SELECT łączącą tabele filmy i reżyserzy, należy użyć zapisu

A. ... filmy JOIN rezyserzy ON filmy.id=rezyserzy.id ...
B. ... filmy JOIN rezyserzy ON filmy.rezyserID=rezyserzy.filmyID ...
C. ... filmy JOIN rezyserzy ON filmy.rezyserzyID=rezyserzy.id ...
D. ... filmy JOIN rezyserzy ON filmy.id=rezyserzy.filmyID ...
Wybór niepoprawnej odpowiedzi może wynikać z nieporozumienia co do relacji między tabelami i ich kluczami. W pierwszej opcji, warunek łączenia jest błędny, ponieważ użyto 'filmy.id' zamiast 'filmy.rezyserID'. Klucz główny 'id' w tabeli 'filmy' nie jest powiązany z kluczem głównym w tabeli 'rezyserzy', co prowadzi do nieprawidłowego łączenia. W drugiej opcji, podobnie jak w pierwszej, jest błędne odniesienie, ponieważ 'filmy.filmyID' nie istnieje jako klucz w tabeli 'filmy', co skutkuje niezgodnością, ponieważ 'filmy' nie powinny mieć klucza o takiej nazwie. Rozważając kolejną odpowiedź, zauważamy, że 'filmy.rezyserzyID' również jest niewłaściwe, ponieważ nie jest zgodne z definicją kluczy obcych, które powinny odnosić się do 'rezyserID'. Każda z tych niepoprawnych odpowiedzi nie tylko prowadzi do błędnych wyników, ale także narusza zasady normalizacji bazy danych, co może skutkować problemami z integralnością oraz błędami w analizach danych.

Pytanie 8

W tabeli zwierzeta znajdują się kolumny nazwa, gatunek, gromada, cechy, dlugosc_zycia. Aby uzyskać listę nazw zwierząt, które dożywają przynajmniej 20 lat oraz są ssakami, jakie zapytanie należy wykonać?

A. SELECT nazwa FROM zwierzeta WHERE gromada = 'ssak';
B. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >= 20 AND gromada = 'ssak';
C. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >= 20 OR gromada = 'ssak';
D. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >= 20;
Wybrana odpowiedź jest prawidłowa, ponieważ spełnia wymagania określone w pytaniu, które dotyczą zarówno długości życia zwierząt, jak i ich przynależności do grupy ssaków. Zapytanie SQL 'SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >=20 AND gromada = ‘ssak‘;' precyzyjnie definiuje warunki, które muszą być spełnione, aby uzyskać oczekiwane wyniki. Warunek 'dlugosc_zycia >=20' zapewnia, że tylko zwierzęta o długości życia wynoszącej co najmniej 20 lat będą uwzględnione w rezultatach, co jest kluczowe dla osiągnięcia zamierzonego celu. Dodatkowo, użycie operatora 'AND' łączy oba kryteria, co oznacza, że obie zasady muszą być spełnione jednocześnie. Dzięki temu zapytanie jest zwięzłe i efektywne, co jest zgodne z najlepszymi praktykami w dziedzinie baz danych, gdzie ważne jest, aby unikać zbędnych danych w wynikach, co usprawnia proces przetwarzania informacji. Ta metoda jest szczególnie przydatna w kontekście analizy danych i raportowania, gdzie precyzyjne filtry pomagają w uzyskaniu istotnych informacji.

Pytanie 9

Aby zainstalować system CMS Joomla!, potrzebne jest środowisko

A. Apache oraz PHP
B. IIS, Perl oraz MySQL
C. PHP oraz MySQL
D. Apache, PHP i MySQL
Aby uruchomić system CMS Joomla!, niezbędne jest środowisko składające się z serwera Apache, języka PHP oraz bazy danych MySQL. Apache jest jednym z najpopularniejszych serwerów WWW, który obsługuje zapytania HTTP i serwuje zawartość stron internetowych. PHP to skryptowy język programowania, który jest powszechnie używany do tworzenia dynamicznych stron internetowych i aplikacji webowych. W kontekście Joomla!, PHP jest odpowiedzialne za przetwarzanie kodu i interakcję z bazą danych. MySQL natomiast to system zarządzania relacyjnymi bazami danych, który przechowuje wszystkie dane potrzebne do działania Joomla!, takie jak informacje o użytkownikach, artykułach i ustawieniach systemowych. Współpraca tych trzech komponentów tworzy stabilne środowisko do działania Joomla!, zapewniając optymalizację wydajności oraz bezpieczeństwo. Warto również zaznaczyć, że Joomla! wymaga minimum wersji PHP 7.2 oraz MySQL 5.5, aby zapewnić pełną funkcjonalność i wsparcie dla nowoczesnych rozwiązań webowych.

Pytanie 10

Zamieszczone zapytanie SQL przyznaje prawo SELECT:

GRANT SELECT ON hurtownia.* TO 'sprzedawca'@'localhost';
A. dla użytkownika root na serwerze localhost
B. do wszystkich tabel w bazie hurtownia
C. dla użytkownika root na serwerze sprzedawca
D. do wszystkich kolumn w tabeli hurtownia
Polecenie GRANT SELECT ON hurtownia.* TO sprzedawca@localhost; jest często źle interpretowane co prowadzi do błędnego przypisania uprawnień. Częstym problemem jest mylne przekonanie, że przyznanie uprawnień do wszystkich pól w tabeli oznacza to samo co do wszystkich tabel. Symbol * w poleceniu odnosi się do wszystkich tabel w bazie hurtownia a nie do wszystkich pól pojedynczej tabeli. To ważne rozróżnienie wpływa na sposób przyznawania i zarządzania uprawnieniami w kontekście bezpieczeństwa i dostępu do danych. Błędna interpretacja że uprawnienie dotyczy użytkownika root jest wynikiem niezrozumienia konwencji dotyczącej składni SQL gdzie specyficzna definicja użytkownika pojawia się po słowie TO w naszym przypadku jest to sprzedawca@localhost. To wyklucza użytkownika root z opcji możliwych odbiorców tego uprawnienia. Warto zwrócić uwagę że identyfikacja użytkownika sprzedawca@localhost jednoznacznie określa użytkownika działającego z lokalnego serwera a nie z dowolnego hosta co jest istotne z punktu widzenia bezpieczeństwa systemu. Zrozumienie tych niuansów jest kluczowe dla efektywnego zarządzania bazami danych i ochrony przed nieautoryzowanym dostępem. W praktyce przyznanie uprawnień powinno być starannie rozważone i dostosowane do potrzeb zgodnie z zasadą najmniejszych uprawnień co minimalizuje ryzyko błędów i nadużyć systemowych.

Pytanie 11

W SQL, aby uniemożliwić stworzenie konta przy wykonywaniu kwerendy CREATE USER, gdy konto już istnieje, można zastosować następującą 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%';
Odpowiedzi, które nie zawierają klauzuli 'IF NOT EXISTS', nie są optymalne, ponieważ mogą prowadzić do błędów, gdy próbuje się utworzyć konto, które już istnieje. W przypadku polecenia 'CREATE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';', jeśli konto 'anna' jest już w systemie, użytkownik otrzyma błąd, co skutkuje niepowodzeniem całego skryptu. W kontekście administracji baz danych, jest to szczególnie problematyczne, gdy skrypty są uruchamiane automatycznie, ponieważ mogą one przerywać dalsze operacje. Natomiast składnia 'CREATE USER OR DROP 'anna'@'localhost' IDENTIFIED BY 'yu&T%';' jest nieprawidłowa, ponieważ nie istnieje w standardzie SQL. Użytkownicy mogą mylić 'DROP' z opcją usunięcia konta, co w praktyce nie powinno być podejmowane bez wyraźnej intencji. Ostatecznie, 'CREATE OR REPLACE USER...' działa odmiennie, ponieważ nie jest standardową operacją w SQL dla użytkowników; bardziej odpowiednie byłoby jej zastosowanie w kontekście obiektów, takich jak procedury czy widoki. Kluczowe jest zrozumienie, że błędne podejście do tworzenia użytkowników może prowadzić do chaosu w zarządzaniu bazą danych i stwarzać potencjalne zagrożenia dla bezpieczeństwa. Dlatego tak istotne jest stosowanie klauzuli 'IF NOT EXISTS', co jest zgodne z najlepszymi praktykami w branży zarządzania systemami baz danych.

Pytanie 12

Fragment kodu SQL wskazuje, że klucz obcy

FOREIGN KEY (imie) REFERENCES obiekty (imiona) …
A. jest odniesieniem do siebie samego
B. znajduje się w tabeli obiekty
C. jest przypisany do kolumny obiekty
D. wiąże się z kolumną imiona
Odpowiedź wskazująca, że klucz obcy łączy się z kolumną 'imiona' jest prawidłowa, ponieważ definicja klucza obcego w SQL stanowi, że odwołuje się on do kolumny w innej tabeli, w tym przypadku do kolumny 'imiona' w tabeli 'obiekty'. Klucz obcy jest używany do ustanowienia relacji między dwiema tabelami, co poprawia integralność danych i umożliwia tworzenie bardziej złożonych zapytań. Na przykład, jeśli mamy tabelę 'uczniowie' z kolumną 'imie', a tabela 'obiekty' zawiera kolumnę 'imiona' jako klucz podstawowy, to możemy użyć klucza obcego, aby zapewnić, że każde imię w tabeli 'uczniowie' odnosi się do istniejącego rekordu w tabeli 'obiekty'. Dobrą praktyką jest zawsze stosowanie kluczy obcych w celu minimalizacji błędów danych i zapewnienia ich spójności. Użycie kluczy obcych jest zgodne z zasadami normalizacji baz danych, które dążą do eliminacji redundancji i poprawy organizacji danych.

Pytanie 13

W utworzonej tabeli pole należące do typu BLOB służy do składowania

A. liczb całkowitych, które przekraczają zakres typu INT
B. danych logicznych takich jak true
C. danych binarnych o dużych rozmiarach, takich jak grafika
D. łańcuchów znaków o nieokreślonej długości
Pole typu BLOB (Binary Large Object) jest przeznaczone do przechowywania danych binarnych dużych rozmiarów, co czyni je idealnym do przechowywania plików multimedialnych, takich jak obrazy, wideo lub dźwięki. W bazach danych, BLOB jest używane, gdy dane są zbyt duże, aby mogły być przechowywane w standardowych typach danych, takich jak VARCHAR czy INT. Przykładem zastosowania BLOB może być strona internetowa, która pozwala użytkownikom na przesyłanie zdjęć profilowych. W takim przypadku, zdjęcia są przechowywane w kolumnie typu BLOB w bazie danych, co pozwala na efektywne zarządzanie dużymi plikami binarnymi. Zastosowanie standardów takich jak SQL przy projektowaniu baz danych zapewnia optymalizację przechowywania danych, a użycie BLOB jako typu danych dla dużych plików jest zgodne z najlepszymi praktykami w tej dziedzinie.

Pytanie 14

Normalizacja tabel to proces, którego celem jest

A. wizualizacja bazy
B. sprawdzenie i optymalizację bazy danych
C. wyłącznie stworzenie tabel oraz relacji w bazie
D. dodanie danych do bazy
Normalizacja tabel jest kluczowym procesem w projektowaniu baz danych, który ma na celu usprawnienie struktury danych poprzez eliminację redundancji i zapewnienie integralności danych. Proces ten składa się z kilku kroków, które prowadzą do stworzenia dobrze zorganizowanej bazy danych. Głównym celem normalizacji jest zminimalizowanie powielania danych, co w rezultacie prowadzi do optymalizacji przestrzeni dyskowej oraz zwiększenia wydajności zapytań. Przykładem zastosowania normalizacji jest podział tabeli zawierającej informacje o klientach i zamówieniach na dwie odrębne tabele. W ten sposób, każdy klient ma swoje unikalne dane w jednej tabeli, natomiast w drugiej tabeli zapisywane są tylko odniesienia do klientów zamiast ich powtórzeń. Dobre praktyki związane z normalizacją uwzględniają różne formy normalne, z których każda ma swoje zasady, np. pierwsza forma normalna (1NF) wymaga, aby każda kolumna w tabeli zawierała tylko atomowe wartości. Wysoka jakość projektowania baz danych, w tym normalizacja, znacząco wpływa na późniejsze zarządzanie danymi oraz ich analizy.

Pytanie 15

Aby utworzyć relację wiele do wielu między tabelami A i B, wystarczy, że

A. wiele wpisów z tabeli A powtórzy się w tabeli B
B. zostanie zdefiniowana trzecia tabela z kluczami obcymi do tabel A i B
C. tabela A będzie miała identyczne pola jak tabela B
D. połączenie tabeli A z tabelą B nastąpi poprzez określenie kluczy obcych
Podejścia zaprezentowane w niepoprawnych odpowiedziach są mylące i nie odpowiadają zasadom modelowania baz danych stosowanym w praktyce. Łączenie tabeli A z tabelą B poprzez klucze obce bez użycia tabeli asocjacyjnej prowadzi do trudności w zarządzaniu relacjami, ponieważ w takiej konfiguracji relacja będzie co najwyżej jeden do wielu, co nie odzwierciedla zamierzonej relacji wiele do wielu. Duplicacja rekordów z tabeli A w tabeli B jest nie tylko nieefektywna, ale również narusza zasady normalizacji, prowadząc do redundancji danych i potencjalnych problemów z integralnością. Ponadto, posiadanie tabeli A z takimi samymi polami co tabela B nie ma sensu w kontekście relacji wiele do wielu, ponieważ nie rozwiązuje problemu powiązań między rekordami tych tabel. Ważne jest zrozumienie, że prawidłowe modelowanie baz danych powinno opierać się na zdefiniowanych relacjach i zastosowaniu kluczy obcych w odpowiedni sposób. Niezrozumienie tej koncepcji może prowadzić do błędnych wniosków i niewłaściwego projektowania baz danych, co w dłuższej perspektywie może powodować trudności w przetwarzaniu i analizie danych.

Pytanie 16

W SQL przeprowadzono zapytanie, jednak jego realizacja nie powiodła się, co skutkowało błędem: #1396 - Operation CREATE USER failed for 'anna'@'localhost'. Możliwą przyczyną takiego zachowania bazy danych może być

CREATE USER 'anna'@'localhost' IDENTIFIED BY '54RTu8';
A. błędna składnia polecenia CREATE USER
B. niewystarczające hasło dla konta anna
C. nieznane polecenie CREATE USER
D. istnienie użytkownika anna w bazie
Odpowiedzi sugerujące zbyt słabe hasło, nieznane polecenie, czy też nieprawidłową składnię polecenia są mylące i wskazują na brak zrozumienia podstawowych zasad działania systemów zarządzania bazą danych MySQL. Po pierwsze, hasło '54RTu8' spełnia standardowe wymagania dotyczące złożoności, które zazwyczaj obejmują minimalną długość oraz kombinację liter i cyfr, co czyni tę odpowiedź nieprawidłową. Ponadto, polecenie CREATE USER jest standardowym poleceniem w SQL, więc stwierdzenie, że jest ono 'nieznane', również nie ma podstaw. Warto zauważyć, że składnia polecenia jest poprawna i nie zawiera żadnych błędów typograficznych. Takie myślenie może prowadzić do fałszywych wniosków, co jest szczególnie problematyczne w kontekście rozwiązywania problemów. W praktyce, użytkownicy powinni nauczyć się korzystać z dokumentacji oraz narzędzi diagnostycznych, takich jak logi błędów, aby lepiej zrozumieć przyczyny problemów. Przykładem dobrej praktyki jest stosowanie komendy SHOW GRANTS, aby sprawdzić, jakich uprawnień już istniejący użytkownik może potrzebować, zanim podejmie się decyzji o jego usunięciu czy modyfikacji.

Pytanie 17

Do modyfikacji danych w bazie danych można wykorzystać

A. raport
B. formularz
C. kwerendę SELECT
D. filtrowanie
Formularz jest narzędziem, które umożliwia użytkownikom wprowadzanie i edytowanie danych w bazie danych w sposób przyjazny i intuicyjny. Przy użyciu formularzy można łatwo zdefiniować, jakie dane mają być wprowadzone, oraz w jakim formacie, co znacząco ogranicza ryzyko błędów. W praktyce, formularze są powszechnie wykorzystywane w aplikacjach webowych oraz systemach zarządzania danymi, takich jak systemy CRM czy ERP. Umożliwiają one także walidację danych przed ich zapisaniem w bazie, co jest ważnym krokiem w zapewnieniu integralności danych. Wykorzystanie formularzy w projektowaniu aplikacji jest zgodne z zasadami UX, które kładą nacisk na łatwość obsługi i wygodę użytkownika. Dodatkowo, standardy takie jak HTML5 oferują różnorodne elementy formularzy, które można łatwo integrować z backendem, co ułatwia przechwytywanie danych i ich późniejsze przetwarzanie.

Pytanie 18

Która z funkcji SQL nie przyjmuje żadnych argumentów?

A. year
B. len
C. now
D. upper
Funkcja SQL 'now' jest funkcją, która zwraca bieżącą datę i czas. Jest to przykład funkcji, która nie pobiera żadnych argumentów, co oznacza, że jej działanie jest niezależne od jakichkolwiek wartości wejściowych. W praktyce, użycie tej funkcji pozwala na uzyskanie aktualnego znacznika czasu w zapytaniach SQL, co jest szczególnie przydatne w kontekście logowania zdarzeń w bazach danych, generowania raportów lub wstawiania danych z bieżącą datą i czasem do tabeli. Na przykład, w poleceniu SQL 'INSERT INTO logi (data_czas) VALUES (now());' wstawiamy aktualny czas do kolumny 'data_czas'. Stosowanie funkcji, które nie wymagają argumentów, jak 'now', jest zgodne z najlepszymi praktykami, ponieważ upraszcza kod i minimalizuje ryzyko błędów związanych z przekazywaniem niepoprawnych argumentów.

Pytanie 19

Jaką rolę odgrywa kwerenda krzyżowa w systemie baz danych MS Access?

A. Dodaje do wskazanej tabeli dane z innej tabeli
B. Eliminuje rekordy z tabel zgodnie z określonymi kryteriami
C. Prezentuje zliczone wartości z określonego pola, organizując je w wiersze oraz kolumny
D. Zmienia już istniejące dane w tabeli
Wybór odpowiedzi, które sugerują modyfikację danych, usuwanie rekordów czy dołączanie ich z innych tabel, świadczy o nieporozumieniu w zakresie funkcji kwerend w MS Access. Modyfikacja danych w tabeli oraz usuwanie rekordów to operacje, które są realizowane przez inne typy kwerend, takie jak kwerendy aktualizujące czy kwerendy usuwające. Kwerenda krzyżowa nie ma na celu zmiany struktury danych ani ich usuwania, ale raczej analizy i agregacji istniejących informacji. Z kolei dołączanie rekordów z innych tabel zazwyczaj realizowane jest przez kwerendy dołączające, które łączą dane z różnych źródeł w celu ich wspólnej analizy. Odpowiedzi te mogą wprowadzać w błąd, zwłaszcza dla osób, które dopiero zaczynają pracę z bazami danych. Warto pamiętać, że kwerendy krzyżowe są narzędziami analitycznymi, które służą do prezentacji danych, a nie do ich przetwarzania. Dlatego kluczowe jest rozumienie, że każda kwerenda w MS Access ma swoją unikalną funkcję, co wymaga znajomości celu, dla którego ma być używana. Niezrozumienie tego może prowadzić do błędnego wnioskowania i nieefektywnego wykorzystania narzędzi dostępnych w MS Access.

Pytanie 20

Istnieje tabela programisci z polami: id, nick, ilosc_kodu, ocena. Wartość w polu ilosc_kodu przedstawia liczbę linii kodu, które dany programista stworzył w określonym miesiącu. Aby obliczyć całkowitą liczbę linii kodu napisanych przez wszystkich programistów, należy zastosować następujące polecenie

A. SELECT COUNT(programisci) FROM ilosc_kodu;
B. SELECT SUM(ilosc_kodu) FROM programisci;
C. SELECT SUM(ocena) FROM ilosc_kodu;
D. SELECT MAX(ilosc_kodu) FROM programisci;
Pierwsza z błędnych odpowiedzi, "SELECT COUNT(programisci) FROM ilosc_kodu;" zawiera fundamentalny błąd, gdyż funkcja COUNT() nie jest odpowiednia, gdy chcemy zsumować wartości liczby linii kodu. Funkcja COUNT() zlicza wiersze, ale nie sumuje wartości w kolumnach. Użycie jej w tym kontekście prowadzi do nieprawidłowych wyników i jest sprzeczne z zamiarem analizy danych. Z kolei odpowiedź "SELECT SUM(ocena) FROM ilosc_kodu;" łączy nieadekwatne elementy; pole "ocena" nie ma związku z analizowaną sumą linii kodu, co skutkuje brakiem sensu w kontekście zapytania. Warto zauważyć, że w SQL każda kolumna musi być właściwie zdefiniowana w kontekście używanych funkcji, a mieszanie danych z różnych pól bez logicznego uzasadnienia to typowy błąd myślowy. Ostatnia odpowiedź, "SELECT MAX(ilosc_kodu) FROM programisci;" także nie spełnia wymagań, ponieważ funkcja MAX() zwraca maksymalną wartość, a nie sumę. W praktyce, takie błędy mogą prowadzić do mylnych wniosków na temat produktywności zespołu, szczególnie gdy zapytania są używane do podejmowania decyzji biznesowych. Kluczowe jest, aby zrozumieć semantykę każdej funkcji SQL oraz zastosować je w odpowiednich kontekstach, co jest istotne dla skutecznej analizy danych w każdej organizacji.

Pytanie 21

Wykonano następującą kwerendę na tabeli Pracownicy:

SELECT imie FROM pracownicy WHERE nazwisko = 'Kowal' OR stanowisko > 2;

Na tabeli Pracownicy, której wiersze zostały pokazane na obrazie, wykonano przedstawioną kwerendę SELECT. Które dane zostaną wybrane?

idimienazwiskostanowisko
1AnnaKowalska1
2MonikaNowak2
3EwelinaNowakowska2
4AnnaPrzybylska3
5MariaKowal3
6EwaNowacka4
A. Tylko Anna.
B. Anna, Maria, Ewa.
C. Monika, Ewelina, Maria.
D. Tylko Maria.
Gratulacje, udzielona odpowiedź jest prawidłowa! Wykonana kwerenda SQL 'SELECT imie FROM pracownicy WHERE nazwisko = 'Kowal' OR stanowisko > 2;' zwraca imiona pracowników, którzy albo mają nazwisko 'Kowal', albo zajmują stanowisko o numerze większym niż 2. W kontekście przedstawionej tabeli pracowników, taka kwerenda zwróci nam poprawną odpowiedź 'Anna, Maria, Ewa'. To dlatego, że Anna pracuje na stanowisku 3, co jest większe niż 2, Maria ma nazwisko 'Kowal', a Ewa pracuje na stanowisku 4, które jest również większe niż 2. SQL jako język zapytań pozwala na efektywne zarządzanie danymi, niezależnie od skomplikowania zapytania. W praktyce, gdy mamy do czynienia z dużym zbiorem danych, takie zapytania pomagają w szybkim filtrowaniu i dostępie do potrzebnych informacji. Dobrym standardem jest wymyślanie i testowanie zapytań SQL w celu zrozumienia, jakie dane zostaną zwrócone, zanim zapytanie zostanie użyte w prawdziwej aplikacji lub systemie.

Pytanie 22

W aplikacji PHP do bazy danych została wysłana kwerenda SELECT przy pomocy funkcji mysqli_query. Jaką funkcję powinien wykorzystać użytkownik, aby ustalić, ile rekordów zostało zwróconych przez zapytanie?

A. mysqli_num_rows
B. mysqli_query
C. mysqli_fetch_row
D. mysqli_connect
Przy wyborze niewłaściwych funkcji jako alternatywy dla mysqli_num_rows pojawia się wiele nieporozumień dotyczących operacji na wynikach zapytań w PHP. Wybór mysqli_fetch_row sugeruje, że użytkownik mylnie zakłada, iż ta funkcja zwraca liczbę rekordów. W rzeczywistości, mysqli_fetch_row służy do pobierania kolejnych wierszy z wyniku zapytania jako tablicy, co oznacza, że do zliczenia rekordów musielibyśmy wielokrotnie wywoływać tę funkcję w pętli, co jest nieefektywne i niezgodne z zasadami optymalizacji. Z kolei mysqli_query, choć fundamentem do wykonania zapytania, nie ma funkcji zliczającej rekordy. Użytkownicy często mylą jej wydajność z funkcją zliczania, co prowadzi do nieefektywnego kodu. Funkcja mysqli_connect jest przeznaczona do nawiązywania połączenia z bazą danych, a nie do operacji na wynikach zapytań. Jest to typowy błąd nowicjuszy, którzy nie rozumieją, że użycie funkcji do zaistnienia w bazie nie ma związku ze zliczaniem rekordów. W praktyce, aby uzyskać informacje o liczbie rekordów, kluczowe jest zrozumienie, że każda z tych funkcji ma swoje zdefiniowane zadania i użycie ich w nieodpowiednich kontekstach prowadzi do nieoptymalnych rozwiązań, co jest sprzeczne z najlepszymi praktykami programowania.

Pytanie 23

W relacyjnych bazach danych dane zapisywane są w

A. kolejkach.
B. wektorach.
C. listach.
D. tabelach.
W relacyjnych bazach danych dane są przechowywane w tabelach, bo cały model relacyjny opiera się właśnie na pojęciu tabeli (relacji). Tabela to po prostu uporządkowany zbiór wierszy i kolumn: kolumny opisują strukturę danych (np. id, imię, nazwisko, email), a wiersze przechowują konkretne rekordy, czyli pojedyncze wpisy. Każda kolumna ma określony typ danych, np. INTEGER, VARCHAR, DATE, co pozwala silnikowi bazy danych kontrolować poprawność zapisów i optymalizować zapytania. Tak to działa w typowych systemach jak MySQL, PostgreSQL, SQL Server czy Oracle – wszędzie podstawową jednostką przechowywania danych użytkownika jest tabela. W praktyce, kiedy projektujesz bazę dla sklepu internetowego, tworzysz tabele takie jak users, products, orders, order_items. Potem za pomocą języka SQL wykonujesz na tych tabelach operacje SELECT, INSERT, UPDATE, DELETE. Klucze główne i obce też odnoszą się do tabel – klucz główny jednoznacznie identyfikuje wiersz w tabeli, a klucz obcy wskazuje na wiersz w innej tabeli, tworząc relację między nimi. To właśnie dzięki tabelom i relacjom możesz łączyć dane z wielu miejsc, np. pobrać zamówienia wraz z danymi klienta jednym zapytaniem. Moim zdaniem warto od początku myśleć o tabeli jak o odpowiedniku arkusza w Excelu, tylko z dużo bardziej rygorystycznymi zasadami i możliwością zaawansowanych zapytań. Standard SQL zakłada, że operujemy na relacjach, a w implementacjach relacja = tabela. Dlatego odpowiedź „tabelach” jest zgodna zarówno z teorią modelu relacyjnego, jak i z praktyką codziennej pracy z bazami danych.

Pytanie 24

W systemie MySQL należy użyć polecenia REVOKE, aby odebrać użytkownikowi anna możliwość wprowadzania zmian tylko w definicji struktury bazy danych. Odpowiednie polecenie do zrealizowania tej operacji ma formę

A. REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'
B. REVOKE CREATE ALTER DROP ON tabela1 FROM 'anna'@'localhost'
C. REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'
D. REVOKE ALL ON tabela1 FROM 'anna'@'localhost'
Wszystkie inne odpowiedzi są nieprawidłowe z kilku powodów. W pierwszej z nich, 'REVOKE ALL ON tabela1 FROM 'anna'@'localhost'', przyznawane są wszystkie uprawnienia, co jest sprzeczne z intencją odebrania tylko określonych praw. Użytkownicy powinni być ograniczani jedynie w tych obszarach, gdzie to konieczne. Z kolei odpowiedź 'REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'' zawiera 'UPDATE', co jest związane z danymi, a nie strukturą bazy, co również czyni ją niewłaściwą. Odmowa praw do aktualizacji danych nie jest odpowiednia w kontekście modyfikacji struktury bazy. Z kolei opcja 'REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'' ponownie nie odnosi się do struktury bazy, ponieważ odnosi się do manipulacji danymi, nie do struktury. Kluczowym błędem w tym kontekście jest mylenie uprawnień związanych z danymi z uprawnieniami związanymi ze strukturą bazy danych. W zarządzaniu uprawnieniami w MySQL istotne jest zrozumienie różnicy pomiędzy tymi kategoriami, aby skutecznie zabezpieczyć bazę danych. W praktyce dobrym podejściem jest wdrożenie zasady minimalnych uprawnień, co zmniejsza ryzyko nieautoryzowanych zmian w strukturze i danych bazy.

Pytanie 25

Podane w ramce polecenie SQL nadaje prawo SELECT

GRANT SELECT ON hurtownia.* TO 'sprzedawca'@'localhost';
A. dla użytkownika 'root' na serwerze localhost.
B. do wszystkich pól w tabeli hurtownia.
C. dla użytkownika 'root' na serwerze sprzedawca.
D. do wszystkich tabel w bazie hurtownia.
Poprawnie wychwyciłeś najważniejszy element składni: zapis hurtownia.* po słowie ON oznacza całą bazę danych o nazwie hurtownia, a nie pojedynczą tabelę. W składni GRANT w MySQL i innych systemach bazodanowych mamy kilka poziomów nadawania uprawnień: można nadać uprawnienia do całej bazy (database), do konkretnej tabeli, a nawet do pojedynczych kolumn. Kluczowe jest to, co znajduje się po słowie ON. Jeżeli podamy nazwa_bazy.* – tak jak tutaj – to uprawnienie SELECT dotyczy wszystkich tabel w tej bazie danych. Gdyby chodziło o jedną tabelę, składnia wyglądałaby np. GRANT SELECT ON hurtownia.zamowienia TO 'sprzedawca'@'localhost'; i wtedy prawo dotyczyłoby wyłącznie tabeli zamowienia. W tym poleceniu dodatkowo jasno określony jest użytkownik: 'sprzedawca'@'localhost'. W MySQL użytkownik jest identyfikowany parą nazwa_użytkownika@host, więc nie jest to ani root, ani żaden inny login, tylko konkretny użytkownik o nazwie sprzedawca, który łączy się z serwera localhost. To jest typowy scenariusz np. dla aplikacji sprzedażowej instalowanej na tym samym serwerze co baza. Taki użytkownik często dostaje tylko SELECT do bazy hurtownia, żeby mógł odczytywać dane (np. listę produktów, stany magazynowe, historię zamówień), ale nie miał uprawnień do modyfikacji struktury bazy czy kasowania rekordów. Moim zdaniem jest to bardzo dobra praktyka bezpieczeństwa: tworzy się osobnych użytkowników o wąskim zakresie uprawnień zamiast wszędzie używać konta root. W realnych projektach webowych, np. w PHP czy innych językach backendowych, w pliku konfiguracyjnym aplikacji podaje się właśnie takiego technicznego użytkownika, który ma GRANT SELECT (czasem też INSERT/UPDATE) tylko na jedną, konkretną bazę. Dzięki temu nawet jeśli aplikacja zostanie zhakowana, atakujący ma dużo mniejsze pole do popisu, bo nie dysponuje pełnymi uprawnieniami administracyjnymi. Dobrze też zapamiętać, że GRANT SELECT nie daje prawa do tworzenia nowych tabel ani zmiany struktury – to są osobne uprawnienia (CREATE, ALTER, DROP). Tutaj mówimy wyłącznie o możliwości wykonywania zapytań odczytujących dane ze wszystkich tabel w bazie hurtownia, co w praktyce oznacza, że użytkownik sprzedawca może spokojnie robić SELECT * FROM jakakolwiek_tabela; pod warunkiem, że ta tabela znajduje się właśnie w tej bazie.

Pytanie 26

Podczas przechowywania hasła użytkownika serwisu internetowego (np. bankowości online), aby chronić je przed ujawnieniem, zazwyczaj stosuje się funkcję

A. mieszających.
B. cyklometrycznych.
C. abstrakcyjnych.
D. klucza.
Użycie klucza do zabezpieczenia haseł użytkowników w systemach takich jak bankowość internetowa jest kluczowym elementem zapewnienia prywatności i bezpieczeństwa danych. Funkcje klucza, takie jak szyfrowanie, pozwalają na przekształcenie haseł w nieczytelne ciągi znaków, które są niemożliwe do odtworzenia bez odpowiedniego klucza. Przykładem jest zastosowanie algorytmów takich jak AES (Advanced Encryption Standard), które są szeroko uznawane i stosowane w branży. Dobre praktyki w zakresie zabezpieczania danych sugerują używanie silnych, losowych kluczy oraz regularne ich aktualizowanie. Ponadto, najnowsze standardy, takie jak NIST (National Institute of Standards and Technology), rekomendują stosowanie dodatkowych technik, takich jak solenie haseł, co zwiększa ich odporność na ataki. Dzięki temu, nawet w przypadku wycieku bazy danych, potencjalny atakujący napotyka na trudności w odzyskaniu oryginalnych haseł. Zrozumienie i wdrożenie funkcji klucza jest niezbędne dla każdej organizacji, która pragnie skutecznie chronić wrażliwe dane swoich użytkowników.

Pytanie 27

Jaką integralność określa przytoczona definicja?

Ilustracja do pytania
A. Statyczną
B. Encji
C. Referencyjną
D. Semantyczną
Integralność referencyjna jest fundamentalną zasadą w bazach danych, która zapewnia, że relacje między tabelami są prawidłowo zachowane. Oznacza to, że klucz obcy w jednej tabeli powinien zawsze odnosić się do istniejącego klucza głównego w innej tabeli. To podejście jest kluczowe w relacyjnych bazach danych, ponieważ zapobiega powstawaniu odniesień do nieistniejących danych co mogłoby prowadzić do niespójności w bazie danych. W praktyce integralność referencyjna jest implementowana poprzez restrykcje i ograniczenia narzucane na operacje takie jak wstawianie aktualizacja i usuwanie danych. Na przykład próba usunięcia rekordu z tabeli, do której odwołują się inne rekordy wprowadziłaby niespójność jeśli integralność referencyjna nie jest przestrzegana. Aby temu zapobiec systemy baz danych mogą blokować takie operacje lub automatycznie aktualizować albo usuwać powiązane dane. Przestrzeganie zasad integralności referencyjnej jest zgodne z dobrymi praktykami projektowania baz danych i zgodne ze standardem SQL co zapewnia spójność i integralność danych w systemach informatycznych.

Pytanie 28

Model fizyczny replikacji bazy danych pokazany na ilustracji jest modelem

Ilustracja do pytania
A. rozproszonym
B. równorzędnym
C. centralnego wydawcy
D. centralnego subskrybenta
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 29

W PHP, aby połączyć się z bazą danych MySQL przy użyciu biblioteki mysqli, w zapisie zamieszczonym poniżej, w miejscu litery 'c' powinno się wpisać

Ilustracja do pytania
A. nazwę użytkownika
B. nazwę bazy danych
C. hasło użytkownika
D. lokalizację serwera bazy danych
Rozważając, co powinno znajdować się na miejscu oznaczonym literą 'c', należy zrozumieć, jak działa funkcja mysqli w PHP. Pierwszym argumentem jest lokalizacja serwera bazy danych, często jest to 'localhost' dla lokalnych połączeń, co może prowadzić do błędnego założenia, że to właśnie ten parametr znajduje się pod literą 'c'. Drugi parametr powinien być nazwą użytkownika bazy danych, co w kontekście bezpieczeństwa jest elementem, na który zawsze trzeba zwracać uwagę. Hasło użytkownika znajduje się na trzeciej pozycji i jest kluczowe dla zapewnienia, że tylko uprawnione osoby mogą uzyskać dostęp do bazy. Czwarty parametr to nazwa bazy danych, która jest niezbędna do określenia, z którą bazą chcemy pracować w ramach danego połączenia. Często błędnie przyjmuje się, że nazwa bazy powinna być na pierwszym miejscu, co wynika z zamieszania co do struktury danych wejściowych. Warto dodać, że lokalizacja serwera, choć czasem zaniedbywana, jest kluczowa w środowiskach rozproszonych, gdzie połączenia mogą być nawiązywane z różnych serwerów lub maszyn wirtualnych. Każdy z tych elementów jest istotny i musi być poprawnie zidentyfikowany, aby połączenie z bazą danych było skuteczne i bezpieczne. Praktyczne umiejętności w tej dziedzinie są kluczowe, zwłaszcza przy projektowaniu i wdrażaniu aplikacji działających w profesjonalnym środowisku produkcyjnym.

Pytanie 30

W SQL, aby ustawić klucz główny na polu id w tabeli uczniowie, można użyć polecenia

A. INSERT TABLE uczniowie PRIMARY KEY (id)
B. ALTER TABLE uczniowie ADD PRIMARY KEY (id)
C. ADD TABLE uczniowie PRIMARY KEY (id)
D. INSERT TABLE uczniowie ADD PRIMARY KEY (id)
Odpowiedź 'ALTER TABLE uczniowie ADD PRIMARY KEY (id);' jest poprawna, ponieważ polecenie ALTER TABLE w SQL służy do modyfikacji istniejącej struktury tabeli. W tym przypadku chcemy dodać klucz podstawowy do istniejącej tabeli uczniowie, co jest zgodne z zasadami normalizacji baz danych. Klucz podstawowy jest unikalnym identyfikatorem dla każdego rekordu, co zapewnia integralność danych. Przykładowo, jeśli tabela uczniowie zawiera kolumnę id, która jest już zdefiniowana, użycie polecenia ALTER TABLE pozwala na dodanie klucza podstawowego do tej kolumny. Ważne jest, aby pamiętać, że przed dodaniem klucza podstawowego, kolumna musi być unikalna i nie może zawierać wartości NULL. Dodatkowo, zgodnie z najlepszymi praktykami, warto wcześniej sprawdzić, czy w tabeli nie ma duplikatów w kolumnie, aby uniknąć błędów w trakcie dodawania klucza. W kontekście systemów zarządzania bazami danych, takich jak MySQL czy PostgreSQL, poprawne zarządzanie kluczami podstawowymi jest kluczowe dla zapewnienia efektywności operacji na tabelach oraz dla poprawności logiki aplikacji korzystającej z bazy danych.

Pytanie 31

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. Rosnaco według parametru srednia
B. Malejąco według parametru srednia
C. Malejąco według parametru klasa
D. Rosnąca według parametru klasa
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 32

W języku PHPnie ma możliwości

A. tworzenie dynamicznej zawartości strony internetowej
B. przetwarzanie danych z formularzy
C. obróbka informacji przechowywanych w bazie danych
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 33

Używa się zapytania z klauzulą JOIN, aby

A. wykonać funkcję agregującą
B. otrzymać wynik tylko z jednej tabeli
C. uzyskać dane z dwóch tabel, które są ze sobą powiązane
D. określić klucz obcy dla tabeli
Zapytanie z klauzulą JOIN jest kluczowym narzędziem w języku SQL, które umożliwia łączenie danych z dwóch lub więcej tabel na podstawie relacji między nimi. Używając JOIN, możemy uzyskać bardziej złożone i użyteczne zestawienia danych, które nie byłyby możliwe do uzyskania, gdybyśmy korzystali tylko z pojedynczej tabeli. Na przykład, jeśli mamy tabelę klientów oraz tabelę zamówień, możemy z łatwością połączyć je, aby uzyskać informacje o tym, jakie zamówienia złożył dany klient. Przykładowe zapytanie może wyglądać tak: "SELECT klienci.imie, zamowienia.data FROM klienci JOIN zamowienia ON klienci.id = zamowienia.klient_id;" W takim przypadku wykorzystanie JOIN pozwala na integrowanie danych z obu tabel w jedną spójną odpowiedź. Takie podejście jest szeroko stosowane w branży, ponieważ standardy relacyjnych baz danych wymagają efektywnej organizacji i analizy danych, a JOIN jest jednym z podstawowych mechanizmów umożliwiających realizację takich zadań.

Pytanie 34

Podaj właściwą sekwencję przy tworzeniu bazy danych?

A. Zdefiniowanie celu, normalizacja, utworzenie relacji, stworzenie tabel
B. Zdefiniowanie celu, stworzenie tabel, utworzenie relacji, normalizacja
C. Zdefiniowanie celu, utworzenie relacji, stworzenie tabel, normalizacja
D. Zdefiniowanie celu, normalizacja, utworzenie tabel, stworzenie relacji
Prawidłowa odpowiedź wskazuje, że pierwszym krokiem w procesie tworzenia bazy danych jest określenie celu, co jest kluczowe dla zrozumienia, jakie dane będą gromadzone i w jaki sposób będą one używane. Następnie, stworzenie tabel to fundament, na którym opiera się cała baza danych. Tabele definiują struktury danych, które będą przechowywane, a ich projektowanie powinno uwzględniać normalizację, czyli proces eliminowania redundancji danych i zapewniania ich integralności. Utworzenie relacji między tabelami jest kolejnym krokiem, który pozwala na efektywne łączenie danych w różnych tabelach, co z kolei umożliwia bardziej złożone zapytania. Normalizacja, będąca ostatnim krokiem, pozwala na optymalizację struktury bazy, co zwiększa wydajność operacji. Przykład zastosowania tej kolejności można zobaczyć w projektowaniu systemów zarządzania bazami danych w przedsiębiorstwach, gdzie dokładne określenie potrzeb biznesowych wpływa na przyszłe modele danych i ich relacje.

Pytanie 35

W SQL, aby w tabeli Towar dodać kolumnę rozmiar typu znakowego z maksymalną długością 20 znaków, jakie polecenie należy wykonać?

A. ALTER TABLE Towar ADD rozmiar varchar(20)
B. ALTER TABLE Towar ALTER COLUMN rozmiar varchar(20)
C. ALTER TABLE Towar CREATE COLUMN rozmiar varchar(20)
D. ALTER TABLE Towar DROP COLUMN rozmiar varchar(20)
Odpowiedź 'ALTER TABLE Towar ADD rozmiar varchar(20);' jest poprawna, ponieważ polecenie ALTER TABLE jest używane do modyfikacji struktury istniejącej tabeli. W tym przypadku chcemy dodać nową kolumnę o nazwie 'rozmiar', a typ 'varchar(20)' oznacza, że kolumna ta będzie przechowywać dane tekstowe o maksymalnej długości 20 znaków. Jest to standardowa praktyka w języku SQL, która pozwala na elastyczne zarządzanie danymi w bazach danych. Przykładem zastosowania może być sytuacja, w której w tabeli 'Towar' chcemy przechowywać informacje o rozmiarze odzieży, co pomaga w lepszym zarządzaniu stanem magazynowym. Prawidłowe zweryfikowanie typów kolumn i ich ograniczeń jest kluczowe dla zapewnienia integralności danych. Warto także pamiętać o tym, że operacje na strukturze bazy danych powinny być przeprowadzane z zachowaniem odpowiednich zasad, takich jak wykonywanie kopii zapasowych przed wprowadzeniem zmian oraz testowanie zmian w środowisku deweloperskim przed wdrożeniem ich w środowisku produkcyjnym.

Pytanie 36

Przedstawiony kod PHP nawiązuje połączenie z serwerem bazy danych. Jakiego typu operacje powinny się znaleźć w instrukcji warunkowej w miejscu trzech kropek?
$db = mysqli_connect("localhost", "root", "qwerty", "baza1");
if (!$db) {
...
}

A. Informacja o udanym połączeniu z bazą
B. Obsługa błędu połączenia
C. Zamknięcie połączenia z bazą danych
D. Obsługa danych uzyskanych z bazy
Wybór obsługi błędu połączenia jako prawidłowej odpowiedzi jest zgodny z najlepszymi praktykami programistycznymi w zakresie zarządzania połączeniami z bazą danych. W sytuacji, gdy połączenie nie zostanie nawiązane, ważne jest, aby skutecznie obsłużyć ten błąd. Tylko w ten sposób programista może zrozumieć, co poszło nie tak, a także podjąć odpowiednie kroki w celu skorygowania problemu. Na przykład można wyświetlić komunikat informujący o błędzie, logować go w systemie lub wysłać powiadomienie do administratora. Dobrą praktyką jest również implementacja mechanizmów ponownego łączenia lub alternatywnych metod połączenia, jeśli to możliwe. Warto również zaznaczyć, że niewłaściwe zarządzanie połączeniem z bazą danych może prowadzić do poważnych konsekwencji, takich jak utrata danych, a nawet awarie aplikacji. Dlatego, umieszczając kod do obsługi błędów w instrukcji warunkowej, programista wykazuje się odpowiedzialnością oraz dbałością o jakość kodu.

Pytanie 37

Wskaż poprawne zdanie dotyczące poniższego polecenia. ```CREATE TABLE IF NOT EXISTS ADRES (ulica VARCHAR(70)) CHARACTER SET utf8); ```

A. Nie można dodawać do tabeli ulic, które zawierają polskie znaki w nazwie
B. IF NOT EXISTS używa się opcjonalnie, żeby potwierdzić, że taka tabela nie istnieje w bazie danych
C. Klauzula CHARACTER SET utf8 jest wymagana
D. Rekord tabeli nie może mieć wartości 3 MAJA
Klauzula IF NOT EXISTS w poleceniu CREATE TABLE jest używana do zapobiegania błędom, które mogą wystąpić, gdy próbujesz stworzyć tabelę, która już istnieje w danej bazie danych. Dzięki temu operatorowi, jeśli tabela o podanej nazwie już istnieje, polecenie nie zostanie wykonane, co pozwala na uniknięcie konfliktów oraz zbędnych błędów w aplikacji. Jest to szczególnie przydatne w sytuacjach, gdy skrypty są uruchamiane wielokrotnie, na przykład podczas aktualizacji lub migracji bazy danych. Użycie IF NOT EXISTS jest opcjonalne, ale zalecane dla poprawności i stabilności kodu SQL. Przykład praktyczny: można stworzyć tabelę 'klienci' z poleceniem 'CREATE TABLE IF NOT EXISTS klienci (id INT PRIMARY KEY, imie VARCHAR(100));', co zapobiega próbie utworzenia tabeli, która już istnieje. Zgodnie z standardami SQL, operator ten jest powszechnie akceptowany w większości systemów zarządzania bazami danych, takich jak MySQL, PostgreSQL czy SQLite, co czyni go uniwersalnym rozwiązaniem w projektach opartych na bazach danych.

Pytanie 38

Jakie zapytanie pozwoli Administratorowi cofnąć uprawnienia do przeglądania oraz modyfikacji danych w bazie gazeta dla użytkownika redaktor?

A. REVOKE SELECT, ALTER ON gazeta.* FROM 'redaktor'@'localhost';
B. GRANT SELECT, UPDATE ON gazeta.* TO 'redaktor'@'localhost';
C. GRANT SELECT, ALTER ON gazeta.* TO 'redaktor'@'localhost';
D. REVOKE SELECT, UPDATE ON gazeta.* FROM 'redaktor'@'localhost';
Wybór innych odpowiedzi prowadzi do nieporozumień dotyczących zarządzania uprawnieniami w bazach danych. Na przykład, REVOKE SELECT, ALTER ON gazeta.* FROM 'redaktor'@'localhost'; jest niewłaściwe, ponieważ ALTER nie jest związane z przeglądaniem ani aktualizowaniem danych, lecz z modyfikowaniem struktury bazy danych, co nie jest celem tego pytania. Użytkownik mógłby mylnie uznać, że ALTER jest potrzebne do zarządzania danymi, jednak w rzeczywistości dotyczy to jedynie zmiany tabel, kolumn czy indeksów. Podobnie, polecenie GRANT SELECT, UPDATE ON gazeta.* TO 'redaktor'@'localhost'; jest całkowicie przeciwne do zamierzonego celu, ponieważ GRANT przyznaje uprawnienia, a nie je odbiera, co oznacza, że narusza zasadę, która miałaby zlikwidować dostęp do bazy danych. Ostatnia propozycja, GRANT SELECT, ALTER ON gazeta.* TO 'redaktor'@'localhost'; również jest fałszywa, ponieważ wprowadza dodatkowe uprawnienia, co może prowadzić do nieautoryzowanego dostępu do danych. Kluczowym błędem myślowym jest nieodróżnienie poleceń REVOKE i GRANT oraz nieznajomość różnicy między rodzajami uprawnień, co jest fundamentalne w zarządzaniu bezpieczeństwem danych.

Pytanie 39

Kiedy należy użyć kwerendy SELECT DISTINCT, aby wybrać rekordy?

A. tak, aby w wskazanej kolumnie nie powtarzały się wartości.
B. uporządkowane w kolejności malejącej lub rosnącej.
C. pogrupowane.
D. obecne w bazie tylko raz.
Wybór nieodpowiednich odpowiedzi, takich jak pogrupowane, występujące w bazie tylko raz czy posortowane malejąco lub rosnąco, wskazuje na pewne nieporozumienia dotyczące funkcji kwerendy SELECT DISTINCT. Kwerenda ta nie jest używana do grupowania danych. Gdybyśmy chcieli pogrupować dane, zastosowalibyśmy grupowanie poprzez klauzulę GROUP BY, która agreguje dane na podstawie określonego kryterium, co jest zupełnie inną operacją. Podobnie, stwierdzenie, że SELECT DISTINCT wybiera rekordy występujące w bazie tylko raz, jest mylące. Funkcja DISTINCT nie ma na celu eliminacji wszystkich rekordów, które się powtarzają, ale raczej skupienie się na unikalnych wartościach w kontekście zadanej kolumny. Dodatkowo, posortowanie danych, niezależnie od kierunku (malejącego lub rosnącego), jest zupełnie inną operacją, którą osiągamy za pomocą klauzuli ORDER BY. W rzeczywistości, DISTINCT i ORDER BY mogą być używane razem, ale ich funkcje są różne. Typowe błędy myślowe prowadzące do tych niepoprawnych wniosków obejmują mylenie funkcji agregujących z funkcjami selekcyjnymi, co jest kluczowe do zrozumienia przy pracy z bazami danych. W rezultacie, kluczowym elementem jest umiejętność rozróżnienia funkcji i celów poszczególnych zapytań SQL, co jest niezbędne w efektywnym zarządzaniu danymi.

Pytanie 40

Jakie polecenie pozwala na kontrolowanie oraz optymalizację bazy danych?

A. mysqlshow
B. mysqlcheck
C. mysqldump
D. mysqlimport
Odpowiedź 'mysqlcheck' jest poprawna, ponieważ jest to narzędzie służące do sprawdzania i optymalizacji baz danych MySQL. Umożliwia ono użytkownikom weryfikację integralności tabel, a także optymalizację struktury bazy danych, co jest kluczowe dla zapewnienia jej wydajności. Funkcja ta jest niezwykle przydatna w przypadku dużych baz danych, gdzie regularne sprawdzanie i optymalizacja mogą znacząco wpłynąć na szybkość wykonywania zapytań. W praktyce, mysqlcheck można uruchomić z różnymi opcjami, na przykład '-a' do automatycznej optymalizacji, co pozwala na zautomatyzowanie procesu konserwacji bazy. Ponadto, zgodnie z zaleceniami dobrych praktyk w zarządzaniu bazami danych, regularne korzystanie z mysqlcheck może pomóc w identyfikacji potencjalnych problemów przed ich eskalacją, co z kolei minimalizuje ryzyko awarii systemu i utraty danych.