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: 23 kwietnia 2026 12:53
  • Data zakończenia: 23 kwietnia 2026 13:03

Egzamin zdany!

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

Atrybut NOT NULL kolumny jest konieczny w przypadku

A. określenia wszystkich pól tabeli
B. określenia wszystkich pól typu numerycznego
C. klucza podstawowego
D. użycia atrybutu DEFAULT
Atrybut NOT NULL jest kluczowym elementem w definicji kolumn w bazach danych, szczególnie w kontekście klucza podstawowego. Klucz podstawowy ma na celu unikalne identyfikowanie każdego rekordu w tabeli, co wymaga, aby wszystkie jego kolumny były wypełnione wartościami. Oznaczenie kolumny jako NOT NULL zapewnia, że nie można wprowadzić rekordu bez podania wartości dla tej kolumny, co jest zgodne z zasadą integralności danych. Przykładem może być tabela użytkowników, gdzie kolumna 'ID' jest kluczem podstawowym. Oznaczenie jej jako NOT NULL zapobiega sytuacji, w której mogłoby istnieć kilka rekordów bez unikalnego identyfikatora. Przy projektowaniu baz danych, zgodnie z zasadami normalizacji, klucze podstawowe powinny zawsze mieć atrybut NOT NULL, aby zachować spójność danych oraz ułatwić operacje związane z łączeniem tabel. Dobre praktyki sugerują również, aby każdy klucz podstawowy był prosty i jednoznaczny, co dodatkowo podkreśla potrzebę tego atrybutu.

Pytanie 2

Poniższy fragment kodu PHP funkcjonuje poprawnie i ma na celu wyświetlenie na stronie internetowej informacji pobranych kwerendą z bazy danych. Ile pól zostanie wyświetlonych na stronie?

$ile = mysqli_num_rows($zapytanie);
for ($i = 0; $i < $ile; $i++) 
{
    $wiersz = mysqli_fetch_row($zapytanie); 
    echo "<p>Klient: $wiersz[0] $wiersz[1], adres: $wiersz[2] </p>";
}
A. Z dwóch pól
B. Z jednego pola
C. Z trzech pól
D. Z czterech pól
Kod PHP wyświetla dane z bazy danych przy użyciu funkcji mysqli_fetch_row, która zwraca wiersz danych jako tablicę. W tym przypadku, wiersz zawiera trzy elementy: '$wiersz[0]', '$wiersz[1]' oraz '$wiersz[2]'. Pierwszy element '$wiersz[0]' odpowiada nazwisku klienta, drugi '$wiersz[1]' to imię klienta, a trzeci '$wiersz[2]' to adres. Wyświetlanie danych w formacie HTML (znacznik <p>) wskazuje, że wszystkie trzy elementy są używane do stworzenia czytelnej prezentacji. W praktyce, korzystanie z mysqli_num_rows do określenia liczby zwróconych wierszy pozwala na dynamiczne przetwarzanie danych z bazy danych, co jest zgodne z najlepszymi praktykami programowania PHP. Zastosowanie pętli for umożliwia iterację przez wszystkie wiersze wynikowe i wyświetlenie ich w odpowiedniej formie. Takie podejście jest powszechnie stosowane przy budowaniu aplikacji webowych, gdzie wyświetlanie danych z bazy jest kluczowym elementem interakcji z użytkownikiem.

Pytanie 3

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

A. wartość klucza głównego oraz klucza obcego nie może być pusta
B. klucz główny lub klucz obcy nie mogą zawierać wartości NULL
C. wartość klucza obcego w danej tabeli musi być albo równa wartości klucza głównego w związanej z nią tabeli albo równa wartości NULL
D. każdemu kluczowi głównemu przyporządkowany jest dokładnie jeden klucz obcy w powiązanych tabelach
Integralność referencyjna jest kluczowym pojęciem w modelu relacyjnych baz danych, które zapewnia spójność i wiarygodność danych. Odpowiedź dotycząca wartości klucza obcego w danej tabeli, która musi być równa wartości klucza głównego w powiązanej tabeli lub NULL, jest zgodna z zasadami projektowania baz danych. Klucz obcy stanowi odniesienie do klucza głównego w innej tabeli, co umożliwia utrzymanie relacji między danymi. Na przykład, w bazie danych dotyczącej szkoły, tabela 'Uczniowie' może mieć kolumnę 'KlasaID', która jest kluczem obcym odnoszącym się do 'KlasaID' w tabeli 'Klasy'. Integralność referencyjna zapewnia, że każdy uczeń jest przypisany do istniejącej klasy, a jeśli uczeń nie jest przypisany do żadnej klasy, wartość ta może być NULL. Praktyczne zastosowanie tej zasady pozwala uniknąć błędów, takich jak pozostawienie ucznia bez przypisania do klasy, co mogłoby prowadzić do nieporozumień w analizach danych. Zgodnie z dobrymi praktykami, integralność referencyjna powinna być implementowana na poziomie bazy danych, aby automatycznie wymuszać te zasady, co zwiększa jakość i spójność gromadzonych danych.

Pytanie 4

Jaką klauzulę należy użyć w instrukcji CREATE TABLE w SQL, żeby pole rekordu nie mogło być puste?

A. DEFAULT
B. CHECK
C. NULL
D. NOT NULL
Klauzula NOT NULL w poleceniu CREATE TABLE języka SQL służy do zapewnienia, że dane w danym polu rekordu nie mogą być puste. To oznacza, że podczas wstawiania nowych rekordów do tabeli, każde pole, które zostało zdefiniowane z tą klauzulą, musi zawierać wartość. Na przykład, jeśli mamy tabelę pracowników, w której kolumna 'nazwisko' jest zdefiniowana jako NOT NULL, to każde dodanie nowego pracownika do tej tabeli musi zawierać wartość w kolumnie 'nazwisko'. W praktyce jest to bardzo ważne, ponieważ pozwala na utrzymanie integralności danych i zapobiega sytuacjom, w których kluczowe informacje mogłyby zostać pominięte. Użycie NOT NULL jest zgodne z dobrymi praktykami projektowania baz danych, które podkreślają znaczenie pełnych i kompletnych danych. Zastosowanie tej klauzuli zwiększa jakość danych oraz ułatwia późniejsze operacje na tabeli, takie jak zapytania czy raporty.

Pytanie 5

Które ograniczenie w bazach danych, należy przypisać kolumnie tabeli, aby wartości wpisywane do niej nie powtarzały się?

