Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 11 czerwca 2026 19:05
  • Data zakończenia: 11 czerwca 2026 19:28

Egzamin zdany!

Wynik: 21/40 punktów (52,5%)

Wymagane minimum: 20 punktów (50%)

Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Na zaprezentowanym schemacie bazy danych biblioteka, elementy takie jak: czytelnik, wypożyczenie oraz książka stanowią

Ilustracja do pytania
A. atrybuty
B. krotki
C. encje
D. pola
Prawidłowo – na takim schemacie bazy danych „czytelnik”, „wypożyczenie” i „książka” to encje. W modelowaniu danych najpierw identyfikujemy obiekty świata rzeczywistego, które chcemy odwzorować w systemie. W przypadku biblioteki naturalnymi obiektami są właśnie czytelnik, książka i konkretne wypożyczenie. W notacji ERD (Entity‑Relationship Diagram) każdy z tych obiektów opisujemy jako encję, a potem dopiero dodajemy jej atrybuty oraz relacje z innymi encjami. Na schemacie widzisz trzy prostokąty – to są właśnie encje. Każda encja ma zestaw atrybutów: dla encji „czytelnik” są to np. imię, nazwisko, ulica, miejscowość; dla encji „książka” – tytuł, autor, rok wydania; dla encji „wypożyczenie” – daty wypożyczenia i zwrotu, klucze obce do czytelnika i książki. W relacyjnej bazie danych te encje są potem najczęściej odwzorowane jako tabele: tabela CZYTELNIK, WYPOZYCZENIE, KSIAZKA. To jest dokładnie zgodne z dobrymi praktykami projektowania: najpierw model koncepcyjny (encje i relacje), dopiero później model logiczny (tabele, klucze, typy danych). Z mojego doświadczenia przy każdym poważniejszym projekcie bazodanowym analitycy najpierw rysują diagram encji, bo to pomaga zrozumieć domenę biznesową. Dzięki poprawnemu rozróżnieniu encji od atrybutów można uniknąć błędów typu powtarzanie tych samych danych w wielu miejscach czy trudności z raportowaniem. W bibliotece na przykład wypożyczenie musi być osobną encją, bo opisuje zdarzenie w czasie, ma własne atrybuty (daty) i łączy dwie inne encje relacjami. Taki sposób modelowania jest zgodny z klasycznymi podręcznikami baz danych (model encja‑związek) oraz z zasadami normalizacji.

Pytanie 2

Jaki typ powinien być wykorzystany, aby pole danych mogło przyjmować liczby zmiennoprzecinkowe?

A. INT
B. CHAR
C. FLOAT
D. VARCHAR
Typ danych FLOAT jest idealnym rozwiązaniem do przechowywania liczb rzeczywistych, ponieważ umożliwia reprezentację wartości z przecinkiem dziesiętnym. W przeciwieństwie do typu INT, który obsługuje jedynie liczby całkowite, FLOAT potrafi przechowywać znacznie szerszy zakres wartości, w tym liczby z miejscami po przecinku. Użycie typu FLOAT jest szczególnie korzystne w aplikacjach wymagających precyzyjnych obliczeń, takich jak kalkulatory, systemy finansowe czy analizy danych. Przykładowo, w systemach baz danych SQL, definiując kolumnę jako FLOAT, możemy przechowywać wartości takie jak 3.14, -0.001 lub 2.71828. Standard SQL określa, że FLOAT może posiadać różne precyzje, co pozwala na dostosowanie pamięci do potrzeb konkretnej aplikacji. W praktyce, FLOAT jest wykorzystywany w złożonych obliczeniach inżynieryjnych, gdzie precyzyjne wartości są kluczowe dla wyników obliczeń.

Pytanie 3

Jakie narzędzie pozwala na zaimportowanie pliku z danymi SQL do bazy danych MySQL?

A. FileZilla
B. Symfony 3
C. phpMyAdmin
D. TotalCommander
phpMyAdmin to popularne narzędzie webowe, które umożliwia zarządzanie bazami danych MySQL i MariaDB. Dzięki phpMyAdmin można łatwo importować pliki z danymi SQL do bazy danych. Proces importu jest prosty: wystarczy zalogować się do phpMyAdmin, wybrać odpowiednią bazę danych, a następnie skorzystać z opcji 'Import'. Użytkownik może wskazać plik SQL, który chce zaimportować, a phpMyAdmin zadba o resztę. To narzędzie obsługuje różne formaty plików, w tym .sql, co czyni je wszechstronnym rozwiązaniem. Dodatkowo, phpMyAdmin oferuje funkcje umożliwiające zarządzanie strukturą tabel, przeglądanie danych, a także eksportowanie danych do różnych formatów. Narzędzie to jest zgodne z międzynarodowymi standardami bezpieczeństwa i dostępności, co czyni je popularnym wyborem wśród programistów i administratorów baz danych. Przykładem użycia może być migracja danych z lokalnego środowiska deweloperskiego do produkcyjnego, gdzie import danych SQL jest kluczowym krokiem w procesie wdrożenia.

Pytanie 4

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

A. Wykonanie replikacji bazy danych
B. Próba naprawy za pomocą polecenia REPAIR
C. Odtworzenie bazy z kopii zapasowej
D. Utworzenie nowej bazy i przeniesienie do niej tabel
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 5

W tabeli artykuły wykonano następujące instrukcje dotyczące uprawnień użytkownika jan: ```GRANT ALL PRIVILEGES ON artykuly TO jan``` ```REVOKE SELECT, UPDATE ON artykuly FROM jan``` Po zrealizowaniu tych instrukcji pracownik jan będzie uprawniony do

A. tworzenia tabeli oraz edytowania danych w niej
B. edycji danych oraz przeglądania tabeli
C. tworzenia tabeli i wypełniania jej danymi
D. wyświetlania zawartości tabeli
Wybrane odpowiedzi, które nie są poprawne, nie uwzględniają szczególnych ograniczeń, które zostały nałożone na użytkownika Jana po wykonaniu polecenia REVOKE. W przypadku odpowiedzi sugerujących, że Jan mógłby aktualizować dane i przeglądać tabelę, brakuje zrozumienia znaczenia polecenia REVOKE, które jednoznacznie odmawia tych uprawnień. Aktualizowanie danych w tabeli wymaga posiadania uprawnienia UPDATE, które Jan utracił. Z kolei odpowiedzi sugerujące tworzenie tabeli i aktualizowanie w niej danych oraz przeglądanie tabeli są również mylące, ponieważ wykluczają kluczowy aspekt ograniczeń narzuconych przez polecenie REVOKE. Użytkownik Jan nie może przeglądać danych w tabeli, ponieważ nie ma aktualnie uprawnienia SELECT. Ponadto, w kontekście SQL, każdy użytkownik musi mieć przyznane konkretne uprawnienia do realizacji określonych operacji na danych, co w przypadku Jana oznacza, że jego uprawnienia do SELECT i UPDATE są nieodwracalnie usunięte, co czyni wszystkie te odpowiedzi nieaktualnymi.

Pytanie 6

Tabela Pacjenci zawiera kolumny: imie, nazwisko, wiek, lekarz_id. Aby stworzyć raport, który będzie zawierał jedynie imiona oraz nazwiska pacjentów mających mniej niż 18 lat i zapisanych do lekarza o id równym 6, można wykorzystać kwerendę SQL

