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: 21 kwietnia 2026 16:24
  • Data zakończenia: 21 kwietnia 2026 16:41

Egzamin zdany!

Wynik: 32/40 punktów (80,0%)

Wymagane minimum: 20 punktów (50%)

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

Na ilustracji przedstawiono dwie tabele. Aby ustanowić między nimi relację jeden do wielu, gdzie jedna strona to Klienci, a druga strona to Zamowienia, należy

Ilustracja do pytania
A. wprowadzić pole klucza obcego do tabeli Zamowienia i powiązać je z ID tabeli Klienci.
B. powiązać relacją pola ID z obu tabel.
C. stworzyć trzecią tabelę z dwoma kluczami obcymi. Jeden klucz połączyć z ID tabeli Klienci, a drugi klucz połączyć z ID tabeli Zamowienia.
D. dodać pole klucza obcego do tabeli Klienci i powiązać je z ID tabeli Zamowienia.
Tworzenie relacji jeden do wielu między tabelami w bazie danych wymaga zrozumienia, jak działa klucz podstawowy i klucz obcy. W tym przypadku tabela Klienci posiada pole ID, które jest kluczem podstawowym. Aby utworzyć relację jeden do wielu, należy dodać do tabeli Zamowienia pole klucza obcego, które będzie połączone z polem ID z tabeli Klienci. Dzięki temu każdy rekord w tabeli Zamowienia będzie mógł być przypisany do jednego klienta, ale jeden klient może mieć wiele zamówień. Taka struktura jest zgodna z normalizacją baz danych, która ma na celu eliminację redundancji danych i zapewnienie integralności danych. W praktyce, w systemach takich jak SQL, relacje te są wykorzystywane do wykonywania operacji takich jak wyszukiwanie wszystkich zamówień dla konkretnego klienta, co jest wykonywane przez dołączenie tabel za pomocą klucza obcego. Implementacja kluczy obcych w bazach danych jest standardową praktyką, która zwiększa spójność i bezpieczeństwo danych, minimalizując ryzyko błędów podczas operacji CRUD (Create Read Update Delete).

Pytanie 2

W tabeli o nazwie zadania znajduje się kolumna tekstowa status. Jakie zapytanie należy wykorzystać, aby usunąć te rekordy, w których status to ‘zamknięte’?

A. TRUNCATE TABLE zadania;
B. DELETE FROM zadania WHERE status = 'zamknięte';
C. TRUNCATE TABLE zadania WHERE status = 'zamknięte';
D. DELETE FROM zadania;
Odpowiedź 'DELETE FROM zadania WHERE status = 'zamknięte';' jest poprawna, ponieważ ta kwerenda w sposób precyzyjny usuwa tylko te rekordy z tabeli 'zadania', które mają status 'zamknięte'. Użycie klauzuli WHERE jest kluczowe, ponieważ pozwala na ograniczenie operacji usunięcia do konkretnych wierszy w tabeli, co jest zgodne z najlepszymi praktykami w zarządzaniu bazami danych. Należy unikać bezwarunkowego usuwania wszystkich rekordów, jak w przypadku kwerendy 'DELETE FROM zadania;', co mogłoby spowodować utratę danych, które są nadal potrzebne. Przykłady zastosowania tej kwerendy można znaleźć w wielu systemach zarządzania projektami, gdzie często musimy archiwizować lub usuwać zakończone zadania. Dodatkowo stosowanie klauzuli WHERE jest zgodne z zasadą minimalizacji zmian w bazie danych, co jest istotne dla zapewnienia integralności danych i umożliwienia ich późniejszej analizy.

Pytanie 3

Dostępna jest tabela uczniowie, która zawiera pól id, imie, nazwisko, data_ur (format rrrr-mm-dd). Które zapytanie w SQL wyświetli tylko imiona oraz nazwiska uczniów urodzonych w roku 2001?

A. SELECT id, imie, nazwisko, data_ur FROM uczniowie WHERE data_ur like "2001-*-*"
B. SELECT imie, nazwisko FROM uczniowie WHERE data_ur like "2001-%-%"
C. SELECT * FROM uczniowie WHERE data_ur like "2001"
D. SELECT * FROM uczniowie WHERE data_ur == 2001-%-%
Wybrana odpowiedź jest prawidłowa, ponieważ wykorzystuje odpowiednią składnię SQL do wyszukania imion i nazwisk uczniów, których data urodzenia przypada na rok 2001. Użycie klauzuli 'LIKE' wraz z wzorcem '2001-%-%' jest kluczowe – znak '%' w SQL reprezentuje dowolny ciąg znaków (w tym również brak znaków). Oznacza to, że jakiekolwiek miesiące i dni mogą występować po roku '2001', co jest zgodne z formatem daty 'rrrr-mm-dd'. Tego typu zapytania są używane w praktycznych zastosowaniach w bazach danych, na przykład przy tworzeniu raportów dotyczących uczniów, którzy urodzili się w określonym roku. Umożliwia to efektywne zarządzanie danymi i przyspiesza proces analizy, co jest zgodne z dobrymi praktykami w zakresie przetwarzania danych. W kontekście SQL, selekcja konkretnych kolumn, takich jak 'imie' i 'nazwisko', jest bardziej efektywna niż pobieranie wszystkich danych, co może być istotne w przypadku większych zestawów danych. Warto również zwrócić uwagę na znaczenie odpowiedniego formatowania dat, co jest kluczowe dla poprawności zapytań do baz danych.

Pytanie 4

W bazie danych znajduje się tabela pracownicy z kolumnami: id, imie, nazwisko, pensja. W nowym roku postanowiono zwiększyć wynagrodzenie wszystkim pracownikom o 100 zł. Jak powinno wyglądać to w aktualizacji bazy danych?

A. UPDATE pracownicy SET pensja = pensja + 100;
B. UPDATE pensja SET 100;
C. UPDATE pracownicy SET pensja = 100;
D. UPDATE pensja SET +100;
Odpowiedź 'UPDATE pracownicy SET pensja = pensja + 100;' jest prawidłowa, ponieważ wprowadza właściwą składnię SQL, która aktualizuje pole 'pensja' w tabeli 'pracownicy'. To polecenie wykorzystuje operator przypisania '=', aby zaktualizować wartość 'pensja', dodając do niej 100 zł. W praktyce jest to typowy sposób na modyfikację danych w bazach danych relacyjnych, przy użyciu SQL. Kluczowym aspektem jest zrozumienie, że 'pensja' w tym kontekście odnosi się do istniejącej wartości w danym rekordzie, a nie do jakiejś stałej. Operator '+' w tym przypadku informuje system, że chcemy zwiększyć aktualną wartość o 100. Użycie tego typu składni jest zgodne z najlepszymi praktykami w programowaniu baz danych, co sprzyja przejrzystości i zrozumiałości kodu. Tego rodzaju aktualizacje są kluczowe w zarządzaniu danymi pracowników, zwłaszcza w kontekście systemów wynagrodzeń, gdzie regularne zmiany pensji są normą.

Pytanie 5

Uprawnienia obiektowe przyznawane użytkownikom serwera bazy danych mogą umożliwiać lub ograniczać