A. NOT NULL
B. UNIQUE
C. NO REPEAT
D. SINGLE
Poprawnie – w relacyjnych bazach danych to właśnie ograniczenie UNIQUE zapewnia, że wartości w danej kolumnie nie będą się powtarzały. Technicznie rzecz biorąc, UNIQUE to constraint integralności, który wymusza unikalność danych w obrębie wskazanej kolumny lub zestawu kolumn. Jeżeli spróbujesz wstawić rekord z wartością, która już istnieje w tej kolumnie, silnik bazy (np. MySQL, PostgreSQL, SQL Server) zgłosi błąd naruszenia ograniczenia unikalności. Można to zobaczyć na prostym przykładzie: CREATE TABLE uzytkownicy ( id INT PRIMARY KEY, email VARCHAR(255) UNIQUE, login VARCHAR(50) UNIQUE ); Tutaj zarówno email, jak i login nie mogą się duplikować. W praktyce to jest standardowa dobra praktyka: na polach takich jak email, numer PESEL, NIP, numer indeksu, numer seryjny urządzenia czy nawet nazwa użytkownika bardzo często zakłada się UNIQUE, żeby w systemie nie pojawiły się dwa różne konta z tym samym identyfikatorem. Moim zdaniem, przy projektowaniu bazy danych warto od razu zastanowić się, które pola mają pełnić rolę „identyfikatorów biznesowych” i od razu nadać im ograniczenie UNIQUE. Warto też wiedzieć, że UNIQUE nie oznacza „klucz główny”. PRIMARY KEY automatycznie jest unikalny i nie może być NULL, natomiast UNIQUE pozwala na NULL (zależnie od silnika bazy, ale zazwyczaj wiele NULL-i jest dozwolonych). To pozwala projektować tabele bardziej elastycznie, np. kolumna może być opcjonalna, ale jeśli już ktoś poda wartość, to musi być ona niepowtarzalna. W praktyce UNIQUE często łączy się z indeksami – większość systemów bazodanowych automatycznie zakłada indeks unikalny na takiej kolumnie, co przyspiesza wyszukiwanie i walidację danych. To rozwiązanie jest zgodne z dobrymi praktykami normalizacji i kontroli spójności danych w systemach produkcyjnych.

Pytanie 6

W SQL, aby uniemożliwić stworzenie konta przy wykonywaniu kwerendy CREATE USER, gdy konto już istnieje, można zastosować następującą składnię

A. CREATE OR REPLACE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
B. CREATE USER IF NOT EXISTS 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
C. CREATE USER OR DROP 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
D. CREATE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
Odpowiedź 'CREATE USER IF NOT EXISTS 'anna'@'localhost' IDENTIFIED BY 'yu&T%';' jest poprawna, ponieważ użycie klauzuli 'IF NOT EXISTS' pozwala na uniknięcie błędów w sytuacji, gdy konto użytkownika już istnieje w bazie danych. W praktyce oznacza to, że wykonanie tego polecenia nie spowoduje żadnej zmiany ani błędu, jeśli konto 'anna' jest już zdefiniowane, co jest szczególnie przydatne w skryptach automatyzujących tworzenie użytkowników. Dzięki temu można uniknąć powtarzania kodu sprawdzającego istnienie użytkownika przed jego utworzeniem. Zaleca się stosowanie tej formy w celu uproszczenia procesu zarządzania użytkownikami i zapewnienia, że skrypty wykonują się bez zakłóceń. W kontekście bezpieczeństwa, ważne jest używanie silnych haseł, jak w tym przykładzie, aby zabezpieczyć konta przed nieautoryzowanym dostępem. Warto także pamiętać o dobrych praktykach w zakresie nadawania uprawnień oraz regularnego przeglądania kont użytkowników, aby zapewnić, że wszystkie konta są wykorzystywane i zarządzane odpowiednio.

Pytanie 7

W tabeli pracownicy zdefiniowano klucz główny jako INTEGER z atrybutami NOT NULL oraz AUTO_INCREMENT. Dodatkowo zdefiniowano kolumny imie oraz nazwisko. W przypadku wykonania poniższej kwerendy SQL wprowadzającej dane, w której pominięto pole klucza, w bazie danych MySQL wystąpi:

INSERT INTO pracownicy (imie, nazwisko) VALUES ('Anna', 'Nowak');
A. dodanie rekordu do tabeli, dla klucza głównego zostanie przypisana wartość NULL
B. dodanie rekordu do tabeli, dla klucza głównego zostanie przypisana kolejna wartość naturalna
C. ignorowanie polecenia, tabela nie ulegnie zmianie
D. błąd związany z nieprawidłową liczbą kolumn
Jak używasz polecenia INSERT w MySQL i masz klucz główny ustawiony jako AUTO_INCREMENT, to system sam zajmie się przydzieleniem nowej, unikalnej wartości dla tego klucza dla każdego nowego rekordu. Kiedy wprowadzasz dane o pracowniku, takie jak imię i nazwisko, to nie musisz martwić się o podawanie wartości klucza głównego. MySQL świetnie to rozumie i dodaje kolejny wolny numer. To jest zgodne z dobrymi praktykami w bazach danych, gdzie klucz główny musi być unikalny dla każdego rekordu, ale niekoniecznie musisz go podawać ręcznie, szczególnie gdy korzystasz z mechanizmu AUTO_INCREMENT. Weźmy na przykład tabelę zamówień – tam każdy nowy wpis automatycznie dostaje unikalny numer zamówienia, co eliminuje ryzyko błędów i ułatwia późniejsze śledzenie danych. Dzięki AUTO_INCREMENT wprowadzanie danych staje się dużo prostsze, a szansa na pomyłki przy manualnym wpisywaniu wartości klucza głównego znacznie maleje.

Pytanie 8

Jak określa się podzbiór strukturalnego języka zapytań, który dotyczy formułowania zapytań do bazy danych przy użyciu polecenia SELECT?

A. SQL DQL (ang. Data Query Language)
B. SQL DML (ang. Data Manipulation Language)
C. SQL DCL (ang. Data Control Language)
D. SQL DDL (ang. Data Definition Language)
Wybór SQL DML, SQL DDL lub SQL DCL jako odpowiedzi na pytanie dotyczące podzbioru języka SQL, który służy do formułowania zapytań do bazy danych, wskazuje na pewne nieporozumienia dotyczące struktury i funkcji języka SQL. SQL DML (Data Manipulation Language) obejmuje polecenia takie jak INSERT, UPDATE i DELETE, które umożliwiają manipulację danymi w bazie, jednak nie jest to odpowiedź na zapytania, lecz na operacje modyfikujące dane. Z kolei SQL DDL (Data Definition Language) służy do definiowania struktury bazy danych, w tym tworzenia, modyfikowania i usuwania tabel oraz indeksów. Obejmuje polecenia takie jak CREATE, ALTER i DROP, które są kluczowe dla administracji bazy danych, ale nie dotyczą bezpośrednio pobierania danych. SQL DCL (Data Control Language) koncentruje się na zarządzaniu uprawnieniami i dostępem do danych w bazie, obejmując polecenia takie jak GRANT i REVOKE. Każda z tych odpowiedzi wprowadza w błąd, ponieważ nie odnosi się do kluczowych funkcji DQL, które skupiają się na wydobywaniu i analizie danych. Przy wyborze odpowiedzi ważne jest, aby zrozumieć różnice między tymi podzbiorami SQL i ich zastosowanie w praktyce. Typowe błędy myślowe obejmują mylenie manipulacji danymi z ich zapytaniem oraz niezrozumienie roli, jaką każda z tych kategorii pełni w zarządzaniu bazami danych. Kluczowe jest zatem, aby w kontekście pracy z bazami danych dokładnie rozróżniać te funkcje, co wpływa na efektywność i poprawność wykonywanych operacji.

Pytanie 9

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