A. SELECT imie, nazwisko WHERE wiek<18 OR lekarz_id=6
B. SELECT imie, nazwisko WHERE wiek<18 AND lekarz_id=6
C. SELECT imie, nazwisko FROM Pacjenci WHERE wiek<18 OR lekarz_id=6
D. SELECT imie, nazwisko FROM Pacjenci WHERE wiek<18 AND lekarz_id=6
Aby uzyskać raport z tabeli Pacjenci, w którym znajdują się wyłącznie imiona i nazwiska pacjentów poniżej 18 roku życia zapisanych do lekarza o id równym 6, należy użyć następującej kwerendy SQL: SELECT imie, nazwisko FROM Pacjenci WHERE wiek<18 AND lekarz_id=6. Kluczowe w tej kwerendzie jest zastosowanie operatora AND, który pozwala na jednoczesne spełnienie obu warunków. W SQL, operator AND łączy dwa warunki, które muszą być prawdziwe, aby dany wiersz został uwzględniony w wynikach. Operator OR byłby nieodpowiedni, ponieważ mógłby zwrócić pacjentów, którzy są młodsi niż 18 lat, ale zapisani do innych lekarzy, co nie spełnia wymagań zadania. Ta kwerenda jest zgodna z ANSI SQL, który jest standardem dla zapytań do baz danych, a także dobrze ilustruje zasady filtracji danych w kontekście relacyjnych baz danych. Przykład takiej tabeli mógłby wyglądać następująco: imie: 'Jan', nazwisko: 'Kowalski', wiek: 17, lekarz_id: 6. W tym przypadku, zapytanie zwróciłoby imię i nazwisko Jana Kowalskiego, ponieważ spełnia on oba warunki.

Pytanie 7

Aby przedstawić dane w bazach danych, które spełniają określone kryteria, należy stworzyć

A. raport
B. relację
C. formularz
D. makropolecenie
Wybór relacji, formularza lub makropolecenia jako odpowiedzi na pytanie o prezentację danych spełniających określone warunki jest nieprawidłowy z kilku powodów. Relacja w bazach danych odnosi się do struktury danych, która opisuje związki między tabelami, a nie do sposobu ich prezentacji. Choć relacje są fundamentem, na którym opiera się przechowywanie i organizowanie danych, same w sobie nie oferują narzędzia do wyodrębniania czy przedstawiania informacji w przystępny sposób. Formularze z kolei są wykorzystywane głównie do wprowadzania danych do systemu, pozwalając użytkownikom na interakcję z bazą, jednak nie służą one do analizy ani prezentacji danych w formie zrozumiałej dla odbiorcy. Makropolecenia, choć mogą automatyzować pewne procesy związane z przetwarzaniem danych, również nie spełniają funkcji raportowania, ponieważ są narzędziem do wykonywania powtarzalnych operacji. Wybierając te odpowiedzi, można wpaść w pułapkę myślową, w której myli się funkcje narzędzi bazodanowych, co może prowadzić do błędnych decyzji w zakresie projektowania systemów informatycznych. Każde z tych narzędzi pełni swoją specyficzną rolę w ekosystemie baz danych, lecz tylko raporty są zaprojektowane z myślą o efektywnej prezentacji danych zgodnie z określonymi kryteriami.

Pytanie 8

Jakiego typu danych w bazie MySQL należy używać, aby zapisać datę oraz czas w jednym polu?

A. DATE
B. YEAR
C. BOOLEAN
D. TIMESTAMP
Wybór błędnych typów danych do przechowywania daty i czasu w MySQL może prowadzić do poważnych problemów w aplikacjach. Typ danych DATE jest zaprojektowany jedynie do przechowywania dat bez informacji o czasie, co oznacza, że nie nadaje się do sytuacji, gdzie potrzebne są dokładne informacje co do godzin i minut. Użycie DATE w tym kontekście ogranicza możliwości analizy danych związanych z czasem, na przykład w przypadku zapisywania logów zdarzeń, gdzie istotne jest zarówno data, jak i godzina wystąpienia. Z kolei typ YEAR jest jeszcze bardziej ograniczony, ponieważ pozwala na przechowywanie tylko informacji o roku. Takie podejście jest niewystarczające w większości przypadków, gdzie pełna data i czas są wymagane do prawidłowego zarządzania danymi. Typ BOOLEAN, który ma tylko dwa stany (prawda/fałsz), również nie jest odpowiedni do przechowywania daty i czasu, co jest absolutnie nieadekwatne do tego celu. Wybór niewłaściwego typu danych często wynika z braku zrozumienia, jak ważne jest precyzyjne określenie wymagań dotyczących danych w danym kontekście. Używanie typów danych, które nie są dostosowane do specyficznych potrzeb aplikacji, może prowadzić do błędów, utraty danych oraz trudności w przyszłych aktualizacjach i rozbudowach systemów.

Pytanie 9

W tabeli personel znajdują się pola: imię, nazwisko, pensja, staż. Aby obliczyć średnią pensję osób zatrudnionych z doświadczeniem od 10 do 20 lat włącznie, należy przeprowadzić kwerendę:

A. SELECT COUNT(pensja) FROM personel WHERE staz >= 10 AND staz <= 20
B. SELECT AVG(pensja) FROM personel WHERE staz >= 10 AND staz <= 20
C. SELECT COUNT(*) FROM personel WHERE staz >= 10 AND staz <= 20
D. SELECT AVG(*) FROM personel WHERE staz >= 10 AND staz <= 20
Analizując błędne odpowiedzi, można zauważyć, że pierwsza z nich wykorzystuje funkcję COUNT, która zlicza liczbę rekordów spełniających określone warunki, a nie oblicza średniej wartości. W tym przypadku, nawet jeśli kwerenda zwróciłaby liczby pracowników z odpowiednim stażem, nie dostarczyłaby informacji o średniej pensji, co jest kluczowe w postawionym pytaniu. Kolejna błędna odpowiedź również odnosi się do funkcji COUNT, co jeszcze raz pokazuje brak zrozumienia celu analizy. Trzecia odpowiedź, z wykorzystaniem COUNT(*), podobnie jak poprzednie, skupia się na liczbie rekordów, a nie na wartościach numerycznych. W kontekście analizy danych, takie podejście prowadzi do niepełnych wniosków i może zniekształcać rzeczywistość finansową firmy. Wreszcie, ostatnia odpowiedź, wykorzystująca AVG(*) jest niepoprawna z technicznego punktu widzenia, ponieważ funkcja AVG wymaga podania konkretnego pola numerycznego, a nie symbolu ogólnego. W praktyce oznacza to, że użytkownik, który wybiera tę opcję, nie wykorzystuje pełni możliwości, jakie daje SQL, a także nie ma świadomości, jak ważne jest precyzyjne formułowanie zapytań. Podsumowując, błędne odpowiedzi wynikają z nieporozumienia dotyczącego zastosowania funkcji agregujących oraz ich roli w analizie danych.

Pytanie 10

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

A. REVOKE SELECT, UPDATE ON gazeta.* FROM 'redaktor'@'localhost';
B. REVOKE SELECT, ALTER ON gazeta.* FROM 'redaktor'@'localhost';
C. GRANT SELECT, UPDATE ON gazeta.* TO 'redaktor'@'localhost';
D. GRANT SELECT, ALTER ON gazeta.* TO '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 11

Jakie zapytanie SQL będzie odpowiednie do odnalezienia w podanej tabeli tylko imion oraz nazwisk pacjentów, którzy przyszli na świat przed rokiem 2002?