A. przechodzić uprawnienia
B. realizować operacje na bazie, takie jak wstawianie lub modyfikowanie danych
C. wykonywać polecenia, takie jak tworzenie kopii zapasowej
D. zmieniać role i konta użytkowników
Uprawnienia obiektowe w systemach baz danych są kluczowym aspektem zarządzania bezpieczeństwem i dostępem do danych. Odpowiedzi dotyczące modyfikacji ról i kont użytkowników, dziedziczenia uprawnień czy wykonywania instrukcji takich jak tworzenie kopii zapasowej, nie odnoszą się bezpośrednio do istoty uprawnień obiektowych. Modyfikacja ról i kont użytkowników jest zazwyczaj związana z uprawnieniami administracyjnymi, a nie obiektowymi. Role i konta użytkowników są koncepcjami wyższego poziomu, które służą do grupowania uprawnień i nie są zazwyczaj zarządzane na poziomie obiektów. Dziedziczenie uprawnień jest bardziej złożonym mechanizmem, który dotyczy hierarchii obiektów i nie jest bezpośrednio związane z podstawowym pojęciem uprawnień obiektowych. Ponadto, wykonywanie instrukcji takich jak tworzenie kopii zapasowej, to działanie administracyjne, które zazwyczaj wymaga odrębnych uprawnień niż te, które dotyczą operacji na danych. Typowym błędem jest pomylenie uprawnień obiektowych z uprawnieniami administracyjnymi, co prowadzi do nieporozumień w zakresie ich zastosowania oraz w kontekście bezpieczeństwa danych. Właściwe zrozumienie tych różnic jest kluczowe dla skutecznego zarządzania dostępem w bazach danych oraz dla zapewnienia ich bezpieczeństwa i integralności.

Pytanie 6

W bazie danych znajduje się tabela artykuły z kolumnami: nazwa, typ, producent, cena. Jakie polecenie należy użyć, aby wyświetlić wszystkie nazwy artykułów tylko o typie pralka, których cena mieści się w przedziale od 1000 PLN do 1500 PLN?

A. SELECT nazwa FROM artykuły WHERE typ='pralka' OR cena BETWEEN 1000 AND 1500
B. SELECT nazwa FROM artykuły WHERE typ='pralka' OR cena BETWEEN 1000 OR 1500
C. SELECT nazwa FROM artykuły WHERE typ='pralka' AND cena BETWEEN 1000 AND 1500
D. SELECT nazwa FROM artykuły WHERE typ='pralka' AND cena FROM 1000 TO 1500
Jak chcesz wyciągnąć nazwy artykułów tylko dla pralek, które kosztują między 1000 a 1500 PLN, to musisz użyć polecenia SELECT z dobrymi warunkami. W SQL klauzula WHERE jest właśnie do tego, żeby określić, jakie dane chcesz wyciągnąć z tabeli. Ważne, żeby użyć operatora AND, bo musisz połączyć dwa warunki: typ musi być 'pralka', a cena musi mieścić się w tym przedziale. W tym wypadku operator BETWEEN będzie najlepszy, bo pozwala łatwo ustawić zakres wartości bez zawirowań z innymi operatorami. Takie zapytanie: SELECT nazwa FROM artykuły WHERE typ='pralka' AND cena BETWEEN 1000 AND 1500, zwróci wszystkie nazwy, które spełniają te kryteria. Dzięki BETWEEN masz pewność, że dolna i górna granica też są uwzględniane, co jest zgodne z zasadami SQL, a to z kolei sprawia, że przeszukiwanie danych jest efektywne. Dzięki temu zapytaniu dostajesz dokładne wyniki, co w zarządzaniu bazą danych jest mega ważne.

Pytanie 7

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

A. FLOAT
B. INT
C. VARCHAR
D. CHAR
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 8

W celu wykonania kopii bazy danych biblioteka w systemie MySQL należy w konsoli użyć polecenia

A. backupmysql -u root biblioteka kopia.sql
B. copymysql –u root biblioteka kopia.sql
C. mysqldump -u root biblioteka > kopia.sql
D. mysqlduplicate –u root biblioteka > kopia.sql
Poprawne polecenie do wykonania kopii bazy danych MySQL to „mysqldump -u root biblioteka > kopia.sql”. Narzędzie mysqldump jest oficjalnym, standardowym programem dostarczanym razem z serwerem MySQL i właśnie ono służy do tworzenia logicznych kopii zapasowych baz danych. Działa tak, że łączy się z serwerem MySQL, odczytuje strukturę tabel oraz dane, a następnie generuje plik tekstowy zawierający instrukcje SQL typu CREATE TABLE i INSERT. Taki plik można potem w prosty sposób wgrać z powrotem, np. poleceniem „mysql -u root biblioteka < kopia.sql”. To jest bardzo wygodne w praktyce, bo backup jest przenośny między serwerami, wersjami MySQL, a nawet można go edytować ręcznie w razie potrzeby. W tym poleceniu „-u root” oznacza użytkownika bazy danych, czyli logujemy się jako użytkownik root. W realnym środowisku produkcyjnym zwykle używa się konta z mniejszymi uprawnieniami i dodatkowo opcji „-p”, żeby podać hasło (np. „mysqldump -u backup_user -p biblioteka > kopia.sql”). Nazwa „biblioteka” to nazwa bazy, którą archiwizujemy. Znak „>” to przekierowanie powłoki systemowej (bash, cmd itp.), które zapisuje wynik działania programu mysqldump do pliku „kopia.sql” zamiast wypisywać go na ekran. To przekierowanie nie jest częścią MySQL, tylko mechanizmem systemu operacyjnego, co czasem bywa mylące dla początkujących. Moim zdaniem warto od razu wyrabiać sobie dobre nawyki: używać mysqldump regularnie, najlepiej w skryptach cron (Linux) lub Harmonogramie zadań (Windows), trzymać kopie na innym serwerze i testować odtwarzanie. W praktyce administracji serwerami i bezpieczeństwa danych takie kopie logiczne są podstawą procedur disaster recovery. W dokumentacji MySQL mysqldump jest wymieniony jako jedno z głównych narzędzi do backupu i migracji baz danych, więc znajomość dokładnie tego polecenia to absolutna podstawa pracy z MySQL w środowiskach webowych i nie tylko.

Pytanie 9

Jakie dane zostaną wybrane po wykonaniu poniższej kwerendy na pokazanych rekordach?

SELECT id FROM samochody WHERE rocznik LIKE "2%4";

idmarkamodelrocznik
1FiatPunto2016
2FiatPunto2002
3FiatPunto2007
4OpelCorsa2016
5OpelAstra2003
6ToyotaCorolla2016
7ToyotaCorolla2014
8ToyotaYaris2004
A. Brak danych
B. Wszystkie id
C. Pole id równe 7 oraz 8
D. Tylko id równe 8
Odpowiedź jest prawidłowa, ponieważ zapytanie SQL SELECT id FROM samochody WHERE rocznik LIKE '2_4'; filtruje rekordy, które mają w kolumnie rocznik wartość z drugą cyfrą równą '2' i czwartą cyfrą równą '4'. W złożonym zapytaniu SQL zastosowano operator LIKE z użyciem symbolu podkreślenia (_) jako symbolu zastępczego dla pojedynczego znaku. To oznacza, że szukamy dowolnego roku, który zaczyna się od cyfry '2', ma dowolną cyfrę na drugiej pozycji i cyfrę '4' na ostatniej pozycji. Praktycznie oznacza to, że wybierane są identyfikatory pojazdów, które mają rocznik odpowiadający temu wzorcowi. W dostarczonym zbiorze danych tylko rekordy o id 7 i 8 spełniają ten warunek, ponieważ rocznik to 2014 i 2004. Tego rodzaju konstrukcja SQL jest użyteczna w sytuacjach, gdy potrzebujemy selektywnie uzyskać dane na podstawie wzorców. Operator LIKE jest bardzo efektywny w analizie danych tekstowych w bazach danych np. w raportach analitycznych gdzie kluczowe jest wyszukiwanie na podstawie wzorców. Warto zaznaczyć, że takie podejście jest zgodne ze standardami SQL, ułatwiającymi zarządzanie i filtrowanie danych w złożonych systemach bazodanowych.