A. wszystkie działania na bazach danych oraz użytkownikach serwera
B. wszelkie operacje na bazach danych serwera
C. nadzorowanie serwera
D. tworzenie kont użytkowników na serwerze oraz przypisywanie im haseł
Wybór odpowiedzi, która sugeruje, że rola DBManager przyznaje wszystkie operacje na bazach danych i użytkownikach serwera, jest błędny. Chociaż rola ta rzeczywiście daje szerokie uprawnienia do operacji na bazach danych, nie obejmuje ona zarządzania użytkownikami serwera, co jest kluczowe w kontekście bezpieczeństwa i kontroli dostępu. W rzeczywistości w MySQL, operacje związane z tworzeniem użytkowników i nadawaniem im odpowiednich uprawnień są zarezerwowane dla ról administracyjnych, jak np. root. Zrozumienie tego jest fundamentalne dla właściwego zarządzania bezpieczeństwem w systemach bazodanowych, ponieważ umożliwia to precyzyjne określenie, kto ma dostęp do jakich danych oraz jakie operacje może wykonać. Typowym błędem jest mylenie ról i uprawnień. Użytkownicy muszą zrozumieć, że różne role mają różne poziomy dostępu i odpowiedzialności, co można osiągnąć poprzez odpowiednie przypisywanie uprawnień w oparciu o zasady najmniejszych uprawnień. Również, monitorowanie serwera, które zostało wspomniane jako jedna z odpowiedzi, nie jest związane z rolą DBManager, a zamiast tego wymaga osobnych narzędzi i uprawnień, które pozwalają na analizę wydajności i działania systemu.

Pytanie 10

Jakie wyniki zostaną wyświetlone po wykonaniu podanej w ramce kwerendy SQL SELECT na tabeli pracownicy, która zawiera rekordy?

idimienazwiskopensja
1AnnaKowalska3400
2MonikaNowak1300
3EwelinaNowakowska2600
4AnnaPrzybylska4600
5MariaKowal2200
6EwaNowacka5400
SELECT SUM(pensja) FROM pracownicy WHERE pensja > 4000;
A. Kwota 19500, czyli suma wszystkich pensji zatrudnionych
B. Dwie kwoty: 4600 oraz 5400, jako wynagrodzenia pracowników przekraczające 4000
C. Kwota 10000, co stanowi sumę pensji pracowników o id=4 i id=6
D. Kwota 5400, co oznacza najwyższą pensję wśród pracowników
W zapytaniu SQL użyto funkcji agregującej SUM, która służy do sumowania wartości w określonej kolumnie. Klauzula WHERE ogranicza zbiór rekordów do tych, które spełniają dany warunek. W tym przypadku, pensja musi być większa niż 4000. Analizując tabelę, znajdujemy dwie osoby z pensjami spełniającymi ten warunek: pracownik o id=4 z pensją 4600 oraz pracownik o id=6 z pensją 5400. SUM(4600 + 5400) daje 10000. Prawidłowe zrozumienie wykorzystania funkcji agregujących w SQL jest kluczowe w analizie danych i raportowaniu. Jest to standardowa praktyka w branży IT, gdzie analiza danych jest podstawą przy podejmowaniu decyzji biznesowych. Funkcje agregujące, takie jak SUM, AVG, MAX, są fundamentalnymi narzędziami analitycznymi w bazach danych. Przy pracy nad większymi zbiorami danych, takie zapytania pomagają szybko uzyskać podsumowania, co jest nieocenione w analizie finansowej czy tworzeniu raportów zarządczych.

Pytanie 11

Celem testów wydajnościowych jest ocena

A. ciągu zdarzeń, w którym prawdopodobieństwo danego zdarzenia zależy tylko od wyniku zdarzenia wcześniejszego
B. stopnia, w jakim system lub moduł spełnia wymagania dotyczące wydajności
C. zdolności programu do funkcjonowania w sytuacjach, gdy sprzęt działa niepoprawnie
D. zdolności programu do funkcjonowania w sytuacjach, gdy system działa niepoprawnie
Testy wydajnościowe są kluczowym elementem procesu zapewnienia jakości oprogramowania, mającym na celu ocenę zdolności systemu lub modułu do spełnienia określonych wymagań wydajnościowych. Ich głównym celem jest zmierzenie, jak system radzi sobie w warunkach obciążenia, a także w różnych scenariuszach użytkowania. W ramach testów wydajnościowych analizuje się takie parametry jak czas reakcji, przepustowość oraz zasoby zużywane przez aplikację. Praktycznym przykładem może być testowanie aplikacji internetowej w warunkach, gdy korzysta z niej wielu użytkowników jednocześnie, co pozwala ocenić, jak skaluje się system. W kontekście standardów, organizacje często odnoszą się do metodologii takich jak Performance Testing Framework, a także do narzędzi jak JMeter czy LoadRunner, które umożliwiają automatyzację procesu testowania. Testy te pomagają w identyfikacji wąskich gardeł, które mogą wpływać na wydajność, co przekłada się na lepsze doświadczenia użytkowników oraz minimalizację kosztów związanych z utrzymaniem systemu.

Pytanie 12

Zgodnie z zasadami ACID dotyczącymi przeprowadzania transakcji wymóg izolacji (ang. isolation) wskazuje, że

A. po zrealizowaniu transakcji system bazy danych będzie zgodny
B. w sytuacji konfliktu z inną transakcją obie zmieniają te same dane równocześnie
C. pod określonymi warunkami dane modyfikowane przez transakcję mogą być cofnięte
D. gdy dwie transakcje działają równocześnie, to zazwyczaj nie dostrzegają zmian wprowadzanych przez siebie
Izolacja w kontekście transakcji baz danych odnosi się do sposobu, w jaki transakcje współdziałają i oddziałują na siebie, a jej zrozumienie jest niezbędne do uniknięcia wielu pułapek związanych z równoległym przetwarzaniem danych. Pierwsza z niepoprawnych odpowiedzi sugeruje, że pod pewnymi warunkami dane zmieniane przez transakcję mogą zostać wycofane. Chociaż wycofywanie transakcji (ang. rollback) jest ważną funkcją zapewniającą integralność danych, nie jest to bezpośrednio związane z izolacją. Izolacja skupia się na interakcji pomiędzy równoległymi transakcjami, a nie na tym, co się dzieje w przypadku ich wycofania. Kolejny błąd wynika z odpowiedzi, która twierdzi, że w przypadku konfliktu z inną transakcją obie modyfikują te same dane w tym samym czasie. Takie podejście jest sprzeczne z zasadą izolacji, ponieważ transakcje powinny być w stanie współistnieć bez wzajemnego wpływania na siebie. Ostatnia niepoprawna odpowiedź, mówiąca o spójności systemu po wykonaniu transakcji, odnosi się do właściwości konsystencji ACID, która jednak nie jest tożsama z izolacją. W praktyce, niezrozumienie izolacji i jej skutków może prowadzić do wystąpienia problemów takich jak zjawisko phantom reads, lost updates czy dirty reads, co w konsekwencji obniża jakość danych przetwarzanych przez aplikacje oraz może prowadzić do błędów w logice biznesowej. Kluczowe jest zrozumienie, że izolacja jest fundamentem dla poprawnego działania aplikacji bazodanowych w środowiskach, w których zachodzi równoległe przetwarzanie danych.

Pytanie 13

Jakiego ograniczenia (constraint) używa się do zdefiniowania klucza obcego?

A. PRIMARY KEY(ID)
B. AUTO_INCREMENT(ID)
C. FOREIGN KEY(ID)
D. UNIQUE KEY(ID)
Odpowiedź 'FOREIGN KEY(ID)' jest poprawna, ponieważ klucz obcy służy do definiowania relacji między tabelami w bazach danych. Klucz obcy to atrybut lub zestaw atrybutów w jednej tabeli, który odnosi się do klucza głównego innej tabeli. Przykładowo, w bazie danych, która obsługuje system zarządzania zamówieniami, tabela 'Zamówienia' może zawierać kolumnę 'KlientID', będącą kluczem obcym odnoszącym się do kolumny 'ID' w tabeli 'Klienci'. Użycie kluczy obcych pozwala na zapewnienie integralności referencyjnej, co oznacza, że każdy wpis w tabeli 'Zamówienia' musi odpowiadać istniejącemu klientowi w tabeli 'Klienci'. Dobrym praktykom w projektowaniu baz danych jest stosowanie kluczy obcych jako sposobu na unikanie niezgodności danych oraz na umożliwienie wykonywania zapytań z wykorzystaniem JOIN, co ułatwia uzyskiwanie skonsolidowanych informacji z różnych tabel. Ponadto, w przypadku usunięcia lub aktualizacji rekordów w tabeli źródłowej, można skonfigurować odpowiednie zasady, takie jak 'CASCADE', które automatycznie zaktualizują powiązane dane w tabeli docelowej, co jest istotne dla zachowania spójności danych.