Ilustracja do pytania
A. SELECT * FROM Pacjenci WHERE rok_urodzenia <= 2002
B. SELECT * FROM Pacjenci WHERE rok_urodzenia LIKE 2002
C. SELECT imie, nazwisko FROM Pacjenci WHERE rok_urodzenia < 2002
D. SELECT imie, nazwisko FROM Pacjenci WHERE data_ostatniej_wizyty < 2002
W tym zapytaniu zastosowałeś składnię SELECT imie, nazwisko FROM Pacjenci WHERE rok_urodzenia < 2002, co jest super, bo pozwala wyciągnąć tylko te imiona i nazwiska pacjentów, którzy urodzili się przed rokiem 2002. Użycie konkretnych kolumn jak imie i nazwisko zamiast znaku * to niezła sprawa, bo ogranicza wyniki do tego, co naprawdę potrzebujesz. To z kolei może znacząco zwiększyć wydajność przesyłania danych. No i to WHERE rok_urodzenia < 2002 – świetny ruch! Fajnie, że potrafisz filtrować dane według konkretnego warunku. Bez tego miałbyś wszystkie osoby, nie tylko te sprzed 2002 roku. To jest właśnie selekcja warunkowa w SQL, a jej znajomość to podstawa przy analizie danych. Zgadzam się również, że uniknięcie znaków wieloznacznych jak LIKE w tej sytuacji to dobre podejście, bo używasz bezpośrednich porównań liczbowych, co generalnie działa lepiej i daje jaśniejsze wyniki.

Pytanie 12

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.Lekarze_id
C. Lekarze.id = Pacjenci.Recepty_id
D. Lekarze.id = Recepty.id
Wybór niepoprawnych odpowiedzi często wynika z błędnego zrozumienia relacji między tabelami w bazie danych. Pierwsza opcja Lekarze.id = Pacjenci.id sugeruje mylne podejście że lekarz i pacjent mogą być tym samym podmiotem co jest sprzeczne z zasadą separacji encji w relacyjnych bazach danych. Taka relacja nie ma logicznego sensu w kontekście medycznym gdzie lekarz to osoba świadcząca usługi zdrowotne a pacjent to osoba je otrzymująca. Podobnie opcja Lekarze.id = Pacjenci.Recepty_id nie jest poprawna gdyż sugeruje bezpośrednią relację między lekarzami a lekami przepisanymi pacjentowi co ignoruje fakt że recepty są osobnymi dokumentami generowanymi w procesie leczenia. Recepty są przypisane do pacjentów ale to lekarze zlecają je poprzez interakcję z pacjentem nie bezpośrednio z receptą. Ostatnia opcja Lekarze.id = Recepty.id sugeruje relację bezpośrednią między lekarzami a receptami z pominięciem pacjentów co jest błędnym uproszczeniem procesu przepisywania leków. W rzeczywistości każda recepta jest wynikiem interakcji między lekarzem a pacjentem i nie istnieje bezpośrednia zależność między lekarzem a receptą. Takie myślenie prowadzi do błędów w projektowaniu struktury bazy danych co może skutkować trudnościami w zarządzaniu danymi i utrzymaniu ich spójności. Zrozumienie prawidłowych relacji między tabelami w bazie danych jest kluczowe dla efektywnego zarządzania informacją i eliminacji błędów w aplikacjach biznesowych.

Pytanie 13

Jakiego języka można użyć do nawiązania połączenia z bazą MySQL w trakcie tworzenia aplikacji internetowej?

A. HTML
B. CSS
C. PHP
D. XHTML
PHP to naprawdę fajny język skryptowy, który świetnie sprawdza się w tworzeniu dynamicznych aplikacji internetowych. Jest super efektywny, kiedy trzeba połączyć się z bazami danych, takimi jak MySQL. Jako język serwerowy, daje programistom narzędzia do robienia różnych rzeczy z danymi, jak dodawanie, edytowanie czy usuwanie rekordów w bazie. Na przykład, gdy tworzysz aplikację do zarządzania użytkownikami, możesz użyć PHP do obsługi formularza rejestracyjnego, który zbiera dane od użytkowników i następnie łączy się z MySQL, by je zapisać. Do łączenia z bazą danych używa się funkcji, jak mysqli_connect() lub PDO (PHP Data Objects), co pozwala na bezpieczne i sprawne zarządzanie połączeniami oraz zapytaniami SQL. Co ważne, PHP zachęca do dobrych praktyk, jak stosowanie przygotowanych zapytań, co mocno zwiększa bezpieczeństwo aplikacji, chroniąc przed różnymi atakami, jak SQL injection.

Pytanie 14

Zgodnie z zasadami ACID, odnoszącymi się do przeprowadzania transakcji, wymóg trwałości (ang. durability) wskazuje, że

A. w trakcie realizacji transakcji dane mogą być zmieniane przez inne transakcje
B. w sytuacji naruszenia spójności bazy danych transakcja eliminuje tabele z kluczami obcymi
C. transakcja może w pewnych okolicznościach być rozdzielona na dwa niezależne etapy
D. dane zatwierdzone przez transakcję powinny być dostępne niezależnie od tego, co się wydarzy po jej zakończeniu
Wymóg trwałości (durability) w kontekście właściwości ACID oznacza, że po zatwierdzeniu transakcji, wszystkie zmiany dokonane na danych muszą być utrwalone w trwałym magazynie danych, a ich dostępność nie może być zagrożona przez awarie systemu, takie jak utrata zasilania czy awarie oprogramowania. Przykładem może być system bankowy, gdzie po wykonaniu operacji przelewu, saldo konta musi być natychmiastowo zaktualizowane i dostępne w systemie, niezależnie od tego, co wydarzy się później. W praktyce, wiele systemów zarządzania bazami danych, takich jak PostgreSQL czy MySQL, wykorzystuje mechanizmy logowania transakcji oraz techniki replikacji, aby zapewnić, że dane pozostaną spójne i dostępne nawet w obliczu kryzysów. Zgodność z zasadą trwałości jest kluczowa dla utrzymania zaufania użytkowników i stabilności operacyjnej systemów informacyjnych, co jest wspierane przez standardy takie jak ISO/IEC 27001 dotyczące zarządzania bezpieczeństwem informacji.

Pytanie 15

Formularz, który pełni rolę pośrednika w nawigacji po bazie danych pomiędzy formularzami i kwerendami dostępnymi w systemie, określany jest jako formularz

A. sterującym
B. pierwotnym
C. zagnieżdżonym
D. głównym
Formularz sterujący jest kluczowym elementem w projektowaniu baz danych, który pozwala na efektywną nawigację pomiędzy różnymi formularzami oraz kwerendami. Jego główną funkcją jest dostarczanie użytkownikowi centralnego punktu dostępu do różnych części aplikacji, co ułatwia zarządzanie danymi oraz ich przeglądanie. Przykładowo, w aplikacjach biznesowych formularz sterujący może zawierać przyciski, które kierują użytkownika do formularzy wprowadzania danych, formularzy raportowych, czy kwerend do wyszukiwania informacji. Dobrą praktyką jest, aby formularz sterujący był intuicyjny i estetyczny, co zwiększa użyteczność i efektywność aplikacji. W standardach projektowania baz danych, formularze sterujące są często powiązane z koncepcją MVC (Model-View-Controller), gdzie pełnią rolę kontrolera, który zarządza przepływem danych między modelem a widokiem, co umożliwia lepsze organizowanie interakcji użytkownika z systemem.

Pytanie 16

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

A. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >=20;
B. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >=20 AND gromada = 'ssak';
C. SELECT nazwa FROM zwierzeta WHERE gromada = 'ssak';
D. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >=20 OR gromada = 'ssak';
Twoja odpowiedź jest jak najbardziej na miejscu, bo spełnia te dwa ważne wymagania z pytania: pokazuje nazwy zwierząt, które żyją przynajmniej 20 lat i są ssakami. Użycie AND w klauzuli WHERE sprawia, że w wynikach są tylko te zwierzęta, które pasują do obu kryteriów. To zapytanie ma swoje zastosowanie, na przykład w analizach zoologicznych, gdzie długość życia niektórych gatunków ssaków może być kluczowa, zwłaszcza w kontekście ochrony i badań nad ich ekologią. Z osobistego doświadczenia mogę powiedzieć, że dobrze jest stosować takie zapytania w bazach danych, bo to zapewnia lepszą efektywność i wydajność w przetwarzaniu danych. Generalnie w tworzeniu zapytań SQL warto zawsze ustalać konkretne warunki w klauzuli WHERE, żeby uniknąć niechcianych wyników i zmniejszyć obciążenie bazy danych.

Pytanie 17

Zdefiniowana jest tabela uczniowie z polami id, nazwisko, imie oraz klasa. Jakie zapytanie SQL pozwoli nam uzyskać liczbę osób w danym klasa i wskazać jej nazwę?

A. SELECT COUNT(id), klasa FROM uczniowie GROUP BY klasa
B. SELECT COUNT(id), klasa FROM uczniowie ORDER BY klasa
C. SELECT SUM(id), klasa FROM uczniowie ORDER BY klasa
D. SELECT SUM(id), klasa FROM uczniowie GROUP BY klasa
Odpowiedź 'SELECT COUNT(id), klasa FROM uczniowie GROUP BY klasa;' jest prawidłowa, ponieważ wykorzystuje funkcję agregującą COUNT do zliczenia liczby uczniów w każdej klasie. Kluczowym elementem jest tutaj klauzula GROUP BY, która grupuje wyniki według kolumny 'klasa'. Dzięki temu uzyskujemy dla każdej klasy osobny wynik z liczbą uczniów. To podejście jest zgodne z dobrymi praktykami w SQL, gdzie użycie funkcji agregujących z grupowaniem pozwala na efektywne przetwarzanie danych. Przykładowo, w przypadku szkoły, taka analiza może być użyta do zarządzania zasobami lub planowania, na przykład, przy ustalaniu liczby nauczycieli potrzebnych w danej klasie. Użycie COUNT zapewnia również, że wynik będzie liczbowy, co jest istotne dla dalszej analizy danych. Warto również pamiętać, że korzystanie z odpowiednich aliasów dla wyników może poprawić czytelność wyników zapytania.

Pytanie 18

Na zakończenie dnia w systemie zarządzania magazynem sklepu spożywczego generowany jest raport, który przedstawia produkty oraz ich dostawców, dla których ilość na stanie jest mniejsza niż 10 sztuk. Do stworzenia tego raportu zastosowano kwerendę

A. CHECK TABLE
B. UPDATE
C. INSERT INTO
D. SELECT
Odpowiedź 'SELECT' jest poprawna, ponieważ to polecenie służy do pobierania danych z bazy danych. Kwerenda SELECT umożliwia zdefiniowanie, jakie kolumny oraz z jakich tabel chcemy wyświetlić. W kontekście raportu dla sklepu spożywczego, który wyświetla produkty z ich dostawcami, gdzie stan magazynowy jest mniejszy niż 10 sztuk, kwerenda SELECT pozwoli na precyzyjne określenie kryteriów wyszukiwania, takich jak nazwa produktu, nazwa dostawcy oraz warunek dotyczący stanu magazynowego. Przykładowa kwerenda mogłaby wyglądać następująco: 'SELECT product_name, supplier_name FROM inventory WHERE stock < 10'. W praktyce, stosowanie kwerend SELECT w raportach umożliwia monitorowanie stanów magazynowych, co jest kluczowe dla efektywnego zarządzania zapasami oraz podejmowania decyzji o zamówieniach. Takie podejście jest zgodne z dobrymi praktykami w zarządzaniu danymi w sklepach detalicznych, gdzie ciągłe monitorowanie stanu magazynowego jest kluczowe dla utrzymania płynności sprzedaży i zadowolenia klientów.

Pytanie 19

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. serwera bazy danych
B. dzielonej bazy danych
C. witryny programu SharePoint
D. folderu sieciowego
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 20

Model fizyczny replikacji bazy danych pokazany na ilustracji to model

Ilustracja do pytania
A. równorzędny
B. rozproszony
C. centralnego subskrybenta
D. centralnego wydawcy
Model centralnego wydawcy jest kluczowym elementem w systemach replikacji baz danych gdzie jeden serwer pełni rolę wydawcy dystrybutora danych do wielu subskrybentów Ta architektura pozwala na efektywne zarządzanie danymi poprzez centralne sterowanie zmianami i ich dystrybucję do podłączonych serwerów subskrybentów W praktyce takie podejście jest używane w dużych organizacjach gdzie konieczne jest zapewnienie aktualności i spójności danych w różnych lokalizacjach Przykładowo w firmach z wieloma oddziałami centralny serwer może dystrybuować dane transakcyjne do lokalnych serwerów zapewniając wszystkim oddziałom bezpośredni dostęp do aktualnych informacji Dzięki temu możliwe jest przeprowadzenie analizy danych w czasie rzeczywistym oraz synchronizacja danych co jest kluczowe w przypadku systemów ERP i CRM Stosowanie modelu centralnego wydawcy zgodnie z dobrymi praktykami umożliwia także łatwe skalowanie systemu oraz zarządzanie bezpieczeństwem danych poprzez centralne punkty kontrolne Taka architektura minimalizuje ryzyko konfliktów danych i zapewnia integralność danych co jest zgodne ze standardami branżowymi

Pytanie 21

Określ rodzaj powiązania pomiędzy tabelami: Tabela1 oraz Tabela3

Ilustracja do pytania
A. Jeden do wielu
B. Wiele do wielu
C. Jeden do jednego
D. Wiele do jednego
Zrozumienie typów relacji w bazach danych jest kluczowym aspektem projektowania efektywnych i zrównoważonych systemów informatycznych. Jednym z najczęstszych błędów jest mylenie relacji wiele do wielu z innymi rodzajami relacji, takimi jak jeden do wielu lub jeden do jednego. Relacja jeden do wielu oznacza, że jeden rekord w jednej tabeli jest powiązany z wieloma rekordami w innej tabeli, co w przypadku Tabela1 i Tabela3 nie jest stosowne, ponieważ wymagałoby to bezpośredniego połączenia między tymi tabelami bez użycia tabeli pośredniej. Z kolei relacja jeden do jednego implikuje, że każdy rekord w jednej tabeli odpowiada dokładnie jednemu rekordowi w drugiej tabeli, co ogranicza elastyczność danych i nie pasuje do struktur gdzie występuje wiele powiązań, jak w przypadku szkół, gdzie wielu uczniów może mieć zajęcia z tym samym nauczycielem. Wreszcie, relacja wiele do jednego jest odwrotnością relacji jeden do wielu, gdzie wiele rekordów w jednej tabeli odpowiada jednemu rekordowi w drugiej tabeli, co również nie znajduje odzwierciedlenia w przedstawionym schemacie, jako że nie opisuje wzajemnych powiązań uczniów i nauczycieli. Zrozumienie i prawidłowe zastosowanie relacji wiele do wielu eliminuje redundancję danych i umożliwia efektywne przechowywanie oraz przetwarzanie informacji w systemach zarządzania bazami danych. Kluczem do sukcesu jest tutaj wykorzystanie tabel pośrednich do prawidłowego mapowania powiązań między tabelami, co jest standardem w dobrych praktykach projektowania baz danych.

Pytanie 22

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