Pytanie 10

W SQL, aby dokonać zmiany w strukturze tabeli, na przykład dodać lub usunąć kolumnę, powinno się użyć polecenia

A. DROP TABLE
B. TRUNCATE
C. ALTER TABLE
D. UPDATE
Odpowiedź 'ALTER TABLE' jest prawidłowa, ponieważ to polecenie w SQL umożliwia modyfikację struktury istniejącej tabeli. Dzięki 'ALTER TABLE' możemy dodawać nowe kolumny, usuwać istniejące, zmieniać typy danych kolumn, a także ustawiać ograniczenia, takie jak klucze główne czy unikalne. Przykładowe zastosowanie to: 'ALTER TABLE employees ADD COLUMN birthdate DATE;' co dodaje kolumnę 'birthdate' do tabeli 'employees'. Użycie tego polecenia jest zgodne z dobrymi praktykami, ponieważ pozwala na elastyczne dostosowywanie struktury bazy danych w odpowiedzi na zmieniające się wymagania aplikacji. Warto również zaznaczyć, że 'ALTER TABLE' jest standardowym poleceniem w SQL, co oznacza, że jest obsługiwane przez większość systemów zarządzania bazami danych, takich jak MySQL, PostgreSQL czy SQL Server, co czyni je uniwersalnym narzędziem w pracy z danymi.

Pytanie 11

Jaką rolę odgrywa kwerenda krzyżowa w programie MS Access?

A. Dodaje do wybranej tabeli rekordy z innej tabeli
B. Prezentuje zliczone wartości z pola i układa je w wiersze oraz kolumny
C. Zmienia istniejące dane w tabeli
D. Usuwa rekordy z tabel według określonych kryteriów
Kwerenda krzyżowa w bazie danych MS Access pełni kluczową rolę w analizie danych, umożliwiając użytkownikom prezentację zliczonych wartości w formacie tabelarycznym, gdzie wyniki są układane w wiersze i kolumny. To narzędzie jest niezwykle przydatne w przypadku, gdy chcemy zsyntetyzować dane na podstawie dwóch lub więcej kryteriów, co pozwala na szybką analizę zależności i trendów. Na przykład, możemy stworzyć kwerendę krzyżową, która zlicza sprzedaż według miesięcy i kategorii produktów. W rezultacie otrzymujemy czytelny raport, który pozwala na natychmiastowe zrozumienie, które produkty sprzedają się najlepiej w danym okresie. Kwerendy krzyżowe są zgodne z najlepszymi praktykami w zakresie analizy danych, umożliwiając użytkownikom szybkie podejmowanie decyzji na podstawie wizualizacji wyników. Standardy projektowania baz danych zalecają korzystanie z takich kwerend tam, gdzie potrzebne są złożone analizy, a ich struktura jest zgodna z zasadami normalizacji danych, co z kolei ułatwia ich późniejsze przetwarzanie.

Pytanie 12

Który z czynników ma negatywny wpływ na efektywną współpracę w zespole?

A. podział ról i obowiązków
B. efektywna komunikacja
C. wzajemny szacunek
D. rywalizacja między członkami zespołu
Rywalizacja między członkami zespołu jest zasadą, która w sposób negatywny wpływa na efektywność współpracy. Tego rodzaju rywalizacja prowadzi do konfliktów, osłabia zaufanie oraz może skutkować brakiem otwartości w komunikacji. W praktyce, gdy zespół zamiast współdziałać, koncentruje się na konkurencji, członkowie mogą zacząć ukrywać informacje lub sabotować działania innych, co obniża ogólną wydajność. Dobrym przykładem jest sytuacja, gdy w projekcie dwóch programistów stara się zdobyć uznanie lidera, co prowadzi do rywalizacji i pomija współpracę. Efektem może być spadek jakości pracy, opóźnienia w realizacji zadań oraz frustracja w zespole. Standardy zarządzania projektami, takie jak Agile, podkreślają znaczenie współpracy i dzielenia się wiedzą w celu osiągnięcia sukcesu. Przyjazne środowisko pracy, w którym członkowie zespołu wspierają się nawzajem, jest kluczem do efektywności i innowacyjności.

Pytanie 13

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

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

Pytanie 14

Tabela filmy zawiera klucz główny id oraz klucz obcy rezyserID, natomiast tabela rezyserzy ma klucz główny id. Obydwie tabele są połączone relacją jeden do wielu, gdzie strona rezyserzy odnosi się do strony filmy. Jak należy zapisać kwerendę SELECT, aby połączyć tabele filmy i rezyserzy?

A. ... filmy JOIN rezyserzy ON filmy.rezyserID = rezyserzy.filmyID ...
B. ... filmy JOIN rezyserzy ON filmy.id = rezyserzy.id ...
C. ... filmy JOIN rezyserzy ON filmy.rezyserID = rezyserzy.id ...
D. ... filmy JOIN rezyserzy ON filmy.id = rezyserzy.filmyID ...
Odpowiedź, która wskazuje na połączenie tabeli filmy z tabelą rezyserzy za pomocą klauzuli JOIN, z warunkiem ON filmy.rezyserID = rezyserzy.id, jest prawidłowa, ponieważ bezpośrednio odzwierciedla relację pomiędzy tymi dwiema tabelami. Klucz obcy rezyserID w tabeli filmy wskazuje na klucz główny id w tabeli rezyserzy. W związku z tym, aby prawidłowo połączyć te tabele w kwerendzie SELECT, musimy użyć tego klucza obcego w warunku połączenia. Przykładowo, w realnych zastosowaniach chcesz uzyskać informacje o filmach oraz ich reżyserach; więc pisząc zapytanie, możesz z łatwością uzyskać dane, takie jak tytuł filmu i imię reżysera, co jest kluczowe w systemach zarządzania bazą danych. Dobre praktyki wskazują, że zawsze należy używać poprawnych kluczy do łączenia tabel, aby uzyskać wiarygodne i dokładne wyniki, co jest fundamentalne w projektowaniu baz danych i tworzeniu zapytań SQL.

Pytanie 15

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

A. PHP oraz MySQL
B. Apache oraz PHP
C. IIS, Perl 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 16

Podczas definiowania tabeli produkty należy stworzyć pole cena, które będzie reprezentować wartość produktu. Odpowiedni typ danych dla tego pola to