Pytanie 14

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

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

Pytanie 15

Aby odzyskać bazę danych z kopii zapasowej na serwerze MSSQL, należy użyć polecenia

A. EXPORT DATABASE
B. RESTORE DATABASE
C. UNBACKUP DATABASE
D. BACKUP DATABASE
Aby przywrócić bazę danych z kopii zapasowej na serwerze MSSQL, trzeba użyć polecenia RESTORE DATABASE. To bardzo ważna komenda, bo pozwala nam na odzyskanie danych do stanu sprzed jakiejś awarii czy utraty informacji. Można to robić w różnych sytuacjach, na przykład przywracając bazę z pełnej kopii zapasowej albo jakiejś różnicowej. Przykład użycia wygląda tak: RESTORE DATABASE [NazwaBazyDanych] FROM DISK = 'C:\Backup\KopiaZap.pdf' WITH REPLACE; co zastąpi starą bazę nową. Fajnie też wspomnieć, że standardy jak ISO 27001 pokazują, jak ważne są regularne kopie zapasowe, żeby zachować integralność danych i ciągłość działania. A tak przy okazji, przed przywracaniem warto zablokować dostęp do bazy, żeby nie było żadnych konfliktów.

Pytanie 16

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

A. id wiersza w $zm1 i zapytanie INSERT INTO w $zm2
B. identyfikator połączenia z bazą danych w $zm1 i zapytanie SELECT w $zm2
C. NULL w $zm1, aby baza mogła zapisać kod błędu i zapytanie SELECT w $zm2
D. identyfikator połączenia z bazą danych w $zm1 i zapytanie INSERT INTO w $zm2
Wybór innych odpowiedzi wskazuje na pewne nieporozumienia dotyczące funkcji mysqli_query oraz sposobu operowania na bazach danych w PHP. Przykładowo, sugerowanie, że w $zm1 powinno być id wiersza, jest błędne, ponieważ w tym kontekście nie przekazujemy konkretnego rekordu, lecz identyfikator połączenia. Również pomysł, aby używać zapytania SELECT w $zm2, nie jest właściwy, ponieważ SELECT służy do odczytu danych, a nie do ich wstawiania. W kontekście baz danych, każde polecenie ma swoje przeznaczenie i powinno być używane zgodnie z intencją. Użycie NULL w miejscu identyfikatora połączenia jest także mylnym posunięciem, ponieważ nazwa ta odnosi się do zasobów, które muszą być zaawansowane do działania. Wszelkie próby wstawiania danych bez otwartego połączenia z bazą danych zakończą się błędem. Zrozumienie tych zasad jest kluczowe dla każdego programisty, aby móc poprawnie i efektywnie zarządzać bazami danych, co jest podstawą wielu aplikacji internetowych. Ignorowanie tej wiedzy może prowadzić nie tylko do błędów w działaniu aplikacji, ale również do poważnych luk bezpieczeństwa.

Pytanie 17

Które dane z 8 rekordów wpisanych do tabeli zwierzeta zostaną wyświetlone w wyniku podanego poniżej zapytania SQL?

SELECT imie FROM zwierzeta WHERE rodzaj = 2 AND szczepienie = 2016;

idrodzajimiewlascicielszczepienieopis
11FafikAdam Kowalski2016problemy z uszami
21BrutusAnna Wysocka2016zapalenie krtani
41SabaMonika Nowak2015antybiotyk
51AlmaJan KowalewskiNULLantybiotyk
62FigaroAnna KowalskaNULLproblemy z uszami
72DikaKatarzyna Kowal2016operacja
82FuksJan Nowak2016antybiotyk
A. Dika, Fuks.
B. Anna Kowalska, Jan Nowak.
C. Figaro, Dika, Fuks.
D. Fafik, Brutus, Dika, Fuks.
Gratulacje! Twoja odpowiedź była poprawna. Wybrałeś 'Dika, Fuks.', co jest prawidłowym wynikiem dla podanego zapytania SQL. Zapytanie przeszukuje bazę danych zwierząt z podziałem na pewne kryteria - w tym przypadku są to zwierzęta o rodzaju, który odpowiada 2 oraz które były szczepione w 2016 roku. Wśród wszystkich rekordów w tabeli tylko 'Dika' i 'Fuks' spełniają te kryteria, dlatego tylko one są wyświetlane. To pokazuje, jak potężne i elastyczne mogą być zapytania SQL - możemy przeszukiwać ogromne ilości danych, stosując różne warunki, aby otrzymać dokładnie to, czego szukamy. Zrozumienie i umiejętne wykorzystanie takich zapytań jest kluczowe w pracy z bazami danych. Pamiętaj, że SQL pozwala nie tylko na pobieranie danych, ale również na ich modyfikację, usuwanie oraz dodawanie nowych rekordów do bazy. Spróbuj teraz zastosować swoją wiedzę w praktycznych zadaniach!

Pytanie 18

Fragment tabeli gory prezentuje polskie łańcuchy górskie oraz ich najwyższe szczyty. Przedstaw kwerendę, która oblicza średnią wysokość szczytów dla każdego łańcucha górskiego.

Idpasmonazwa wysokosc
134Góry Bystrzyckie(brak nazwy)949
137Góry BystrzyckieAnielska Kopa871
74Beskid ŻywieckiBabia Góra (Diablak)1725
41Beskid ŚląskiBarania Góra1220
145Góry KarczewskieBaraniec723
128Góry BardzkieBardzka Góra (Kalwaria)583
297TatryBeskid2012
A. SELECT pasmo, COUNT(wysokosc) FROM gory ORDER BY pasmo
B. SELECT pasmo, AVG(wysokosc) FROM gory GROUP BY pasmo
C. SELECT pasmo, SUM(wysokosc) FROM gory GROUP BY pasmo
D. SELECT pasmo, AVG(wysokosc) FROM gory LIMIT pasmo
Prawidłowa odpowiedź: SELECT pasmo, AVG(wysokosc) FROM gory GROUP BY pasmo; jest właściwa, ponieważ pozwala na wyliczenie średniej wysokości szczytów dla każdego pasma górskiego indywidualnie. Kwerenda ta wykorzystuje klauzulę GROUP BY, która grupuje rekordy na podstawie kolumny pasmo, co jest niezbędne do uzyskania agregatów danych w SQL. Funkcja AVG() jest używana do obliczania średniej wartości w grupie, co w tym przypadku odnosi się do średniej wysokości szczytów. W praktyce takie zapytania są często używane w analizie danych, gdzie istnieje potrzeba podsumowania informacji w sposób umożliwiający wyciąganie wniosków na podstawie agregacji danych. Ważne jest również zrozumienie, że bez klauzuli GROUP BY funkcja AVG() obliczyłaby średnią z całej tabeli, a nie w ramach poszczególnych pasm. Dlatego poprawne użycie tej klauzuli jest kluczowe w kontekście uzyskania precyzyjnych wyników grupowania danych w relacyjnych bazach danych. Tego rodzaju operacje są fundamentalne w analizie danych i raportowaniu biznesowym, gdzie wymagana jest konsolidacja informacji z podziałem na różne kategorie czy segmenty.