A. SELECT LIMIT 3 nazwisko FROM klienci ORDER BY nazwisko DESC
B. SELECT nazwisko FROM klienci LIMIT 3
C. SELECT nazwisko FROM klienci ORDER BY nazwisko DESC LIMIT 3
D. SELECT nazwisko FROM klienci ORDER BY punkty DESC LIMIT 3
Wybór kwerendy SELECT nazwisko FROM klienci ORDER BY punkty DESC LIMIT 3 jest poprawny, ponieważ wykorzystuje klauzulę ORDER BY w celu posortowania wyników na podstawie kolumny 'punkty' w porządku malejącym. Dzięki temu, najpierw wyświetlone zostaną rekordy z najwyższą liczbą punktów. Zastosowanie LIMIT 3 oznacza, że z całej posortowanej listy, wybierane są jedynie trzy rekordy, co idealnie odpowiada wymaganiu znalezienia trzech najlepszych klientów. Takie podejście jest zgodne z dobrymi praktykami w programowaniu SQL, ponieważ pozwala na precyzyjne wydobycie danych z bazy, a także na efektywne zarządzanie wynikami zapytań. Przykład zastosowania to sytuacja, gdy firma chce nagrodzić swoich najlepszych klientów na podstawie ich aktywności, co może przyczynić się do zwiększenia ich lojalności. W kontekście analizy danych, zrozumienie, jak korzystać z klauzul ORDER BY i LIMIT, jest kluczowe dla optymalizacji zapytań oraz interpretacji wyników.

Pytanie 23

Które tabele będą analizowane w wyniku tego polecenia?

CHECK TABLE pracownicy CHANGED;
A. Tabele, które zmieniły się od poprzedniej weryfikacji lub nie zostały poprawnie zamknięte
B. Wyłącznie tabele, które nie zostały poprawnie zamknięte
C. Jedynie tabele odwołujące się do innych
D. Tabele, które zostały zmodyfikowane w bieżącej sesji
W kontekście podanych odpowiedzi, jedynie opcja pierwsza jest prawidłowa. Niepoprawne jest stwierdzenie, że polecenie CHECK TABLE będzie sprawdzać tylko tabele, które nie zostały poprawnie zamknięte, jak sugeruje druga odpowiedź. Taki scenariusz odnosi się do bardziej ograniczonej funkcji, podczas gdy w realnych zastosowaniach administracyjnych konieczne jest uwzględnienie wszelkich potencjalnych zmian w tabelach, które mogą wpływać na ich integralność. Trzecia odpowiedź wskazuje na tabele referujące do innych, co jest błędnym założeniem, ponieważ polecenie nie ogranicza się do takich relacji, lecz skupia się na detekcji zmian w danych. Ostatecznie, czwarta odpowiedź sugeruje sprawdzanie tabel zmienionych jedynie w bieżącej sesji, co jest nieprawidłowe, ponieważ polecenie z opcją CHANGED poszukuje zmian od ostatniego sprawdzenia bez ograniczenia czasowego do jednej sesji. Typowe błędy myślowe wynikają z niezrozumienia zakresu działania tej funkcji, która ma za zadanie identyfikację zmian wpływających na dane niezależnie od kontekstu czasowego, co jest fundamentalne dla zachowania integralności i poprawności operacji w ramach zarządzania bazą danych, zgodnie z dobrymi praktykami branżowymi w zarządzaniu systemami bazodanowymi.

Pytanie 24

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

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

Pytanie 25

Jakie z poniższych stwierdzeń właściwie opisuje tabelę utworzoną przez: CREATE TABLE dane (kolumna INTEGER(3));

A. Tabela zawiera jedną kolumnę, która składa się z trzyelementowych tablic
B. Tabela o nazwie dane ma jedną kolumnę typu liczb całkowitych
C. Kolumny w tabeli dane nazywają się: kolumna1, kolumna2, kolumna3
D. Tabela o nazwie dane zawiera trzy kolumny typu liczb całkowitych
Wszystkie stwierdzenia w pozostałych odpowiedziach są błędne, ponieważ opierają się na niewłaściwym zrozumieniu definicji tabeli w SQL. Twierdzenie, że tabela posiada jedną kolumnę zawierającą trzy elementowe tablice, jest mylące, ponieważ w SQL nie definiuje się kolumn jako tablic. W systemach zarządzania bazami danych, takich jak MySQL, PostgreSQL, czy Oracle, kolumny są jednostkami przechowującymi pojedyncze wartości, a nie struktury złożone jak tablice. Innym błędnym założeniem jest twierdzenie, że kolumny tabeli dane nazywają się kolumna1, kolumna2, kolumna3; w rzeczywistości, tabela posiada jedną kolumnę o nazwie 'kolumna', co jest jasno określone w definicji. Ostatnia nieprawidłowa odpowiedź sugerująca, że tabela ma trzy kolumny jest również nieprawdziwa, ponieważ jest tylko jedna kolumna. Przy definiowaniu tabel w SQL kluczowe jest przestrzeganie zasad dotyczących struktury danych oraz ich odpowiedniej nazwy, co ma fundamentalne znaczenie dla późniejszego korzystania z tych danych. Zrozumienie tych zasad oraz ich praktyczne zastosowanie w pracy z bazami danych pozwala na unikanie typowych błędów i poprawne projektowanie struktur baz danych.

Pytanie 26

W bazie danych dotyczącej sklepu znajduje się tabela artykuły, która posiada pole o nazwie nowy. Jak można zaktualizować to pole, aby dla każdego rekordu wprowadzić wartość TRUE, stosując odpowiednią kwerendę?

A. INSERT INTO artykuły VALUE nowy=TRUE
B. UPDATE artykuły SET nowy=TRUE
C. UPDATE nowy FROM artykuły VALUE TRUE
D. INSERT INTO nowy FROM artykuły SET TRUE
Zastosowane w niepoprawnych odpowiedziach metody są błędne z kilku powodów, które warto przeanalizować. W pierwszym przypadku, INSERT INTO artykuły VALUE nowy=TRUE; próbuje wykorzystać instrukcję INSERT do wstawienia nowych danych, co jest nieodpowiednie w kontekście aktualizacji istniejących rekordów. INSERT służy do dodawania nowych wierszy, a nie do modyfikacji istniejących, co skutkuje nieadekwatnością do przedstawionego problemu. W drugim przykładzie, UPDATE nowy FROM artykuły VALUE TRUE; nie ma poprawnej składni SQL. Konstrukcja ta nie uwzględnia prawidłowego użycia klauzuli SET, co powoduje, że kwerenda byłaby nieefektywna. Trzeci wariant, INSERT INTO nowy FROM artykuły SET TRUE;, nie ma też sensu, ponieważ pole 'nowy' nie powinno być wstawiane jako nowy rekord. Tego typu błędy często wynikają z nieznajomości i źle zrozumianej składni SQL. Ponadto, nieodpowiednie użycie instrukcji INSERT oraz błędne koncepcje dotyczące aktualizacji danych w bazie mogą prowadzić do poważnych zniekształceń danych. W kontekście dobrych praktyk, kluczowe jest zrozumienie różnicy między operacjami INSERT i UPDATE oraz ich właściwym zastosowaniem w praktyce dla zapewnienia spójności oraz prawidłowego zarządzania danymi.

Pytanie 27

W tabeli artykuly przeprowadzono poniższe operacje związane z uprawnieniami użytkownika jan.

GRANT ALL PRIVILEGES ON artykuły TO jan
REVOKE SELECT, UPDATE ON artykuly FROM jan

Jakie będą uprawnienia użytkownika jan po wykonaniu tych operacji?