A. INTEGER(11)
B. TINYTEXT
C. ENUM
D. DECIMAL(10, 2)
Typ DECIMAL(10, 2) jest optymalnym wyborem dla pola reprezentującego cenę produktu w bazie danych. Pozwala on na przechowywanie liczb dziesiętnych z określoną precyzją, co jest kluczowe w kontekście finansowym, gdzie dokładność kwot ma fundamentalne znaczenie. Wartość '10' oznacza maksymalną liczbę cyfr, które mogą zostać zapisane, a '2' definiuje liczbę cyfr po przecinku. Oznacza to, że możemy przechowywać wartości od -99999999.99 do 99999999.99, co jest wystarczające dla większości zastosowań komercyjnych. Użycie tego typu danych zapewnia, że operacje matematyczne, takie jak dodawanie, odejmowanie czy mnożenie cen, będą wykonywane z zachowaniem dokładności. Jest to zgodne z najlepszymi praktykami w projektowaniu baz danych, gdzie unika się typów danych, które mogą prowadzić do utraty precyzji, jak np. FLOAT czy DOUBLE. Przykładowo, w aplikacji e-commerce, gdzie ceny produktów są często wyświetlane z dwoma miejscami po przecinku, typ DECIMAL jest idealnym rozwiązaniem, aby uniknąć błędów w obliczeniach i zapewnić pełną przejrzystość cenową dla użytkowników.

Pytanie 17

Tabela gory zawiera dane o polskich szczytach oraz górach, w których się one znajdują. Jakie zapytanie należy wykonać, aby zobaczyć Koronę Gór Polskich, czyli najwyższy szczyt w każdym z pasm górskich?

A. SELECT pasmo, szczyt FROM gory GROUP BY wysokosc;
B. SELECT pasmo, szczyt, MAX(wysokosc) FROM gory;
C. SELECT pasmo, szczyt, wysokosc FROM gory;
D. SELECT pasmo, szczyt, MAX(wysokosc) FROM gory GROUP BY pasmo;
Wybrana kwerenda SELECT pasmo, szczyt, MAX(wysokosc) FROM gory GROUP BY pasmo; jest poprawna, ponieważ umożliwia uzyskanie najwyższego szczytu w każdym pasmie górskim. W tym przypadku użycie funkcji agregującej MAX pozwala na zidentyfikowanie maksymalnej wartości kolumny 'wysokosc' dla każdej grupy utworzonej przez 'pasmo'. Podczas stosowania klauzuli GROUP BY, dane są dzielone na różne grupy na podstawie wartości w kolumnie 'pasmo', a następnie dla każdej grupy obliczana jest maksymalna wysokość szczytu. Taki sposób zorganizowania danych jest zgodny z najlepszymi praktykami SQL, które rekomendują wykorzystanie funkcji agregujących w połączeniu z grupowaniem, aby uzyskać zwięzłe i precyzyjne wyniki. Przykładowo, po wykonaniu tej kwerendy, otrzymamy listę pasm górskich wraz z najwyższymi szczytami, co jest niezbędne do analizy geograficznej i turystycznej.

Pytanie 18

Instrukcja ```REVOKE SELECT ON nazwa1 FROM nazwa2``` w SQL pozwala na

A. przyznawanie dostępu do tabeli
B. przyznawanie uprawnień zgodnie z określonym schematem
C. odbieranie przyznanych uprawnień użytkownikowi
D. usunięcie użytkownika z bazy danych
Polecenie REVOKE SELECT ON nazwa1 FROM nazwa2 w języku SQL jest używane do odbierania uprawnień użytkownikowi, co jest kluczowym aspektem zarządzania bezpieczeństwem w bazach danych. Umożliwia to administratorom kontrolowanie dostępu do danych, co jest istotne w kontekście ochrony informacji oraz zgodności z regulacjami prawnymi. Przykładowo, jeśli użytkownik 'nazwa2' miał wcześniej przyznane uprawnienia do wykonywania zapytań SELECT na tabeli 'nazwa1', użycie polecenia REVOKE pozwoli na ich cofnięcie. W praktyce, administratorzy baz danych często stosują to polecenie, aby ograniczyć dostęp do wrażliwych informacji, na przykład po zakończeniu projektu, w którym dany użytkownik nie powinien już mieć dostępu do danych. Takie działania są zgodne z najlepszymi praktykami w zakresie zabezpieczeń, które zalecają minimalizowanie uprawnień użytkowników do tylko tych niezbędnych do wykonywania ich obowiązków. Dodatkowo, warto również stosować audyty dostępu, aby na bieżąco monitorować, które uprawnienia są przyznawane i odbierane, co pozwala na lepsze zarządzanie bezpieczeństwem systemu.

Pytanie 19

Integralność referencyjna w relacyjnych bazach danych wskazuje, że

A. wartość klucza obcego w konkretnej tabeli musi być równa wartości klucza głównego w powiązanej tabeli lub mieć wartość NULL
B. klucz główny lub klucz obcy nie zawierają żadnych wartości NULL
C. każdemu kluczowi głównemu przyporządkowany jest dokładnie jeden klucz obcy w danej tabeli lub powiązanych tabelach
D. wartość klucza głównego oraz klucza obcego nie może być pusta
Pierwsza z niepoprawnych odpowiedzi odnosi się do stwierdzenia, że wartość klucza głównego oraz klucza obcego nie jest pusta. Choć jest to istotne, nie uwzględnia to kontekstu integralności referencyjnej, gdyż klucz obcy może przyjąć wartość NULL, co jest zgodne z zasadą, że nie każdy rekord musi mieć przypisane powiązanie. Kolejny błąd pojawia się w twierdzeniu, że klucz główny lub klucz obcy nie zawierają wartości NULL. Z definicji klucz główny nie może mieć wartości NULL, ale klucz obcy może, co jest istotne dla elastyczności projektowania baz danych. Również stwierdzenie, że każdemu kluczowi głównemu odpowiada dokładnie jeden klucz obcy, jest mylne, ponieważ klucz główny może być powiązany z wieloma kluczami obcymi w innych tabelach, co umożliwia bardziej złożone relacje. W kontekście relacyjnych baz danych, klucz obcy może odnosić się do jednego klucza głównego, ale nie wymaga, aby istniał tylko jeden klucz obcy do danego klucza głównego, co jest typowe w praktyce projektowania baz danych. Tak więc, w kontekście integralności referencyjnej, klucz obcy może być NULL i może odnosić się do jednego klucza głównego, ale nie ogranicza się do jednego powiązania, co czyni te odpowiedzi niepoprawnymi.

Pytanie 20

Wskaż polecenie SQL, które dodaje kolumnę miesiacSiewu do już istniejącej tabeli rośliny

A. ALTER TABLE rosliny ADD miesiacSiewu int
B. UPDATE rosliny ADD miesiacSiewu int
C. INSERT INTO rosliny Values (miesiacSiewu int)
D. CREATE TABLE rosliny {miesiacSiewu int}
Polecenie SQL 'ALTER TABLE rosliny ADD miesiacSiewu int;' to całkiem sensowny sposób na dodanie nowej kolumny do tabeli w bazie danych. Gdy chcemy coś zmieniać w tabeli, to 'ALTER TABLE' jest tym, czego szukamy, bo pozwala nam modyfikować tabelę bez jej usuwania. Dodając kolumnę 'miesiacSiewu', przechowamy dane typu całkowitego (int), co idealnie pasuje do wartości miesięcy. Dzięki temu poleceniu możemy łatwo dostosować strukturę bazy do potrzeb aplikacji. Po jego wykonaniu, w każdej chwili można już wrzucać dane do nowej kolumny. To by się na pewno przydało przy analizie danych dotyczących upraw. W SQL to w sumie standard, więc działa w większości systemów jak MySQL czy PostgreSQL.