Pytanie 19

Baza danych księgarni zawiera tabelę o nazwie książki, w której znajdują się: id, idAutor, tytul, ileSprzedanych oraz tabelę autorzy z polami: id, imie, nazwisko. Aby wygenerować raport dotyczący sprzedanych książek z tytułami i nazwiskami autorów, co należy zrobić?

A. stworzyć kwerendę wyszukującą tytuły książek
B. przygotować dwie oddzielne kwerendy: pierwszą wyszukującą tytuły książek, drugą wyszukującą nazwiska autorów
C. zdefiniować relację 1..n pomiędzy tabelami książki i autorzy, a następnie przygotować kwerendę łączącą obie tabele
D. zdefiniować relację 1..1 pomiędzy tabelami książki i autorzy, a następnie przygotować kwerendę łączącą obie tabele
Wybranie odpowiedzi, która mówi tylko o tym, żeby stworzyć kwerendę do wyszukiwania tytułów książek, to nie jest dobry pomysł, bo nie bierze pod uwagę związku między książkami a autorami. Bez połączenia tych dwóch rzeczy raport byłby niespójny i brakowałoby ważnych informacji o autorach. Co do odpowiedzi, która mówi o relacji 1..1 - to też nie jest to prawda, bo tak naprawdę w naszym przypadku autorzy mogą mieć kilka książek, więc relacja powinna być 1..n. W innym wypadku, mogłoby to wprowadzić w błąd. Dodatkowo, robienie dwóch oddzielnych kwerend to nie jest efektywne podejście, bo nie integruje danych, a to jest kluczowe, gdy chcemy mieć pełny obraz sytuacji. Łączenie danych w jednej kwerendzie za pomocą JOIN to standard w analizie baz danych i daje lepszą organizację oraz czytelność wyników.

Pytanie 20

W hurtowni danych stworzono tabelę sprzedaz, która zawiera pola: id, kontrahent, grupa_cenowa, obrot. Jakie polecenie trzeba zastosować, aby znaleźć tylko kontrahentów z grupy cenowej numer dwa, których obrót przekracza 4000 zł?

A. SELECT kontrahent FROM sprzedaz WHERE grupa_cenowa = 2 OR obrot > 4000;
B. SELECT sprzedaz FROM kontrahent WHERE obrot > 4000;
C. SELECT kontrahent FROM sprzedaz WHERE grupa_cenowa = 2 AND obrot > 4000;
D. SELECT sprzedaz FROM kontrahent WHERE grupa_cenowa = 2 AND obrot > 4000;
Twoja odpowiedź jest na właściwej drodze. Wykorzystałeś klauzulę SELECT w zapytaniu SQL, żeby wydobyć konkretne dane z tabeli sprzedaz. Świetnie, że zastosowałeś WHERE z warunkami 'grupa_cenowa = 2' oraz 'obrot > 4000', bo to dokładnie filtruje wyniki do tych kontrahentów, którzy są w drugiej grupie cenowej i mają obrót większy niż 4000 zł. Takie operacje są bardzo ważne w analizie danych, szczególnie w hurtowniach danych, gdzie musisz dobrze filtrować i agregować informacje, żeby wyciągnąć sensowne wnioski. W praktyce takie zapytania mogą być przydatne przy tworzeniu raportów sprzedażowych czy ocenie rentowności klientów. Warto też pamiętać, żeby tabele i kolumny były jasno nazwane, bo to zdecydowanie ułatwia tworzenie zapytań SQL.

Pytanie 21

Jak nazywa się platforma wspierająca rozwój oprogramowania w technologii .NET?

A. framework
B. db2
C. middleware
D. eclipse
Wybór db2, eclipse oraz middleware jako odpowiedzi na pytanie o platformę wspierającą programowanie w technologii .NET jest niepoprawny z kilku powodów. Db2 to system zarządzania bazami danych, który jest używany do przechowywania i zarządzania danymi w aplikacjach, ale sam w sobie nie dostarcza środowiska ani narzędzi do programowania. Jest to technologia związana z bazami danych, a nie z frameworkami do tworzenia aplikacji. Eclipse to środowisko zintegrowane (IDE), które obsługuje różne języki programowania, ale jego głównym celem jest umożliwienie programistom pisania kodu, a nie dostarczanie specyficznych bibliotek czy narzędzi dla platformy .NET. Chociaż Eclipse może być używane do pracy z technologią .NET poprzez odpowiednie wtyczki, to nie jest to platforma natywna dla .NET, jakim jest .NET Framework. Middleware to termin odnoszący się do oprogramowania, które działa pomiędzy różnymi aplikacjami lub systemami, umożliwiając komunikację i zarządzanie danymi. Nie jest to jednak framework do programowania, a raczej kategoria oprogramowania, która wspiera interakcje między aplikacjami. Dlatego wszystkie te odpowiedzi są błędne w kontekście pytania o platformę wspierającą programowanie w technologii .NET.

Pytanie 22

W SQL przy użyciu kwerendy ALTER można

A. dodać dane do tabeli
B. zlikwidować tabelę
C. stworzyć tabelę
D. zmienić strukturę tabeli
Kwerenda SQL <i>ALTER</i> jest kluczowym narzędziem do modyfikacji istniejących struktur tabel w bazach danych. Umożliwia programistom dostosowanie tabel do zmieniających się wymagań aplikacji lub organizacji. Przykładowo, za pomocą polecenia <i>ALTER TABLE</i> możemy dodać nową kolumnę, usunąć istniejącą, zmienić typ danych kolumny czy również ustawić nowe ograniczenia, takie jak klucze obce. W praktyce, gdy firma rozwija swoje usługi, często zachodzi potrzeba dostosowania struktury bazy danych, co może być realizowane przez odpowiednie kwerendy <i>ALTER</i>. Dobrą praktyką jest również regularne przeglądanie i aktualizowanie struktury bazy danych, aby zapewnić optymalizację wydajności oraz zgodność z wymaganiami biznesowymi. Standard SQL, który definiuje te operacje, jest szeroko używany i uznawany za fundamentalny w pracy z relacyjnymi bazami danych. Znajomość kwerendy <i>ALTER</i> jest zatem niezbędna dla wszystkich, którzy zajmują się administracją baz danych i programowaniem aplikacji opartych na danych.

Pytanie 23

Narzędziem do zarządzania bazą danych wbudowanym w pakiet XAMPP jest

A. pgAdmin
B. SQLite
C. phpMyAdmin
D. MySQL Workbench
MySQL Workbench to narzędzie do projektowania baz danych i wykonywania zapytań SQL, jednak nie jest częścią pakietu XAMPP. Jest to oprogramowanie, które działa jako samodzielna aplikacja, a nie narzędzie wbudowane, co prowadzi do nieporozumień w kontekście zarządzania bazami danych w środowisku XAMPP. Użytkownicy często mylą MySQL Workbench z phpMyAdmin, ponieważ obydwa programy współpracują z MySQL, ale różnią się w zakresie funkcji i środowiska użycia. Podobnie, pgAdmin jest narzędziem do zarządzania bazami danych PostgreSQL, więc nie ma zastosowania w kontekście XAMPP, który domyślnie wykorzystuje MySQL. SQLite to lekka baza danych, która nie jest powiązana z XAMPP, a jej zastosowanie różni się od MySQL, co czyni tę odpowiedź również błędną. Wybór niewłaściwego narzędzia do zarządzania bazą danych często wynika z nieporozumień dotyczących kompatybilności oprogramowania oraz ich funkcji. Ważne jest, aby zrozumieć, które narzędzia są dedykowane do określonych systemów baz danych oraz jakie mają funkcjonalności, aby uniknąć problemów związanych z zarządzaniem danymi oraz ich integralnością. Właściwe narzędzia powinny być wybierane na podstawie specyfiki projektu oraz wymagań technicznych, co jest kluczowe dla efektywnego zarządzania bazami danych.