A. tworzenia tabel oraz ich zapełniania danymi
B. aktualizowania informacji oraz przeglądania tabeli
C. przeglądania tabeli
D. tworzenia tabeli oraz aktualizowania danych w niej
Wybór odpowiedzi dotyczącej "aktualizowania danych i przeglądania tabeli" nie jest poprawny, ponieważ po wykonaniu polecenia REVOKE SELECT, UPDATE ON artykuly FROM jan, jan traci te konkretne uprawnienia. Warto zauważyć, że polecenie GRANT ALL PRIVILEGES przyznaje użytkownikowi szereg uprawnień, ale ich zakres można ograniczyć innymi poleceniami, jak REVOKE. Z tego powodu jan nie ma już możliwości przeglądania tabeli ani jej aktualizowania, co czyni tę odpowiedź nieaktualną. Często w praktyce zawodowej zdarza się, że nadawane są szerokie uprawnienia, a następnie w miarę potrzeby są one ograniczane, co może prowadzić do nieporozumień, jeśli nie zrozumie się działania tych poleceń. Kolejna niepoprawna odpowiedź, która sugeruje "przeglądanie tabeli", również jest błędna z tego samego powodu - jan nie ma takich uprawnień po REVOKE. Ostatnia z odpowiedzi, mówiąca o "tworzeniu tabeli i aktualizowaniu w niej danych", jest niepoprawna, ponieważ użytkownik jan nie ma już prawa aktualizacji danych po wycofaniu tych uprawnień. Zrozumienie mechanizmów zarządzania uprawnieniami jest kluczowe w pracy z bazami danych, aby uniknąć przypisania użytkownikom większych niż potrzebne przywilejów, co mogłoby prowadzić do nieautoryzowanego dostępu lub usunięcia danych.

Pytanie 28

Rozważ tabelę mieszkań, która zawiera kolumny: adres, metraż, ile_pokoi, standard, status, cena. Wykonanie poniższej kwerendy SQL SELECT spowoduje wyświetlenie:

SELECT metraz, cena FROM mieszkania WHERE ile_pokoi > 3;
A. wszystkie informacje, z wyjątkiem adresu, dotyczące mieszkań z więcej niż 3 pokojami
B. wszystkie dane mieszkań, które mają co najmniej 3 pokoje
C. metraż oraz cena tych mieszkań, które posiadają co najmniej 3 pokoje
D. metraż oraz cena tych mieszkań, które mają więcej niż 3 pokoje
Odpowiedź wskazująca na metraż oraz cenę mieszkań, które mają więcej niż 3 pokoje jest prawidłowa, ponieważ kwerenda SQL wykorzystuje operator '>', co oznacza, że wybrani będą tylko ci, którzy mają co najmniej 4 pokoje. W kontekście tabeli mieszkania, zapytanie SELECT metraz, cena FROM mieszkania WHERE ile_pokoi > 3; efektywnie filtruje dane, aby zwrócić tylko kolumny metraż oraz cena dla mieszkań spełniających ten warunek. W praktyce, umiejętność pisania takich zapytań SQL jest kluczowa w pracy z bazami danych, gdzie często potrzebne jest zrozumienie struktury danych i umiejętność ich analizy. Przykładem zastosowania może być analiza rynku nieruchomości, gdzie deweloperzy mogą chcieć zbadać ceny mieszkań większych niż 3 pokoje, aby lepiej dostosować swoje oferty do potrzeb klientów. Warto również zaznaczyć, że takie zapytania powinny być pisane zgodnie z najlepszymi praktykami, takimi jak unikanie selekcji niepotrzebnych danych, co przyspiesza ich przetwarzanie oraz zmniejsza obciążenie bazy danych.

Pytanie 29

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

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

Pytanie 30

Podaj polecenie SQL, które pozwoli na dodanie kolumny miesiacSiewu do tabeli rośliny znajdującej się w bazie danych

A. ALTER TABLE rośliny ADD miesiacSiewu int;
B. CREATE TABLE rośliny {miesiacSiewu int};
C. INSERT INTO rośliny VALUES (miesiacSiewu int);
D. UPDATE rośliny ADD miesiacSiewu int;
Inne odpowiedzi nie są poprawne z paru powodów. Na przykład, 'CREATE TABLE rośliny {miesiacSiewu int};' jest błędne, bo komenda 'CREATE TABLE' służy do tworzenia nowych tabel, nie do zmieniania istniejących. To może wprowadzać w błąd co do podstaw SQL, bo 'CREATE' nie działa w kontekście dodawania kolumn do już istniejącej tabeli. Z kolei 'INSERT INTO rośliny VALUES (miesiacSiewu int);' dotyczy dodawania danych, a nie zmiany struktury. To częsty błąd, gdy ktoś myli dodawanie nowych danych z dodawaniem kolumn, co pokazuje, że nie do końca rozumie różnicę między DDL (Data Definition Language) a DML (Data Manipulation Language). A 'UPDATE rośliny ADD miesiacSiewu int;' też nie ma sensu, bo komenda UPDATE jest do aktualizacji danych, a nie do zmiany struktury tabeli. Takie pomyłki mogą wkurzać i sprawiać problemy z bazami danych, dlatego warto mieć dobrą wiedzę o poleceniach SQL i ich zastosowaniach.

Pytanie 31

W języku SQL, jaki będzie efekt wykonania poniższego zapytania?

ALTER TABLE osoba DROP COLUMN grupa;
A. Zmieniona zostanie nazwa tabeli na grupa.
B. Dodana zostanie kolumna grupa.
C. Usunięta zostanie kolumna grupa.
D. Zmieniona zostanie nazwa kolumny na grupa.
Wybrana odpowiedź jest niepoprawna, ale nie martw się, to jest okazja do nauki. Zapytanie SQL w pytaniu nie dotyczyło zmiany nazwy tabeli ani kolumny, a także nie dotyczyło dodawania nowej kolumny. W języku SQL do zmiany nazwy tabeli używamy zapytania 'RENAME', natomiast do zmiany nazwy kolumny używamy 'ALTER TABLE' z dodatkiem 'RENAME COLUMN'. Dodawanie nowej kolumny wymaga natomiast użycia 'ALTER TABLE' z dodatkiem 'ADD COLUMN'. Wszystkie te operacje są ważne i niezbędne w różnych scenariuszach pracy z bazą danych. Jednak w tym przypadku mieliśmy do czynienia z instrukcją 'ALTER TABLE' z dodatkiem 'DROP COLUMN', które służy do usunięcia kolumny. Pamiętaj, że każde z tych zapytań ma inne skutki i odpowiednie zastosowania, więc ważne jest dokładne zrozumienie różnic między nimi.

Pytanie 32

W bibliotece mysqli w PHP, aby uzyskać najbardziej aktualny komunikat o błędzie, można użyć funkcji

A. mysqli_use_result()
B. mysqli_errno()
C. mysqli_error_list()
D. mysqli_error()
Funkcja mysqli_error() w bibliotece mysqli języka PHP jest sposobem na uzyskanie ostatniego komunikatu o błędzie związanym z połączeniem lub zapytaniem SQL. Zwraca ona łańcuch znaków, który opisuje ostatni błąd związany z danym połączeniem. Jest to niezwykle przydatne narzędzie w procesie debugowania, ponieważ pozwala programiście szybko zidentyfikować źródło problemu. Na przykład, jeśli napotkasz błąd podczas wykonywania zapytania, możesz użyć mysqli_error($connection) po funkcji wykonującej zapytanie, aby uzyskać szczegółowy opis błędu. W kontekście dobrych praktyk programistycznych, zawsze należy obsługiwać błędy i nie ignorować ich, aby uniknąć trudności w przyszłości. Warto również pamiętać, że funkcja ta działa tylko w kontekście aktualnego połączenia bazodanowego, co oznacza, że przed jej użyciem musisz mieć aktywne połączenie. Przykład użycia: $result = mysqli_query($connection, $query); if (!$result) { echo mysqli_error($connection); }