Pytanie 21

Który typ danych SQL należy użyć, jako optymalny, do zapisania numeru PESEL?

A. TINYINT
B. CHAR(11)
C. FLOAT(11)
D. BLOB
W przypadku numeru PESEL kluczowe jest zrozumienie, że mamy do czynienia z identyfikatorem, a nie z liczbą, na której będziemy wykonywać obliczenia. To rozróżnienie jest bardzo ważne w projektowaniu baz danych, bo prowadzi do innego doboru typów danych. Częsty błąd polega na tym, że skoro PESEL składa się tylko z cyfr, to „na logikę” powinien być przechowywany jako typ liczbowy. W praktyce to podejście generuje więcej problemów niż pożytku. Typ TINYINT jest zdecydowanie zbyt mały – w większości systemów pozwala przechować zakres od 0 do 255 lub podobny, a PESEL ma 11 cyfr, więc nawet nie ma fizycznej możliwości, żeby taki typ pomieścił pełną wartość. To jest po prostu zupełnie nieadekwatny zakres. Z kolei użycie typu zmiennoprzecinkowego, takiego jak FLOAT(11), jest jeszcze gorszym pomysłem. Typ FLOAT służy do przybliżonego zapisu liczb rzeczywistych i może wprowadzać błędy zaokrągleń. W przypadku identyfikatora, który musi być zapisany dokładnie co do cyfry, jakikolwiek błąd reprezentacji jest niedopuszczalny. Dodatkowo typy zmiennoprzecinkowe nie gwarantują zachowania wszystkich cyfr w sposób bezstratny przy dużych wartościach, a PESEL ma ich 11. Można też natknąć się na problem utraty zer wiodących, bo liczby w SQL nie „pamiętają” formatu, tylko samą wartość liczbową. BLOB natomiast służy do przechowywania danych binarnych: plików, obrazów, dokumentów, zaszyfrowanych bloków danych. Używanie BLOB‑a do trzymania prostego tekstowego identyfikatora jest sprzeczne z dobrymi praktykami projektowania. Utrudnia to indeksowanie, wyszukiwanie, sortowanie i walidację, a do tego zużywa niepotrzebnie więcej zasobów. W profesjonalnych projektach baz danych przyjmuje się zasadę: dane tekstowe o znanej długości przechowujemy w typach znakowych (CHAR/VARCHAR), liczby do obliczeń w typach numerycznych, a typy binarne zostawiamy na pliki i dane nieustrukturyzowane. Błędne odpowiedzi wynikają zwykle z automatycznego kojarzenia „cyfry = liczba” i z braku rozróżnienia między wartością liczbową a identyfikatorem, który tylko składa się z cyfr, ale nie jest przeznaczony do liczenia. Właśnie dlatego optymalnym i zgodnym z dobrymi praktykami wyborem dla PESEL jest typ znakowy o stałej długości, czyli CHAR(11).

Pytanie 22

W bazie danych MYSQL znajduje się tabela z programami komputerowymi, która ma pola: nazwa, producent, rokWydania. Jak należy sformułować kwerendę SELECT, aby uzyskać wszystkie nazwy producentów bez powtórzeń?

A. SELECT UNIQUE producent FROM programy;
B. SELECT producent FROM programy WHERE UNIQUE;
C. SELECT producent FROM programy WHERE producent NOT DUPLICATE;
D. SELECT DISTINCT producent FROM programy;
Odpowiedź 'SELECT DISTINCT producent FROM programy;' jest w porządku. To dlatego, że kluczowe słowo DISTINCT działa tak, że zwraca tylko unikalne wartości z kolumny 'producent' w tabeli 'programy'. Jak są duże zbiory danych, to użycie DISTINCT naprawdę się przydaje, bo pozwala pozbyć się duplikatów i to później ułatwia analizę danych. Na przykład, kiedy w tabeli jest mnóstwo rekordów dla tego samego producenta, to DISTINCT zwróci tylko jeden wpis dla każdego z nich. Wiesz, to taka dobra praktyka w SQL, bo im mniej danych musisz przetwarzać, tym lepsza wydajność. I, co ciekawe, użycie DISTINCT nie obniża wydajności zapytania tak bardzo, jak niektórzy mogą myśleć, szczególnie w dobrze zindeksowanych tabelach. Warto to mieć na uwadze.

Pytanie 23

W bazie danych znajduje się tabela o nazwie faktury, która posiada pola: numer, data, id_klienta, wartosc, status. Każdego dnia tworzony jest raport dotyczący faktur z danego dnia. W raporcie prezentowane są jedynie numery oraz wartości faktur. Która z poniższych kwerend SQL jest odpowiednia do wygenerowania tego raportu?

A. SELECT * FROM faktury WHERE data = CURRENT_DATE();
B. SELECT * FROM faktury;
C. SELECT numer, wartosc FROM faktury WHERE data = CURRENT_DATE();
D. SELECT numer, wartosc FROM faktury;
Wybrana kwerenda SQL, SELECT numer, wartosc FROM faktury WHERE data = CURRENT_DATE();, jest poprawna, ponieważ precyzyjnie spełnia wymagania dotyczące generowania raportu faktur dla bieżącego dnia. Kwerenda ta nie tylko wybiera odpowiednie kolumny, czyli 'numer' i 'wartosc', ale także filtruje wyniki, wykorzystując warunek WHERE, który ogranicza dane do tych, które mają datę równą aktualnej dacie. Użycie funkcji CURRENT_DATE() jest standardowym podejściem w SQL do uzyskiwania bieżącej daty, co pozwala na automatyzację raportowania. Praktycznie rzecz biorąc, takie kwerendy są kluczowe w aplikacjach biznesowych, gdzie codzienna analiza danych jest niezbędna, aby podejmować informowane decyzje. Przy tworzeniu raportów warto również zwrócić uwagę na indeksowanie kolumn używanych w filtrach, co może znacznie przyspieszyć czas odpowiedzi zapytania w dużych zbiorach danych. Dobrą praktyką jest również testowanie kwerend na mniejszych zestawach danych przed ich wdrożeniem na żywo, aby upewnić się, że zwracają oczekiwane wyniki.

Pytanie 24

Ustalenie klucza obcego jest konieczne do skonstruowania

A. transakcji
B. relacji 1..1
C. klucza podstawowego
D. relacji 1..n
Klucz obcy jest kluczowym elementem w modelowaniu relacji w bazach danych, szczególnie w kontekście relacji 1..n. Definiuje on powiązania pomiędzy dwiema tabelami, gdzie jedna tabela (tabela główna) może mieć wiele powiązanych rekordów w drugiej tabeli (tabela szczegółowa). Na przykład, w bazie danych dotyczącej studentów i ich zapisów na przedmioty, tabela studentów może mieć klucz obcy odnoszący się do tabeli przedmiotów. Dzięki temu, dla każdego studenta można przechowywać wiele zapisów na różne przedmioty, co jest istotne w kontekście analizy danych. Z perspektywy standardów, takie podejście jest zgodne z zasadami normalizacji, które mają na celu eliminację redundancji danych oraz zapewnienie integralności referencyjnej. Dobre praktyki w projektowaniu baz danych sugerują stosowanie kluczy obcych do zarządzania relacjami pomiędzy danymi, co ułatwia ich późniejsze przetwarzanie i analizy.