Pytanie 24

Jakie technologie są konieczne do uruchomienia systemu CMS Joomla!?

A. PHP oraz MySQL
B. Apache oraz PHP
C. IIS, PERL i MySQL
D. Apache, PHP i MySQL
Wybór niewłaściwego środowiska dla Joomla! może prowadzić do nieprawidłowego działania całego systemu. W przypadku odpowiedzi zawierających IIS oraz PERL, istotne jest zrozumienie, że Joomla! nie jest zoptymalizowana do pracy z tymi technologiami. IIS to serwer WWW od Microsoftu, który jest mniej popularny w środowisku, w którym dominuje Joomla!. Wiele funkcji dostępnych w Joomla! może być utrudnionych lub wręcz niemożliwych do zrealizowania przy użyciu tego serwera, co skutkuje ograniczeniami w dostępnych wtyczkach i modułach. Z kolei PERL, jako język programowania, nie jest standardowo używany w kontekście Joomla!, co stanowi kolejną przeszkodę. Wybierając Apache i PHP, użytkownik korzysta z najczęściej używanych rozwiązań w ekosystemie PHP, co zapewnia szeroką bazę wsparcia oraz dokumentacji. Niezrozumienie, które technologie są wymagane do działania Joomla!, może prowadzić do błędnych decyzji, takich jak wybór nieodpowiedniego serwera, co z kolei wpływa na wydajność i bezpieczeństwo końcowego projektu. Kluczowe jest, aby przed rozpoczęciem pracy z systemem CMS, dokładnie zapoznać się z jego wymaganiami i dobrymi praktykami, co pomoże uniknąć podstawowych problemów oraz zapewni optymalny rozwój i zarządzanie witryną.

Pytanie 25

Aby ułatwić dodawanie oraz modyfikowanie danych w tabeli, konieczne jest zdefiniowanie

A. filtru.
B. zapytania SELECT.
C. formularza.
D. sprawozdania.
Kwerenda SELECT jest narzędziem służącym do pobierania danych z bazy danych. Chociaż może być wykorzystywana do wyświetlania informacji, nie jest ona odpowiednia do wprowadzania lub edytowania danych. Kwerenda SELECT jedynie odzwierciedla stan bazy danych w momencie jej wykonania, nie oferując możliwości edycji czy wprowadzania nowych informacji. Podobnie, raport jest narzędziem, które syntetyzuje dane i przedstawia je w zrozumiały sposób, jednak jego funkcjonalność ogranicza się do prezentacji wyników, a nie do interakcji z danymi. Raporty są przydatne do analizowania danych, ale nie umożliwiają użytkownikom zmiany ich zawartości. Z kolei filtr to mechanizm, który pozwala na ograniczenie wyświetlanych danych na podstawie określonych kryteriów. Filtry są użyteczne w kontekście przeszukiwania danych, ale ich rola nie obejmuje edytowania ani wprowadzania nowych informacji. Filtry pomagają w selekcji danych, ale nie zmieniają ich stanu, co czyni je niewłaściwym wyborem dla zadania edycji danych. W skrócie, wszystkie wymienione opcje mają swoje zastosowania, lecz nie są w stanie zastąpić funkcji formularza w kontekście jednostkowego wprowadzania i edytowania danych.

Pytanie 26

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

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

Pytanie 27

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

A. podział ról i obowiązków
B. rywalizacja między członkami zespołu
C. efektywna komunikacja
D. wzajemny szacunek
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 28

Wśród technik rozwiązywania problemów w przedsiębiorstwie znajdują się: ignorowanie, separacja, arbitraż oraz kompromis. Wskaż metodę, która szczególnie może być niebezpieczna i prowadzić do zaostrzenia konfliktu w firmie?

A. ignorowanie
B. kompromis
C. separacja
D. arbitraż
Wybór arbitrażu, separacji czy kompromisu jako technik rozwiązywania problemów jest często mylny, gdyż wiele osób nie dostrzega ich potencjalnych ograniczeń i ryzyk. Arbitraż, na przykład, może być postrzegany jako skuteczna metoda, ponieważ angażuje bezstronną osobę, która podejmuje decyzję w sprawie sporu. Jednakże, w praktyce, takie podejście może prowadzić do frustracji stron, które czują się wykluczone z procesu podejmowania decyzji, co z kolei może zwiększyć napięcie i niechęć do współpracy w przyszłości. Separacja, czyli fizyczne lub psychiczne oddzielenie stron, natomiast, może prowadzić do dalszego wyobcowania i braku komunikacji, co w dłuższej perspektywie osłabia zespół oraz zdolność do współpracy między działami. Z drugiej strony, kompromis, mimo że wydaje się być zrównoważonym rozwiązaniem, często prowadzi do niepełnego zaspokojenia potrzeb obu stron, co może w przyszłości powodować niezadowolenie i dalsze konflikty. Zastosowanie tych technik bez wcześniejszej analizy sytuacji oraz zrozumienia ich potencjalnych skutków może prowadzić do poważnych problemów w organizacji, a także do utraty zaufania między członkami zespołu. Dlatego kluczowe jest, aby w procesie rozwiązywania konfliktów opierać się na solidnych podstawach teoretycznych oraz praktycznych, takich jak te opisane w badaniach dotyczących dynamiki grup i zarządzania konfliktami.

Pytanie 29

Wskaż właściwą sekwencję faz projektowania relacyjnej bazy danych?

A. Określenie relacji, Określenie kluczy podstawowych, Selekcja, Określenie zbioru danych
B. Określenie kluczy podstawowych tabel, Określenie zbioru danych, Selekcja, Określenie relacji
C. Określenie zbioru danych, Selekcja, Określenie kluczy podstawowych tabel, Określenie relacji
D. Selekcja, Określenie relacji, Określenie kluczy podstawowych tabel, Określenie zbioru danych
Wszystkie te błędne odpowiedzi zapominają o jednym ważnym aspekcie – czyli kolejności w projektowaniu relacyjnych baz danych. Jak zaczniesz od ustalania relacji, nie mając wcześniej sprecyzowanego zbioru danych, to później może być naprawdę chaotycznie. Trudniej wtedy zrozumieć, jakie dane powinny być razem, co tylko skomplikuje projekt. Jeśli określisz klucze podstawowe, zanim dobrze zrozumiesz, jakie atrybuty mamy, to może być dość problematyczne. Kolejność działań jest kluczowa – najpierw musimy mieć zbiór danych, potem selekcję, a na końcu relacje. Odwrotna kolejność tylko wprowadza zamieszanie i może negatywnie wpływać na wydajność. A tego w IT nie chcemy.

Pytanie 30

Aby zwiększyć wydajność operacji w bazie danych, należy skupić się na polach, które są często wyszukiwane lub sortowane