Pytanie 33

GRANT SELECT, INSERT, UPDATE ON klienci TO anna;
Zakładając, że użytkownik wcześniej nie posiadał żadnych uprawnień, to polecenie SQL przyzna użytkownikowi anna prawa jedynie do:
A. wybierania, dodawania rekordów oraz modyfikacji struktury tabeli o nazwie klienci
B. wybierania, wstawiania oraz aktualizacji danych tabeli o nazwie klienci
C. wybierania, wstawiania oraz aktualizacji danych wszystkich tabel w bazie o nazwie klienci
D. wybierania, dodawania rekordów oraz zmiany struktury wszystkich tabel w bazie o nazwie klienci
Odpowiedź jest prawidłowa, ponieważ polecenie SQL 'GRANT SELECT, INSERT, UPDATE ON klienci TO anna;' przyznaje użytkownikowi 'anna' określone prawa do tabeli o nazwie 'klienci'. Prawa te obejmują możliwość wybierania, wstawiania oraz aktualizacji danych w tej tabeli, co jest zgodne z zasadami zarządzania uprawnieniami w systemach baz danych. W praktyce oznacza to, że użytkownik 'anna' będzie mógł wykonywać zapytania SELECT, co pozwoli mu na odczyt danych, a także wstawiać nowe rekordy (INSERT) oraz modyfikować istniejące (UPDATE). To jest standardowa praktyka w zarządzaniu dostępem do danych, która pozwala na precyzyjne kontrolowanie, jakie operacje mogą być wykonywane przez poszczególnych użytkowników. Dobrą praktyką jest ograniczenie uprawnień do minimum, które użytkownik potrzebuje do wykonania swoich zadań, co jest zgodne z zasadą najmniejszych uprawnień. Na przykład, jeżeli 'anna' jest odpowiedzialna tylko za wstawianie nowych klientów, to przyznawanie jej uprawnień do aktualizacji danych może nie być konieczne. W teorii i praktyce bazy danych, rozróżnienie pomiędzy różnymi rodzajami uprawnień jest kluczowe dla bezpieczeństwa i integralności danych.

Pytanie 34

Tabela góry, której fragment został pokazany, obejmuje polskie pasma górskie oraz ich szczyty. Podaj kwerendę obliczającą dla każdego pasma górskiego średnią wysokość szczytów.

A. SELECT pasmo, AVG(wysokosc) FROM gory GROUP BY pasmo
B. SELECT pasmo, AVG(wysokosc) FROM gory LIMIT pasmo
C. SELECT pasmo, COUNT(wysokosc) FROM gory ORDER BY pasmo
D. SELECT pasmo, SUM(wysokosc) FROM gory GROUP BY pasmo
Gratulacje! Twoja odpowiedź jest prawidłowa. Zapytanie 'SELECT pasmo, AVG(wysokosc) FROM gory GROUP BY pasmo;' jest poprawne. Funkcja AVG() jest jedną z funkcji agregujących w SQL, które służą do wykonania pewnej operacji na zestawie wartości. W tym przypadku oblicza ona średnią wartość wysokości szczytów dla każdego z pasm górskich. Funkcja GROUP BY jest natomiast klauzulą SQL, która jest używana do grupowania wartości z różnych wierszy w jedną grupę. W tym przypadku GROUP BY pasmo oznacza, że wyniki zostaną pogrupowane według pasma górskiego, co pozwala obliczyć średnią wysokość szczytów dla każdego z pasm. Jest to zgodne z treścią pytania. Pamiętaj, że wykorzystanie funkcji agregujących w SQL pozwala na efektywne przetwarzanie dużych ilości danych, co jest niezwykle ważne w praktycznych zastosowaniach baz danych.

Pytanie 35

Jaki zapis jest używany do definiowania klucza obcego w MySQL?

A. AUTO_INCREMENT(ID)
B. UNIQUE KEY(ID)
C. PRIMARY KEY(ID)
D. FOREIGN KEY(ID)
Odpowiedź FOREIGN KEY(ID) jest poprawna, ponieważ klucz obcy (foreign key) jest używany w bazach danych do ustanowienia i wymuszenia relacji pomiędzy dwiema tabelami. Klucz obcy w tabeli A wskazuje na klucz podstawowy (primary key) w tabeli B, co pozwala na utrzymanie integralności referencyjnej danych. Na przykład, jeżeli mamy tabelę 'Zamówienia', w której zapisujemy informacje o zamówieniach, i tabelę 'Klienci', w której mamy dane o klientach, możemy zastosować klucz obcy w tabeli 'Zamówienia', aby wskazywał na ID klienta w tabeli 'Klienci'. Dzięki temu, nie będzie możliwości dodania zamówienia dla nieistniejącego klienta, co zapewnia spójność i integralność bazy danych. Używanie kluczy obcych jest zgodne z najlepszymi praktykami projektowania baz danych, ponieważ pozwala na łatwiejsze zarządzanie danymi i ogranicza możliwość wystąpienia błędów. Warto również zauważyć, że klucze obce mogą być używane w kontekście kaskadowej aktualizacji lub usuwania, co dodatkowo ułatwia zarządzanie relacjami między tabelami.

Pytanie 36

W przedstawionym kodzie PHP przeprowadzono operację na bazie danych. Jaką funkcję należy wywołać, aby uzyskać liczbę wierszy, które zostały zmienione w tabeli?

$zapytanie="UPDATE kadra SET stanowisko='Programista' WHERE id < 10"; mysqli_query($db, $zapytanie);
A. mysqli_num_rows()
B. mysqli_use_result()
C. mysqli_field_count()
D. mysqli_affected_rows()
Wybór innych funkcji zamiast mysqli_affected_rows() prowadzi do nieporozumień dotyczących ich przeznaczenia i zastosowania. Przykładowo, funkcja mysqli_num_rows() jest używana w kontekście kwerend SELECT, gdzie zwraca liczbę wierszy w zestawie wyników. Nie może być zastosowana po operacjach modyfikujących bazę danych, takich jak UPDATE, ponieważ nie dostarcza informacji o efektach tych operacji. Z kolei mysqli_use_result() jest przeznaczona do przetwarzania zestawów wyników z zapytań, co znowu nie odnosi się do sytuacji, w której chcemy znać liczbę zmienionych wierszy. Funkcja mysqli_field_count() zwraca liczbę kolumn w ostatnim zapytaniu, które zwróciło rezultat, co również nie ma zastosowania w kontekście zapytań modyfikujących. Typowym błędem myślowym jest mieszanie funkcji związanych z różnymi rodzajami zapytań. Ważne jest, aby rozumieć, jak różne funkcje w PHP dotyczące MySQL są ze sobą powiązane i jakie mają specyficzne zastosowania. Nieprawidłowe użycie tych funkcji może prowadzić do błędnych wniosków o stanie bazy danych i utrudniać debugowanie aplikacji. W związku z tym kluczowym elementem efektywnego zarządzania bazami danych jest znajomość odpowiednich funkcji oraz ich funkcji i ograniczeń.

Pytanie 37

Jakie prawa: CREATE, ALTER, DROP zostały użyte w poleceniu GRANT?