Pytanie 25

Jak należy skonstruować zapytanie przy pomocy polecenia SELECT, aby wyświetlić unikalne nazwiska osób zamieszkujących osiedle?

A. SELECT TOP 10 nazwisko FROM mieszkancy;
B. SELECT DISTINCT nazwisko FROM mieszkancy;
C. SELECT nazwisko FROM mieszkancy ORDER BY nazwisko;
D. SELECT AVG(nazwisko) FROM mieszkancy;
Odpowiedź 'SELECT DISTINCT nazwisko FROM mieszkancy;' jest poprawna, ponieważ wykorzystuje klauzulę DISTINCT, która eliminuje duplikaty w wynikach zapytania. W kontekście baz danych, klauzula ta jest niezwykle użyteczna, gdy zależy nam na uzyskaniu unikalnych wartości z kolumny. W tym przypadku, wybierając unikalne nazwiska osób z tabeli 'mieszkancy', zapewniamy, że każde nazwisko pojawi się w wynikach tylko raz, co jest istotne w analizach i raportach, gdzie duplikaty mogłyby wprowadzać w błąd. Praktycznym przykładem użycia tego zapytania może być sytuacja, w której chcemy przygotować raport dla władz lokalnych o mieszkańcach danego osiedla. Zastosowanie DISTINCT pozwoli na przejrzystość raportu i jego większą użyteczność. Warto dodać, że użycie DISTINCT jest zgodne z dobrymi praktykami w programowaniu SQL, ponieważ przyczynia się do efektywnego zarządzania danymi i poprawy jakości wyników.

Pytanie 26

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

Ilustracja do pytania
A. Lekarze.id = Pacjenci.id
B. Lekarze.id = Pacjenci.Recepty_id
C. Lekarze.id = Pacjenci.Lekarze_id
D. Lekarze.id = Recepty.id
Błędne podejście do łączenia tabel w bazie danych może wynikać z niewłaściwego zrozumienia relacji kluczowych. Rozważmy odpowiedzi, które zakładają niepoprawne połączenia. Lekarze.id = Recepty.id jest błędne ponieważ identyfikator lekarza nie może być bezpośrednio związany z identyfikatorem recepty. Recepty są niezależnym bytem i ich klucze główne nie mają bezpośredniego związku z kluczami lekarzy. To samo dotyczy założenia Lekarze.id = Pacjenci.id które zakłada bezpośrednią relację między pacjentem a lekarzem przez ich identyfikatory co nie jest zgodne z typowymi strukturami baz danych. Każdy pacjent i lekarz ma swój unikalny identyfikator co oznacza brak bezpośredniej relacji między nimi, a relacja jest realizowana poprzez klucz obcy w tabeli Pacjenci. Ostatnia błędna opcja Lekarze.id = Pacjenci.Recepty_id znowu próbuje łączyć tabele poprzez klucze które nie są bezpośrednio związane. Recepty_id w tabeli Pacjenci odnosi się do konkretnej recepty przypisanej pacjentowi, a nie do lekarza. Takie błędne koncepcyjnie podejścia mogą prowadzić do nieprawidłowych wyników zapytań i utraty integralności danych co jest sprzeczne z dobrymi praktykami projektowania baz danych które zakładają jasno zdefiniowane i logicznie spójne relacje między tabelami przez odpowiednie klucze obce i podstawowe. Zrozumienie i poprawne stosowanie tych zasad jest kluczowe w efektywnym zarządzaniu i analizie danych w systemach relacyjnych.

Pytanie 27

Podaj zapytanie SQL, które tworzy użytkownika sekretarka na localhost z hasłem zaq123

CREATE USER `sekretarka`@`localhost` IDENTIFY "zaq123"; 
A. CREATE USER 'sekretarka'@'localhost' IDENTIFIED `zaq123`
B. CREATE USER `sekretarka`@`localhost` IDENTIFY "zaq123"
C. CREATE USER `sekretarka`@`localhost` IDENTIFY BY `zaq123`
D. CREATE USER `sekretarka`@`localhost` IDENTIFIED BY 'zaq123'
Poprawne zapytanie SQL do tworzenia nowego użytkownika w systemie baz danych MySQL brzmi: CREATE USER `sekretarka`@`localhost` IDENTIFIED BY 'zaq123';. Kluczowe elementy tego zapytania to: 'CREATE USER' – polecenie używane do tworzenia nowych użytkowników, '`sekretarka`' – nazwa użytkownika, '@`localhost`' – wskazuje, że użytkownik będzie łączył się z serwerem lokalnym, oraz 'IDENTIFIED BY' – polecenie do zdefiniowania hasła dla nowego użytkownika. Warto zwrócić uwagę, że hasło musi być umieszczone w pojedynczych cudzysłowach, co jest standardową praktyką w SQL. Umożliwia to skuteczne zarządzanie uprawnieniami użytkownika oraz bezpieczeństwem bazy danych. Dzięki odpowiedniemu skonfigurowaniu użytkowników, można wprowadzać różne poziomy dostępu, co jest kluczowe w kontekście ochrony danych. Warto również pamiętać, że praktyka ta jest zgodna z wytycznymi bezpieczeństwa, które zalecają stosowanie silnych haseł oraz ograniczanie dostępu do danych wrażliwych na poziomie użytkowników.

Pytanie 28

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

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

Pytanie 29

W systemie baz danych sklepu komputerowego znajduje się tabela o nazwie komputery. Aby stworzyć raport pokazujący dane z tabeli, obejmujący tylko komputery z co najmniej 8 GB pamięci oraz procesorem Intel, można wykorzystać kwerendę

A. SELECT * FROM komputery WHERE procesor = 'Intel' AND pamiec < 8
B. SELECT * FROM komputery WHERE procesor = 'Intel' OR pamiec < 8
C. SELECT * FROM komputery WHERE procesor = 'Intel' OR pamiec >= 8;
D. SELECT * FROM komputery WHERE procesor = 'Intel' AND pamiec >= 8;
Wybrana kwerenda SELECT * FROM komputery WHERE procesor = 'Intel' AND pamiec >= 8; jest prawidłowa, ponieważ precyzyjnie spełnia wymagania dotyczące filtracji danych w tabeli komputery. Użycie operatora AND jest kluczowe w tej sytuacji, ponieważ umożliwia jednoczesne sprawdzenie dwóch warunków: pierwszy warunek wymaga, aby procesor był równy 'Intel', a drugi, aby pamięć RAM była większa lub równa 8 GB. W rezultacie kwerenda zwróci tylko te rekordy, które spełniają oba kryteria, co jest zgodne z założeniem raportu. W praktyce, tego typu kwerendy są niezwykle ważne, szczególnie w kontekście analizy danych, gdzie precyzyjne określenie kryteriów jest kluczowe dla uzyskania wartościowych wyników. Dobre praktyki w tworzeniu zapytań SQL obejmują także wykorzystanie odpowiednich indeksów na kolumnach procesor i pamiec, co może znacznie zwiększyć wydajność zapytań, zwłaszcza w dużych zbiorach danych.

Pytanie 30

Który typ danych należy przypisać do atrybutu Telefon encji Student zakładając, że numer rozpoczyna się od znaku + i następującego po nim numeru kierunkowego kraju?