A. dodać klucz obcy
B. stworzyć oddzielną tabelę przechowującą wyłącznie te pola
C. utworzyć indeks
D. dodać więzy integralności
Dodawanie kluczy obcych nie jest bezpośrednią metodą na przyspieszenie operacji na bazie danych. Klucze obce są używane do zapewnienia integralności referencyjnej, co oznacza, że ich celem jest zapewnienie spójności danych w relacjach pomiędzy tabelami. Choć klucze obce mogą wpłynąć na wydajność w kontekście zapytań, nie przyspieszają one ani nie optymalizują wyszukiwania w obrębie pojedynczych tabel. Tworzenie osobnych tabel przechowujących tylko te pola również nie jest metodą optymalizacji efektywności wyszukiwania. Tego rodzaju podejście może prowadzić do komplikacji w zarządzaniu danymi oraz zmniejszenia wydajności przy łączeniu tabel w zapytaniach. Dodanie więzów integralności, które zapewniają, że dane w tabelach są poprawne i zgodne z określonymi zasadami, jest również istotne, ale nie wpływa bezpośrednio na szybkość operacji na bazie danych. Takie podejścia mogą prowadzić do błędnych przekonań, że poprawa wydajności bazy danych można osiągnąć poprzez wprowadzenie dodatkowych ograniczeń lub zmian w strukturze danych, co w rzeczywistości może generować dodatkowe koszty obliczeniowe przy wykonywaniu podstawowych operacji. Kluczowe jest stosowanie odpowiednich technik indeksacji, które są powszechnie uznawane za najlepszą praktykę w kontekście optymalizacji zasobów bazy danych.

Pytanie 31