A. pracy z danymi
B. pracy ze strukturą
C. pobierania danych z bazy
D. przyznawania uprawnień innym użytkownikom
Odpowiedź dotycząca manipulowania strukturą jest poprawna, ponieważ polecenia GRANT z zestawem praw CREATE, ALTER i DROP koncentrują się na zmianie i zarządzaniu strukturą bazy danych. CREATE pozwala na tworzenie nowych obiektów w bazie danych, takich jak tabele czy widoki. ALTER umożliwia modyfikację istniejących obiektów, na przykład dodawanie kolumn do tabeli. DROP służy do usuwania obiektów z bazy danych. Przykładowo, po nadaniu uprawnień CREATE, użytkownik może utworzyć nową tabelę, co jest kluczowe w procesie projektowania bazy danych. W praktyce, odpowiednie zarządzanie tymi uprawnieniami jest istotne w kontekście bezpieczeństwa i organizacji danych. Standardy branżowe, takie jak te określone przez SQL ANSI, zalecają precyzyjne zarządzanie uprawnieniami, aby uniknąć nieautoryzowanych zmian w strukturze bazy danych, co może prowadzić do utraty danych lub naruszeń bezpieczeństwa.

Pytanie 38

Fragment kwerendy SQL zaprezentowany w ramce ma na celu uzyskanie

SELECT COUNT(wartosc) FROM ...
A. liczbę kolumn.
B. liczbę wierszy.
C. sumę wartości w kolumnie wartosc.
D. średnią wartość w kolumnie wartosc.
SELECT COUNT(wartosc) w zapytaniu SQL jest często mylone z innymi funkcjami agregującymi, co może prowadzić do nieporozumień dotyczących jego działania. COUNT jest specyficznie zaprojektowany do zliczania niepustych wartości w określonej kolumnie, dlatego nie jest używany do obliczania sumy czy średniej wartości. Suma w kolumnie wartosc wymagałaby użycia funkcji SUM(wartosc), która zlicza wartości liczbowe. Z kolei obliczanie średniej wartości w kolumnie wymagałoby zastosowania funkcji AVG(wartosc), która dzieli sumę wartości przez liczbę niepustych wierszy. Mylenie tych funkcji może prowadzić do błędnych interpretacji danych i niepoprawnych wyników, co jest kluczowe w środowisku biznesowym, gdzie precyzja i dokładność są niezbędne. Warto zauważyć, że zrozumienie różnic w działaniu funkcji agregujących jest fundamentalne dla efektywnej analizy danych. Stosowanie odpowiednich funkcji pozwala na optymalizację zapytań oraz zapewnia, że uzyskane wyniki są zgodne z oczekiwaniami analitycznymi, co jest kluczowe w podejmowaniu decyzji opartych na danych.

Pytanie 39

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.
Zapytanie `ALTER TABLE transport MODIFY COLUMN rok_produkcji INT;` operuje na już istniejącej tabeli i istniejącej kolumnie. Kluczowe są tu dwa słowa: ALTER TABLE oraz MODIFY COLUMN. ALTER TABLE oznacza modyfikację struktury tabeli, a nie jej tworzenie ani usuwanie. To polecenie zakłada, że tabela `transport` już jest w bazie. Dlatego interpretacja, że ta komenda tworzy tabelę, wynika często z mylenia jej z `CREATE TABLE`, które faktycznie służy do zakładania nowych tabel z określoną listą kolumn i ich typów. Podobnie jest z samą kolumną. MODIFY COLUMN nie usuwa kolumny – do tego służy `DROP COLUMN`. Usunięcie kolumny polega na całkowitym pozbyciu się jej definicji i wszystkich przechowywanych tam danych. Tutaj nic takiego się nie dzieje. Kolumna `rok_produkcji` dalej istnieje, tylko jej definicja jest zmieniana. Typowy błąd myślowy polega na tym, że ktoś widzi słowo MODIFY i kojarzy je z „przebudowaniem” kolumny, czasem nawet z jej zamianą na nową. W rzeczywistości MySQL po prostu aktualizuje metadane kolumny w strukturze tabeli, a dane – w miarę możliwości – konwertuje do nowego typu. Kolejna myląca kwestia to dodawanie kolumn. Do tego służy `ADD COLUMN`, np. `ALTER TABLE transport ADD COLUMN rok_produkcji INT;`. Tylko taka forma faktycznie tworzy nową kolumnę w tabeli. W podanym poleceniu nie ma słowa ADD, więc zakładanie, że kolumna zostanie dodana, jest po prostu niezgodne ze składnią SQL. Moim zdaniem te pomyłki biorą się głównie z powierzchownego kojarzenia słów kluczowych, bez dokładnego przeczytania dokumentacji. W pracy z bazami danych warto wyrobić sobie nawyk rozróżniania: CREATE – tworzy, ALTER – zmienia, DROP – usuwa, a wewnątrz ALTER: ADD – dodaje element struktury, MODIFY/ALTER COLUMN – zmienia istniejący element, DROP COLUMN – usuwa go. Takie jasne mapowanie poleceń na ich skutki bardzo ułatwia później bezpieczne modyfikowanie schematu bazy, zwłaszcza na systemach produkcyjnych, gdzie każdy błąd w DDL może mieć realne konsekwencje dla danych.

Pytanie 40

Polecenie GRANT w języku SQL służy do

A. umieszczania nowych danych w bazie.
B. aktualizacji istniejących danych w bazie.
C. odbierania użytkownikom praw do obiektów.
D. nadawania użytkownikom praw do obiektów.
Polecenie GRANT bywa mylone z typowymi instrukcjami modyfikującymi dane, bo wszystko to jest „SQL” i często używa się tego w jednym skrypcie. Warto jednak wyraźnie oddzielić dwie warstwy: operacje na danych oraz operacje na uprawnieniach. Wstawianie nowych rekordów do tabeli realizuje się za pomocą instrukcji INSERT, a nie GRANT. To INSERT decyduje, jakie wartości trafią do konkretnych kolumn, ewentualnie z dodatkowymi klauzulami, triggerami czy ograniczeniami. GRANT w ogóle nie dotyka zawartości tabeli, tylko informację, kto ma prawo wykonać INSERT, SELECT, UPDATE itd. Podobnie aktualizowanie istniejących danych w tabeli odbywa się przez UPDATE, czasem w połączeniu z WHERE, JOIN, podzapytaniami. GRANT nie zmienia ani jednego pola w rekordach – on jedynie przyznaje lub rozszerza zakres uprawnień użytkownika lub roli. Jeśli użytkownik nie ma prawa UPDATE, to najpierw trzeba użyć GRANT, a dopiero potem można wykonać właściwe polecenie UPDATE. Częstym błędem myślowym jest traktowanie SQL jako jednego wielkiego „zestawu komend do wszystkiego” bez rozróżnienia na DML (Data Manipulation Language) i DCL (Data Control Language). GRANT należy właśnie do DCL, razem z REVOKE, i służy do zarządzania bezpieczeństwem. Jeszcze inny typowy skrót myślowy to przekonanie, że GRANT może „zabierać” prawa, bo kojarzy się ogólnie z uprawnieniami. W rzeczywistości standardowo do odbierania uprawnień służy REVOKE. W wielu systemach relacyjnych właśnie tym poleceniem cofa się wcześniej nadane GRANT-y. Z mojego doświadczenia dobrze jest zapamiętać prostą parę: GRANT – nadaje, REVOKE – odbiera. Dzięki temu łatwiej uniknąć pomyłek przy pisaniu skryptów administracyjnych i przy projektowaniu polityki dostępu do tabel, widoków, procedur i innych obiektów bazy danych.