A. Binarny
B. Tekstowy
C. Liczbowy
D. Wyliczeniowy
Poprawny typ danych dla atrybutu Telefon w encji Student to typ tekstowy, ponieważ numer telefonu nie jest zwykłą liczbą, tylko ciągiem znaków o określonej strukturze. Mamy tam znak plus na początku, potem numer kierunkowy kraju, często spacje, czasem myślniki, nawiasy. System informatyczny nie powinien wykonywać na tym polu działań arytmetycznych, tylko przechowywać dokładnie to, co użytkownik wpisał. W bazach danych i w większości języków programowania przyjętym standardem jest traktowanie numerów telefonów jako stringów, właśnie po to, żeby nie tracić formatu i nie usuwać znaków specjalnych. Moim zdaniem to jedna z takich pułapek początkujących: skoro są cyfry, to kusi, żeby dać typ liczbowy. A potem wychodzą kwiatki, typu ucinanie zera na początku, problemy z numerami międzynarodowymi, brak możliwości zapisania +48 albo numeru wewnętrznego. W praktyce w modelu danych stosuje się typ tekstowy (np. VARCHAR o rozsądnej długości) i ewentualnie nakłada się walidację po stronie aplikacji lub bazy, np. wyrażeniem regularnym, żeby pilnować formatu zgodnego z E.164 (+48123456789 itd.). Dobre praktyki mówią też, żeby nie łączyć w jednym polu różnych znaczeń, więc jeśli oprócz numeru trzeba przechowywać np. opis typu telefonu (komórkowy, stacjonarny, służbowy), to lepiej dać osobny atrybut albo nawet osobną tabelę. Sam numer jednak zawsze jako tekst, bo jego „wartość” logiczna to identyfikator, a nie wielkość liczbowa.

Pytanie 31

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

A. WITH FORMAT
B. FULL
C. DIFFERENTIAL
D. RESTORE
Wybór klauzul 'WITH FORMAT', 'FULL' lub 'RESTORE' nie jest właściwy dla tworzenia różnicowych kopii bazy danych w MSSQL. Klauzula 'WITH FORMAT' służy do określenia, że nośnik, na którym zapisywana jest kopia, ma być sformatowany przed zapisem. Użycie tej klauzuli może prowadzić do utraty wcześniejszych danych na nośniku, co czyni ją nieodpowiednią dla tworzenia różnicowych kopii zapasowych. Klauzula 'FULL' odnosi się do tworzenia pełnych kopii zapasowych, które zawierają wszystkie dane w bazie w momencie wykonywania kopii. Choć pełne kopie są kluczowe w strategii backupowej, to jednak nie odpowiadają na potrzeby związane z tworzeniem różnicowych kopii, które są bardziej efektywne. Ostatnia z wymienionych opcji, klauzula 'RESTORE', nie jest używana do tworzenia kopii zapasowych w ogóle, lecz do przywracania bazy danych z wcześniej wykonanych kopii. Często popełnianym błędem jest mylenie procedur backupu i restore'u, co prowadzi do nieporozumień w procesie zarządzania danymi. Kluczowe w zarządzaniu bazą danych jest zrozumienie, że różnicowe kopie zapasowe mają na celu efektywne i oszczędne archiwizowanie zmian, w przeciwieństwie do pełnych kopii, które są bardziej czasochłonne i wymagają więcej zasobów.

Pytanie 32

Funkcja agregująca AVG wykorzystana w zapytaniu

SELECT AVG(cena) FROM uslugi;
ma na celu
A. wyliczenie średniej arytmetycznej cen wszystkich usług
B. zsumowanie wszystkich kosztów usług
C. znalezienie najwyższej ceny za usługi
D. obliczenie liczby dostępnych usług w tabeli
Funkcja agregująca AVG w języku SQL oblicza średnią arytmetyczną wartości w określonej kolumnie, w tym przypadku w kolumnie 'cena' tabeli 'uslugi'. W kontekście baz danych, obliczanie średniej jest kluczowym narzędziem analitycznym, które pozwala na uzyskanie ogólnego obrazu wartości danej kolumny. W praktyce, analiza średnich cen usług może być użyteczna dla menedżerów chcących dostosować strategię cenową lub dla działów finansowych oceniających wydajność sprzedaży. Przykładowo, jeżeli średnia cena usług wynosi 100 zł, a kolejny miesiąc przynosi spadek do 80 zł, jest to sygnał do analizy powodów obniżenia przychodów. Stosowanie funkcji AVG jest zgodne z najlepszymi praktykami w zakresie analizy danych, gdyż pozwala na podejmowanie decyzji opartych na faktach i liczbach. Warto również zauważyć, że do obliczeń średnich często używa się danych z różnych grup, co może pomóc w zrozumieniu trendów oraz wzorców w zachowaniach klientów na rynku.

Pytanie 33

Jaką rolę pełni funkcja PHP o nazwie mysql_select_db()?

A. określić bazę, z której będą pobierane dane
B. nawiązać połączenie bazy danych z serwerem SQL
C. określić tabelę, z której będą pobierane informacje
D. pobrać dane z bazy danych na podstawie zapytania
Istnieje kilka powszechnych nieporozumień dotyczących funkcji mysql_select_db(), które mogą prowadzić do błędnych wniosków. Niewłaściwe jest myślenie, że ta funkcja służy do określenia tabeli, z której będą pobierane dane. W rzeczywistości, mysql_select_db() nie odnosi się bezpośrednio do tabel; zamiast tego, definiuje bazę, w której te tabele się znajdują. Kolejnym błędem jest przekonanie, że mysql_select_db() odpowiada za połączenie bazy danych z serwerem SQL. To zadanie należy do mysql_connect(), która tworzy połączenie z serwerem. Istnieje również mylne założenie, że funkcja ta pobiera dane z bazy danych. W rzeczywistości, pobieranie danych odbywa się za pomocą osobnych zapytań SQL, które są wykonywane po wcześniejszym wybraniu odpowiedniej bazy danych. Takie nieporozumienia mogą prowadzić do błędów w kodzie, gdzie programista usiłuje używać mysql_select_db() do operacji, które nie są jej przeznaczone. Niezrozumienie roli bazy danych i tabel w kontekście SQL oraz funkcji PHP może skutkować nieefektywnym kodem oraz problemami z jego debugowaniem. Ważne jest, aby mieć jasność co do roli różnych funkcji w interakcji z bazą danych, co pozwala na bardziej efektywne i bezpieczne programowanie.

Pytanie 34

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

A. tabela A będzie miała identyczne pola jak tabela B
B. połączenie tabeli A z tabelą B nastąpi poprzez określenie kluczy obcych
C. zostanie zdefiniowana trzecia tabela z kluczami obcymi do tabel A i B
D. wiele wpisów z tabeli A powtórzy się w tabeli B
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 35

Według którego parametru oraz dla ilu tabel zostaną zwrócone wiersze na liście w wyniku przedstawionego zapytania?

SELECT * FROM producent, hurtownia, sklep, serwis WHERE
  producent.nr_id = hurtownia.nr_id AND
  producent.wyrob_id = serwis.wyrob_id AND
  hurtownia.nr_id = sklep.nr_id AND
  sklep.nr_id = serwis.nr_id AND
  producent.nr_id = 1;