Z bazy danych trzeba uzyskać zapytaniem SQL nazwiska pracowników, którzy sprawują funkcję kierownika, a ich wynagrodzenie mieści się w jednostronnie domkniętym przedziale (3000, 4000>. Która klauzula weryfikuje ten warunek?

A. WHERE kierownik = true AND pensja > 3000 AND pensja <= 4000
B. WHERE kierownik = true AND pensja => 3000 OR pensja < 4000
C. WHERE kierownik = true AND pensja => 3000 AND pensja <= 4000
D. WHERE kierownik = true OR pensja > 3000 OR pensja <= 4000
Poprawna odpowiedź to 'WHERE kierownik = true AND pensja > 3000 AND pensja <= 4000;'. Ta klauzula w SQL jest zgodna z wymaganiami, ponieważ precyzyjnie określa, że zwracane będą tylko te rekordy, gdzie pracownik jest kierownikiem oraz jego pensja jest większa niż 3000 i jednocześnie mniejsza lub równa 4000. Zastosowanie operatorów logicznych AND w tym kontekście jest kluczowe, ponieważ pozwala na jednoczesne spełnienie obu warunków. W praktyce, aby uzyskać wyniki zgodne z tymi kryteriami, ważne jest, aby zrozumieć różnicę między operatorami porównawczymi, a także ich zastosowanie w kontekście warunków. Przykładowo, jeśli dla dużej bazy danych chcemy filtrować pracowników w oparciu o ich pozycje oraz wynagrodzenie, stosowanie precyzyjnych klauzul WHERE pozwala na optymalizację zapytań i lepsze zarządzanie danymi. Dobre praktyki w SQL podkreślają znaczenie klarowności i dokładności w definiowaniu warunków, co bezpośrednio przekłada się na efektywność operacji na bazach danych.

Pytanie 32

Które z poniższych poleceń pozwala na dodanie kolumny zadanie_kompletne do tabeli zadania?

A. CREATE INDEX zadania ADD COLUMN zadanie_kompletne int
B. ADD COLUMN zadanie_kompletne WITH zadania
C. ALTER TABLE zadania ADD COLUMN zadanie_kompletne int
D. INSERT INTO zadania VALUES zadanie_kompletne
Wszystkie trzy pozostałe odpowiedzi są nieprawidłowe w kontekście dodawania nowej kolumny do tabeli. Pierwsze z zaproponowanych poleceń, które sugeruje utworzenie indeksu, jest niepoprawne, ponieważ CREATE INDEX służy do tworzenia indeksów, które poprawiają wydajność zapytań, a nie do modyfikacji struktury tabeli. Indeks może być pomocny w optymalizacji wyszukiwania danych w tabeli, jednak nie ma związku z dodawaniem nowych kolumn. Drugie polecenie, INSERT INTO, jest przeznaczone do dodawania nowych rekordów do istniejącej tabeli, a nie do modyfikacji jej struktury. To polecenie umożliwia dodawanie danych do kolumn, które już istnieją, ale nie może być użyte do dodawania nowych kolumn. Ostatnia nieprawidłowa odpowiedź dotycząca 'ADD COLUMN zadanie_kompletne WITH zadania' jest również błędna, ponieważ nie jest to poprawna składnia SQL. Nie ma polecenia 'WITH' w kontekście dodawania kolumn do tabeli; zamiast tego powinno być używane polecenie ALTER TABLE. W rezultacie, niezrozumienie celu każdego z tych poleceń może prowadzić do błędnych prób modyfikacji struktury bazy danych, co w praktyce może skutkować utratą danych lub rozczarowującymi wynikami operacji.

Pytanie 33

Kolumna, która pełni funkcję klucza głównego w tabeli, powinna

A. posiadać ciągłą numerację
B. zawierać wartości liczbowe
C. zawierać unikalne wartości
D. być innego rodzaju niż inne kolumny
To stwierdzenie, że klucz główny musi być ciągły albo tylko liczbowy, jest nie do końca trafne. Klucz główny nie musi być tylko liczbowy ani też nie musi mieć ciągłej numeracji. Na przykład można używać stringów jako kluczy głównych, takich jak numery ID czy kody produktów. No a jeżeli byśmy mieli ciągłą numerację, to mogą wystąpić problemy, szczególnie gdy usuwamy jakieś rekordy. To może prowadzić do braku unikalności. Poza tym, klucz główny niekoniecznie musi być innego typu niż reszta kolumn. Przykładowo, kolumna z tekstem też może być kluczem, o ile wartości są unikalne. W kontekście projektowania baz danych najważniejsze jest, żeby klucz główny był unikalny, a niekoniecznie jaki to typ czy format. Ludzie zajmujący się bazami danych powinni wiedzieć, że klucz główny powinno się wybierać w zależności od kontekstu aplikacji i wymagań danych, a nie na podstawie błędnych założeń.

Pytanie 34

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

A. BLOB
B. FLOAT(11)
C. CHAR(11)
D. TINYINT
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 35

Kwerenda ma za zadanie w tabeli artykuly ALTER TABLE artykuly MODIFY cena float;

A. dodać kolumnę cena o typie float, jeśli nie istnieje
B. usunąć kolumnę cena typu float
C. zmienić nazwę kolumny z cena na float
D. zmienić typ na float dla kolumny cena
Odpowiedzi, które sugerują usunięcie kolumny 'cena', zmiana jej nazwy albo dodanie nowej kolumny, nie są zgodne z rzeczywistym działaniem polecenia ALTER TABLE w kontekście przedstawionym w pytaniu. Usunięcie kolumny jest operacją destrukcyjną, która prowadzi do utraty wszystkich danych w tej kolumnie, co z reguły nie jest celem operacji zmiany typu danych. Zmiana nazwy kolumny na typ float również jest niewłaściwa, ponieważ typ danych nie powinien być nazwą kolumny; kolumny mają nazwy, a polecenie ALTER TABLE nie zmienia ich nazw na typy danych. Dodanie nowej kolumny 'cena' o typie float, jeśli nie istnieje, jest z kolei inną operacją, która nie odnosi się do modyfikacji istniejącej kolumny, a zamiast tego tworzy nową kolumnę, co jest całkowicie innym zamysłem. Kluczowe błędy myślowe w tych odpowiedziach wynikają z nieporozumienia dotyczącego podstawowego działania kwerend SQL i różnicy między modyfikacją a usuwaniem czy dodawaniem kolumn. W praktyce, przede wszystkim należy rozumieć, że ALTER TABLE jest używane do zmiany struktury tabeli, a nie do jej usuwania czy dodawania zbędnych elementów.

Pytanie 36

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. SELECT
B. UPDATE
C. INSERT INTO
D. CHECK TABLE
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 37

Jakie polecenie wydane w terminalu systemu operacyjnego, które zawiera w swojej składni opcję --repair, pozwala na naprawę bazy danych?

A. truncate
B. mysqldump
C. mysqlcheck
D. create
Truncate to polecenie, które służy do szybkiego usuwania wszystkich wierszy z tabeli, a nie do naprawy bazy danych. Często mylone jest z usuwaniem danych, jednak nie wykonuje ono operacji naprawczych ani nie zdejmuje blokad związanych z integralnością danych. Mysqldump to z kolei narzędzie do tworzenia kopii zapasowych baz danych, które eksportuje dane do postaci pliku, ale również nie ma możliwości naprawy istniejących błędów w danych czy strukturze tabel. Create to komenda używana do tworzenia nowych tabel lub baz danych, jednak nie ma zastosowania w kontekście naprawy już istniejących obiektów. Typowym błędem myślowym jest przypisywanie funkcji, które są dedykowane do zarządzania danymi, do operacji naprawczych, co może prowadzić do utraty danych lub niewłaściwego postępowania z bazą. Kluczowym aspektem w zarządzaniu bazami danych jest znajomość właściwych narzędzi i ich zastosowań, co pozwala na skuteczne i bezpieczne zarządzanie danymi. Użycie niewłaściwych poleceń w kontekście zarządzania bazami danych może prowadzić do problemów z dostępnością, a nawet do uszkodzenia danych, dlatego istotne jest, aby dobrze rozumieć funkcje narzędzi, które się wykorzystuje.

Pytanie 38

Wymień dwa sposoby na zabezpieczenie bazy danych Microsoft Access

A. Funkcje anonimowe oraz ustawienie hasła do otwarcia bazy danych
B. Ustalanie hasła do otwarcia bazy danych oraz zabezpieczeń na poziomie użytkownika
C. Ustalenie zabezpieczeń na poziomie użytkownika oraz w sesji
D. Zaszyfrowanie pliku bazy danych oraz wiadomości SMS z kodem autoryzacyjnym
Zabezpieczenie bazy danych Microsoft Access wymaga zastosowania odpowiednich technik, które niestety nie są w pełni reprezentowane w niepoprawnych odpowiedziach. Funkcje anonimowe, choć mogą być używane w kontekście prywatności, nie odpowiadają rzeczywistym potrzebom ochrony bazy danych. Ustalanie hasła otwarcia bazy danych jest dobrym krokiem, ale sama metoda nie wystarcza w przypadku wysoce wrażliwych danych. Nie można opierać bezpieczeństwa wyłącznie na jednym mechanizmie. Zaszyfrowanie pliku bazy danych jest metodą, jednak SMS-y z kodem autoryzującym to błędne podejście, ponieważ nie są one standardowo wspierane w Microsoft Access jako forma zabezpieczenia bazy danych. Powinno się raczej korzystać z bardziej zaawansowanych systemów autoryzacji, które są lepiej zintegrowane z aplikacjami bazodanowymi. Ustalanie zabezpieczeń na poziomie użytkownika i sesji, mimo że teoretycznie mogą wydawać się skuteczne, w praktyce często pomijają kluczowe aspekty zarządzania rolami i uprawnieniami w systemach bazodanowych. To prowadzi do ryzyka nieautoryzowanego dostępu, jeśli nie zostaną spełnione odpowiednie normy zabezpieczeń. Warto zwrócić uwagę na metodologię zarządzania dostępem, która powinna być zgodna z zaleceniami branżowymi oraz regulacjami prawnymi dotyczącymi ochrony danych, takimi jak RODO.

Pytanie 39

Z tabeli mieszkańcy należy uzyskać unikalne nazwy miejscowości, do czego konieczne jest użycie wyrażenia SQL z klauzulą

A. CHECK
B. UNIQUE
C. DISTINCT
D. HAVING
Odpowiedź 'DISTINCT' jest poprawna, ponieważ w SQL służy do eliminowania powtórzeń w wynikach zapytań. Użycie klauzuli DISTINCT pozwala na zwrócenie jedynie unikalnych wartości z danej kolumny, co jest idealne w sytuacjach, gdy chcemy uzyskać listę miast, w których mieszkają osoby z tabeli 'mieszkańcy'. Na przykład, zapytanie 'SELECT DISTINCT miasto FROM mieszkańcy;' zwróci wszystkie różne miasta, w których zamieszkują mieszkańcy, eliminując duplikaty. W praktyce, klauzula DISTINCT jest często stosowana w raportach oraz analityce danych, gdzie istotne jest zrozumienie rozkładu unikalnych wartości. Warto również zauważyć, że DISTINCT może być używane w połączeniu z innymi klauzulami SQL, takimi jak WHERE, aby jeszcze bardziej zawęzić wyniki. Przykład użycia: 'SELECT DISTINCT miasto FROM mieszkańcy WHERE kraj = 'Polska';'. Dobrą praktyką jest stosowanie DISTINCT w sytuacjach, gdy zarządzamy dużymi zbiorami danych, aby zapewnić ich przejrzystość i uniknąć nadmiarowych informacji.

Pytanie 40

W bazie danych znajduje się tabela uczniowie, która ma kolumny: imie, nazwisko i klasa. Jakie polecenie SQL należy użyć, aby uzyskać imiona oraz nazwiska uczniów, których nazwiska zaczynają się na literę M?

A. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko IN 'M%';
B. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko LIKE 'M%';
C. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko IN 'M%';
D. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko='M%';
W analizie błędnych odpowiedzi kluczowe jest zrozumienie, że każda z nich nie spełnia wymagań dotyczących składni i logiki SQL. Pierwsza odpowiedź sugeruje użycie operatora IN, który jest przeznaczony do sprawdzania, czy wartość znajduje się w zbiorze danych, a nie do porównywania wzorów tekstowych. Wartości tekstowe powinny być używane z operatorem LIKE, aby umożliwić wyszukiwanie według wzorców. Z kolei trzecia odpowiedź zawiera błąd w postaci użycia klauzuli ORDER BY w nieodpowiednim kontekście, ponieważ ta klauzula służy do sortowania wyników, a nie do ich filtrowania. Ostatnia propozycja również mylnie łączy operator IN z klauzulą ORDER BY, co jest syntaktycznie niepoprawne i prowadzi do nieczytelnych i nieefektywnych zapytań. Typowe błędy myślowe prowadzące do takich pomyłek często obejmują mylenie funkcji operatorów oraz błędne zrozumienie, kiedy i jak używać określonych klauzul w SQL. Aby skutecznie korzystać z SQL, należy dobrze poznać funkcje każdego z operatorów oraz ich zastosowanie w kontekście zapytań, co pozwoli na tworzenie bardziej efektywnych i zrozumiałych zapytań do baz danych.