A. Według parametru wyrób Jd wyłącznie dla trzech tabel.
B. Według parametru wyrób id dla wszystkich tabel.
C. Według parametru nr id dla wszystkich tabel.
D. Według parametru nr id wyłącznie dla trzech tabel.
Brawo! Wybrałeś poprawną odpowiedź, zgodnie z którą parametrem nr id zwraca wiersze dla wszystkich tabel. To zapytanie SQL odnosi się do czterech tabel: producent, hurtownia, sklep i serwis. Zwraca ono wiersze, gdzie wartość kolumny nr_id jest taka sama we wszystkich tych tabelach i równa 1. Dodatkowo, jakość danych jest wspierana przez fakt, że zapytanie sprawdza zgodność wartości kolumny wyrob_id między tabelami producent i serwis. Zrozumienie tego, jak działa to zapytanie i dlaczego to jest ważne, jest kluczowe w praktyce programistycznej. Zapewnia to, że możemy skutecznie i efektywnie manipulować danymi, a także zrozumieć, jak nasze zapytania wpływają na wyniki, które otrzymujemy. Dobra praktyka jest zawsze zrozumienie, jakie dane są zwracane przez nasze zapytanie, zanim zaczniemy z nich korzystać w naszym kodzie. Ostatecznie, zrozumienie, jak korzystać z zapytań SQL do manipulacji i odzyskiwania danych, jest kluczowym elementem dowolnej roli programistycznej.

Pytanie 36

Która wartość tekstowa nie pasuje do podanego w ramce wzorca wyrażenia regularnego?

(([A-ZŁŻ][a-ząęóżźćńłś]{2,})(-[A-ZŁŻ][a-ząęóżźćńłś]{2,})?)
A. Nowakowska-Kowalska
B. Kasprowicza
C. Jelenia Góra
D. Kowalski
Wszystkie pozostałe wartości tekstowe, takie jak Kowalski, Kasprowicza oraz Nowakowska-Kowalska, spełniają wymagania określone przez wzorzec wyrażenia regularnego. Kowalski to przykład pojedynczego nazwiska, które zaczyna się od dużej litery oraz zawiera wystarczającą liczbę małych liter, co czyni je poprawnym. Kasprowicza również jest poprawne, gdyż zawiera dużą literę na początku, a następnie dwa znaki małe, co jest zgodne z wymaganiami. Dodatkowo, oba nazwiska nie zawierają spacji ani innych znaków, które mogłyby zakłócić strukturę wyrażenia regularnego. Nowakowska-Kowalska jest przykładem podwójnego nazwiska, które jest również zgodne z wzorcem, ponieważ składa się z dwóch części, oddzielonych znakiem '-' i każda z nich zaczyna się od dużej litery, a następnie zawiera co najmniej dwa znaki małe. Obie części nazwiska spełniają wymagania dotyczące polskich znaków diakrytycznych oraz ilości liter, dlatego są one uznawane za poprawne. W związku z tym, nieprawidłowa odpowiedź 'Jelenia Góra' wyróżnia się jako jedyna, która narusza zasady ustalone przez wzorzec.

Pytanie 37

Zastosowanie atrybutu NOT NULL dla kolumny jest konieczne w sytuacji, gdy

A. definiujemy wszystkie pola o typie numerycznym
B. mamy do czynienia z kluczem podstawowym
C. korzystamy z atrybutu DEFAULT
D. tworzymy definicję wszystkich pól tabeli
Atrybut NOT NULL jest kluczowym elementem definiującym kolumny w bazach danych, szczególnie w kontekście kluczy podstawowych. Klucz podstawowy, będący unikalnym identyfikatorem wierszy w tabeli, nie może zawierać wartości NULL, ponieważ jego główną funkcją jest zapewnienie jednoznacznej identyfikacji każdej instancji danych. W praktyce, definiując klucz podstawowy, programiści są zobowiązani do użycia atrybutu NOT NULL dla wszystkich kolumn, które ten klucz obejmuje. Przykładowo, w tabeli 'Użytkownicy', pole 'ID_Użytkownika' może być kluczem podstawowym z definicją 'ID_Użytkownika INT NOT NULL PRIMARY KEY'. Dzięki temu, każda wartość w tej kolumnie jest unikalna i nie może być pusta. Zastosowanie NOT NULL w kontekście kluczy podstawowych jest zgodne z zasadami normalizacji bazy danych, co zwiększa integralność danych oraz ułatwia zarządzanie informacjami.

Pytanie 38

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

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

Pytanie 39

Aby wykonać usunięcie wszystkich wpisów z tabeli, należy użyć kwerendy

A. ALTER COLUMN
B. TRUNCATE TABLE
C. INSERT INTO
D. CREATE COLUMN
Odpowiedź 'TRUNCATE TABLE' jest prawidłowa, ponieważ jest to polecenie w języku SQL służące do usuwania wszystkich rekordów z tabeli w sposób efektywny i bezpieczny. W przeciwieństwie do polecenia 'DELETE', które również usuwa rekordy, 'TRUNCATE TABLE' działa znacznie szybciej, ponieważ nie rejestruje każdego usunięcia w dzienniku transakcji, co zmniejsza obciążenie systemu. Przykład zastosowania: jeśli mamy tabelę 'Pracownicy' i chcemy usunąć wszystkie dane przed jej ponownym załadowaniem, możemy użyć kwerendy 'TRUNCATE TABLE Pracownicy;'. Warto zauważyć, że 'TRUNCATE TABLE' nie tylko usuwa dane, ale również resetuje wszelkie automatyczne inkrementacje kluczy podstawowych w tabeli. Stosując to polecenie, zachowujemy integralność danych oraz optymalizujemy czas operacji, co jest zgodne z najlepszymi praktykami w zarządzaniu bazami danych.

Pytanie 40

Baza danych zawiera tabelę pod nazwą pracownicy, która ma pola: nazwisko, imię, pensja oraz wiek. Jak brzmi składnia zapytania, aby obliczyć średnią pensję pracowników?

A. select AVG(pensja) from pracownicy
B. select AVG(nazwisko) into pensja
C. select VAR(pracownicy) into pensja
D. select VAR(pensja) from nazwisko
Aby obliczyć średnią pensję pracowników w tabeli 'pracownicy', używamy funkcji agregującej AVG, która zwraca średnią wartość dla podanego pola. W kontekście SQL, składnia polecenia 'select AVG(pensja) from pracownicy' jest poprawna, ponieważ wskazuje, że chcemy obliczyć średnią z kolumny 'pensja' w tabeli 'pracownicy'. Funkcje agregujące, takie jak AVG, SUM, COUNT, MIN i MAX, są fundamentalne w analizie danych, ponieważ umożliwiają zestawienie wyników w sposób zrozumiały i zwięzły. Przydatność funkcji AVG można zauważyć w praktyce, gdy potrzebujemy ocenić wynagrodzenia w firmie, co może wpłynąć na decyzje dotyczące polityki płacowej. Przykładowo, w przypadku tabeli z danymi o wynagrodzeniach, takie zapytanie zwraca pojedynczą wartość – średnią pensję, co pozwala na szybkie zrozumienie sytuacji finansowej firmy. Zgodnie z standardami SQL, polecenia muszą być formułowane w sposób, który jasno określa zarówno źródło danych, jak i sposób ich agregacji, co zostało spełnione w tej odpowiedzi.