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 czerwca 2026 21:57
  • Data zakończenia: 21 czerwca 2026 22:18

Egzamin zdany!

Wynik: 33/40 punktów (82,5%)

Wymagane minimum: 20 punktów (50%)

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

<img src="/rysunek.png" alt="pejzaż"> Zapisany został kod HTML, który wstawia obrazek na stronę. Jeśli rysunek.png nie zostanie znaleziony, przeglądarka

A. nie załaduje strony internetowej
B. wyświetli w miejscu grafiki tekst "pejzaż"
C. w miejscu grafiki pokaże tekst "rysunek.png"
D. w miejscu grafiki zasygnalizuje błąd wyświetlania strony
Kiedy przeglądarka internetowa napotyka na kod HTML, który zawiera element graficzny, w takim przypadku, jeśli wskazany plik nie jest dostępny, następuje zachowanie określone przez atrybut 'alt'. W omawianym przykładzie, gdy przeglądarka nie może znaleźć pliku 'rysunek.png', wyświetli tekst alternatywny 'pejzaż'. Atrybut 'alt' jest niezwykle ważny z perspektywy dostępności oraz SEO, ponieważ pozwala na dostarczenie informacji o obrazie osobom, które nie mogą go zobaczyć, takim jak osoby niewidome korzystające z czytników ekranu. Z punktu widzenia standardów W3C, atrybut 'alt' jest zalecany dla każdego elementu <img>, aby poprawić użyteczność strony. W praktyce, dobrze skonstruowane opisy w atrybucie 'alt' mogą również wpłynąć pozytywnie na pozycjonowanie witryny w wyszukiwarkach, co czyni go kluczowym elementem podczas tworzenia treści na stronie internetowej. Z tego powodu umieszczanie informacyjnych i zrozumiałych opisów w tym atrybucie jest niezbędne nie tylko dla poprawy dostępności, ale także dla efektywnej optymalizacji SEO.

Pytanie 2

Aby osiągnąć efekt przedstawiony na ilustracji, w kodzie HTML należy zastosować znacznik skrótu <abbr> z atrybutem

Ilustracja do pytania
A. alt
B. dfn
C. title
D. name
Znacznik <abbr> w HTML służy do opisywania skrótów i akronimów. Atrybut title jest kluczowy, ponieważ dostarcza rozwinięcie skrótu jako podpowiedź tekstową, która pojawia się, gdy użytkownik najedzie kursorem na element. Jest to zgodne z dobrymi praktykami dostępności, umożliwiając użytkownikom lepsze zrozumienie treści. Przykładowo, kod <abbr title='inżynier'>inz.</abbr> spowoduje, że po najechaniu kursorem na skrót 'inz.', pojawi się rozwinięcie 'inżynier'. Takie podejście jest szczególnie istotne w przypadku dokumentów technicznych czy naukowych, gdzie użycie skrótów jest powszechne a pełne rozwinięcie może być niezbędne dla pełnego zrozumienia treści. Atrybut title jest również używany w innych znacznikach HTML, np. <img> do opisania obrazów, co wzbogaca semantykę strony. Zastosowanie <abbr> z atrybutem title wspiera również działanie technologii wspomagających, takich jak czytniki ekranowe, które mogą odczytać pełne rozwinięcie skrótu, podnosząc poziom dostępności strony.

Pytanie 3

Które zapytanie policzy WSZYSTKIE wiersze tabeli Koty?

A.
SELECT COUNT(*) FROM Koty;
B.
SELECT ROWNUM() FROM Koty;
C.
SELECT COUNT(Koty) AS ROWNUM;
D.
SELECT COUNT(ROWNUM) FROM Koty;
Tylko jeden zapis jest poprawny. ROWNUM() nie jest standardową funkcją zliczającą wiersze. COUNT(Koty) i COUNT(ROWNUM) odwołują się do nieistniejących nazw zamiast policzyć wiersze (Koty to nazwa tabeli). Wszystkie wiersze liczy SELECT COUNT(*) FROM Koty;.

Pytanie 4

Poniżej zamieszczony fragment skryptu w JavaScript zwróci

Ilustracja do pytania
A. ze
B. wo
C. owodzeni
D. wodzenia
Ten skrypt w JavaScript zaczyna od zadeklarowania zmiennej x, której przypisywana jest fraza 'Powodzenia na egzaminie'. Potem korzysta z metody substring na tej zmiennej z parametrami (3, 9). To znaczy, że wyciąga kawałek tekstu od indeksu 3 do 9. Pamiętaj, w JavaScript liczymy od zera, więc indeks 3 to czwarty znak, czyli 'o'. Dlatego z.substring(3, 9) zwraca 'odzeni'. Następnie, robimy kolejne wywołanie substring na tym wyniku, z parametrami (2, 4), co daje nam fragment od indeksu 2 do 4 w 'odzeni', czyli 'ze'. Na końcu, funkcja document.write(y) pokaże ten wynik na stronie. To świetny przykład na to, jak manipulować tekstem, co jest naprawdę przydatne w pracy z danymi. Z mojej perspektywy, zrozumienie operacji na tekstach to klucz do skutecznego przetwarzania i prezentacji informacji. Użycie takich metod w JavaScript do pracy z tekstem to absolutna podstawa, z którą warto się zapoznać.

Pytanie 5

W relacyjnym modelu baz danych, termin krotka odnosi się do

A. liczby rekordów w danej tabeli
B. wszystkich wierszy tabeli łącznie z wierszem nagłówkowym
C. wszystkich kolumn tabeli, które zawierają atrybuty danego obiektu
D. wierszy tabeli, z wyjątkiem wiersza nagłówkowego, w którym znajdują się nazwy kolumn
W relacyjnym modelu baz danych, krotka odnosi się do jednego wiersza tabeli, który przechowuje zestaw atrybutów (kolumn) dla danego obiektu. Każda krotka jest zbiorem wartości, które są powiązane z określonymi kolumnami. Krotki stanowią fundamentalny element relacyjnych baz danych, w których dane są zorganizowane w formie tabel, co ułatwia ich przechowywanie, przetwarzanie oraz zapytania. Na przykład, w tabeli przechowującej informacje o klientach, każda krotka mogłaby zawierać dane takie jak imię, nazwisko, adres e-mail i numer telefonu. Wartości te są ze sobą powiązane i tworzą kompletny zestaw informacji dotyczący jednego klienta. Zgodnie z normami SQL, krotki są często przetwarzane za pomocą instrukcji SELECT, które umożliwiają pobieranie, modyfikację i zarządzanie danymi na poziomie pojedynczych wierszy. Krotki są nie tylko podstawą struktury danych, ale również fundamentem, na którym opierają się operacje na bazach danych, co czyni je kluczowym pojęciem w projektowaniu oraz zarządzaniu relacyjnymi bazami danych.

Pytanie 6

Co daje użytkownikowi nadanie w MySQL roli DBManager?

A. możliwość monitorowania serwera
B. wszystkie operacje na bazach danych
C. tworzenie kont użytkowników i ustawianie haseł
D. wszystkie operacje na bazach i na użytkownikach serwera
Rola DBManager w MySQL daje użytkownikowi prawo do WSZYSTKICH operacji na BAZACH danych (tworzenie, modyfikowanie, usuwanie baz i ich zawartości) - to rola zarządzania danymi, lecz nie kontami innych użytkowników. Zapamiętaj: DBManager rządzi bazami, ale nie zarządza użytkownikami serwera.

Pytanie 7

Podaj dwa sposoby ochrony bazy danych Microsoft Access?

A. Ustalenie zabezpieczeń na poziomie użytkownika i sesji
B. Funkcje anonimowe oraz ustawienie hasła do bazy danych
C. Zaszyfrowanie pliku bazy danych oraz wiadomości SMS z kodem autoryzacyjnym
D. Ustalenie hasła do otwarcia bazy danych oraz zabezpieczeń na poziomie użytkownika
Zabezpieczenie bazy danych Microsoft Access jest kluczowym procesem, który ma na celu ochronę danych przed nieautoryzowanym dostępem oraz zapewnienie ich integralności. Ustalenie hasła do otwarcia bazy danych to pierwszy krok w kierunku zabezpieczenia. Pozwala to na ograniczenie dostępu tylko do osób, które znają hasło, co jest fundamentalnym środkiem ochrony informacji w systemach informatycznych. Dodatkowo, zabezpieczenia na poziomie użytkownika umożliwiają różnicowanie uprawnień dla poszczególnych użytkowników. Można przydzielać różne poziomy dostępu, co minimalizuje ryzyko, że niepowołane osoby będą mogły wprowadzać zmiany w bazie danych. Ważne jest również, aby stosować najlepsze praktyki związane z bezpieczeństwem, takie jak regularna aktualizacja haseł oraz audyty dostępu. Utrzymanie zgodności z międzynarodowymi standardami, takimi jak ISO/IEC 27001, może również pomóc w identyfikacji luk w zabezpieczeniach oraz w implementacji odpowiednich procedur ochrony danych. W codziennym użytkowaniu, skuteczne wdrożenie tych zabezpieczeń pozytywnie wpływa na bezpieczeństwo danych oraz ochronę prywatności użytkowników.

Pytanie 8

Deklaracja <!DOCTYPE HTML> wskazuje, że dokument napisano w której wersji HTML?

A. 4
B. 5
C. 6
D. 7
Deklaracja <!DOCTYPE HTML> - krótka, bez numeru wersji ani odwołania do DTD - to znak rozpoznawczy HTML5. Informuje przeglądarkę, że dokument korzysta z najnowszego standardu. Dlatego oznacza HTML w wersji 5.

Pytanie 9

Aby wypisać tekst na stronie w języku PHP, należy użyć instrukcji:

A.
print_r()
B.
echo
C.
write()
D.
console.log()
Do wypisywania tekstu w PHP służy echo, na przykład echo "Witaj";. Wstawia ona podany tekst lub wartość zmiennej do generowanej strony. Podobnie działa print. Dlatego do wyświetlenia tekstu w PHP używa się echo.

Pytanie 10

Na podstawie jakiego parametru oraz z ilu tabel zostaną zwrócone wiersze 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. Na podstawie parametru wyrob_id wyłącznie z trzech tabel
B. Na podstawie parametru wyrob_id ze wszystkich tabel
C. Na podstawie parametru nr_id wyłącznie z trzech tabel
D. Na podstawie parametru nr_id ze wszystkich tabel
Problem z błędnymi odpowiedziami polega na niewłaściwym zrozumieniu użycia parametrów w zapytaniu SQL Pierwsza z nich sugeruje użycie parametru wyrob_id wyłącznie dla trzech tabel co jest błędne ponieważ w analizowanym zapytaniu wyrob_id jest używany do łączenia jedynie dwóch tabel producent i serwis Nie łączy on wszystkich czterech tabel co ogranicza zakres danych Druga odpowiedź mylnie zakłada że wyrob_id jest używany dla wszystkich tabel co wskazuje na nieprawidłową interpretację struktury samego zapytania Trzecia odpowiedź błędnie sugeruje że parametr nr_id ogranicza się do trzech tabel co również jest sprzeczne z rzeczywistością zapytania które używa nr_id jako wspólnego klucza dla wszystkich czterech tabel Często pomyłki tego typu wynikają z braku zrozumienia jak działa klucz podstawowy i obcy w bazach danych Klucze te są podstawą dla relacji pomiędzy tabelami i ich poprawne użycie jest kluczowe dla uzyskiwania poprawnych wyników z zapytań Skupienie się na zrozumieniu struktury relacyjnej oraz zasad normalizacji pomoże w unikaniu takich błędów w przyszłości co jest kluczowe dla zachowania integralności i spójności danych w systemach bazodanowych

Pytanie 11

W języku PHP w konstrukcji switch powinno się znajdować

A. instrukcja default
B. konstrukcja switch(wyrażenie)
C. przynajmniej dwie instrukcje case
D. instrukcja break po każdej instrukcji case
Wybór odpowiedzi, która sugeruje, że instrukcja default jest wymagana w konstrukcji switch, jest błędny z kilku powodów. Po pierwsze, instrukcja default jest opcjonalna, a jej obecność jest uzasadniona tylko w przypadku, gdy chcemy zdefiniować domyślne działanie, gdy żaden z przypadków nie pasuje do wartości wyrażenia. Brak default nie wpływa na poprawność działania switch. Co więcej, wiele programistów decyduje się na pominięcie tej instrukcji, gdyż nie ma takiej potrzeby. Kolejną niepoprawną odpowiedzią jest twierdzenie, że w switch musi występować przynajmniej dwie instrukcje case. W rzeczywistości konstrukcja switch może składać się z jednego przypadku, co oznacza, że programista ma pełną swobodę w definiowaniu liczby użytych case'ów, w zależności od potrzeb aplikacji. Ostatni błędny wybór odnosi się do konieczności użycia instrukcji break po każdej instrukcji case. Choć stosowanie break jest dobrą praktyką, ponieważ zapobiega 'spadaniu' do kolejnych case'ów, jego brak nie czyni całej konstrukcji switch nieważną. Gdy break nie jest użyty, kod przechodzi do kolejnych instrukcji case, co może prowadzić do niezamierzonych wyników, ale nie wpływa na samą poprawność konstrukcji switch. Dlatego wszystkie te odpowiedzi są niepoprawne w kontekście wymagań dotyczących stosowania instrukcji switch w PHP.

Pytanie 12

Aby w MySQL nadać użytkownikowi prawo do nadawania i modyfikowania uprawnień innym użytkownikom, należy użyć klauzuli:

A.
TRIGGER
B.
GRANT OPTION
C.
ALL PRIVILEGES
D.
FLUSH PRIVILEGES
Klauzula WITH GRANT OPTION dodana do polecenia GRANT daje użytkownikowi prawo przekazywania innym tych uprawnień, które sam otrzymał. Np. GRANT SELECT ON baza.* TO jan WITH GRANT OPTION pozwala Janowi nadawać SELECT kolejnym osobom. Dlatego do delegowania uprawnień służy GRANT OPTION.

Pytanie 13

Jaką wartość w systemie RGB uzyskamy dla koloru zapisanego w kodzie heksadecymalnym: #1510FE?

A. rgb(15,10,FE)
B. rgb(21,16,FE)
C. rgb(21,16,254)
D. rgb(21,16,255)
Odpowiedź rgb(21,16,254) jest poprawna, ponieważ kolor zapisany w systemie heksadecymalnym #1510FE można rozłożyć na składowe RGB. W kodzie heksadecymalnym każdy z trzech kolorów (czerwony, zielony, niebieski) jest reprezentowany przez dwie cyfry. W przypadku #1510FE, pierwsze dwie cyfry (15) odnoszą się do wartości czerwonej, drugie dwie (10) do wartości zielonej, a ostatnie dwie (FE) do wartości niebieskiej. Te wartości musimy przeliczyć na system dziesiętny: czerwony to 21 (15 w systemie szesnastkowym to 21 w dziesiętnym), zielony to 16 (10 w szesnastkowym to 16 w dziesiętnym), a niebieski to 254 (FE w szesnastkowym to 254 w dziesiętnym). Tak więc końcowy wynik to rgb(21,16,254). W praktyce, znajomość konwersji kolorów jest kluczowa w projektowaniu graficznym, stron internetowych oraz aplikacji, gdzie precyzyjne odwzorowanie kolorów jest niezbędne dla uzyskania poprawnej estetyki i spójności wizualnej. Warto zaznaczyć, że standardy takie jak sRGB są powszechnie stosowane do definiowania kolorów w cyfrowych mediach, co zapewnia zgodność i przewidywalność w różnych urządzeniach wyświetlających te kolory.

Pytanie 14

Do czego odnosi się termin „front-end” w kontekście tworzenia stron internetowych?

A. do organizacji danych na serwerze WWW
B. do bazy danych z informacjami prezentowanymi na stronie
C. do działania skryptów wykonywanych po stronie serwera
D. do interfejsu strony i technologii działających w przeglądarce
Termin „front-end” odnosi się do warstwy widocznej dla użytkownika - interfejsu strony i technologii działających w PRZEGLĄDARCE (HTML, CSS, JavaScript). Dlatego front-end to interfejs strony i technologie działające w przeglądarce.

Pytanie 15

Jak nazywa się tłumaczenie kodu źródłowego napisanego przez programistę na zrozumiały dla komputera kod maszynowy?

A. analizowanie błędów
B. wykonywanie
C. kompilowanie
D. wdrażanie
Tłumaczenie kodu źródłowego na zrozumiały dla komputera kod maszynowy nazywa się kompilowaniem - wykonuje je kompilator, tworząc plik wynikowy. Dlatego ta czynność to kompilowanie.

Pytanie 16

Który zapis znacznika hr jest poprawny zgodnie z walidacją HTML5?

A.
<hr>
B.
</ hr>
C.
</hr?>
D.
</ hr />
<hr> to element PUSTY (void), więc poprawny zapis to po prostu <hr> - bez znacznika zamykającego i bez ukośnika (w HTML5 <hr/> jest zbędny). Dlatego poprawny jest <hr>.

Pytanie 17

W przedstawionej definicji typu wyliczeniowego w języku C++ enumerator CZWARTEK będzie miał wartość równą

Ilustracja do pytania
A. napisowi "CZWARTEK"
B. napisowi 'CZWARTEK'
C. liczbie 1
D. liczbie 4
W języku C++ typ wyliczeniowy (enum) pozwala na definiowanie grupy nazwanych stałych całkowitych. W przedstawionej definicji enum dni {PONIEDZIAŁEK = 1, WTOREK, ŚRODA, CZWARTEK, PIĄTEK, SOBOTA, NIEDZIELA}; inicjalizacja PONIEDZIAŁEK na 1 powoduje, że kolejne wyliczane wartości są automatycznie zwiększane o 1. Oznacza to, że wartość dla WTOREK wynosi 2, ŚRODA to 3, a CZWARTEK automatycznie staje się równy 4. Takie podejście jest powszechnie stosowane w programowaniu do reprezentowania dyskretnych zestawów wartości, co ułatwia interpretację kodu i minimalizuje ryzyko błędów. W praktyce typy wyliczeniowe są używane do przechowywania dni tygodnia, stanów maszyn oraz innych uporządkowanych kolekcji. Są zgodne ze standardem C++ i odgrywają istotną rolę w tworzeniu czytelnego i efektywnego kodu. Ich zaletą jest możliwość łatwej manipulacji wartościami oraz zwiększenie czytelności kodu dzięki użyciu przyjaznych nazw zamiast surowych wartości liczbowych.

Pytanie 18

Dla strony internetowej stworzono styl, który będzie stosowany tylko do wybranych znaczników, takich jak niektóre nagłówki oraz kilka akapitów. W tej sytuacji, aby przypisać styl do konkretnych znaczników, najodpowiedniejsze będzie użycie

Ilustracja do pytania
A. klasy
B. pseudoklasy
C. identyfikatora
D. selektora akapitu
Pseudoklasy w CSS są używane do stylizowania elementów w określonym stanie, np. :hover dla zmiany stylu po najechaniu myszą. Nie są odpowiednie do przypisywania unikalnych stylów do konkretnych elementów. Identyfikator w CSS, oznaczany przez #, jest używany do stylizowania jednego unikalnego elementu na stronie. Jego użycie jest ograniczone do jednego elementu, co jest zgodne z zasadą unikalności identyfikatorów w dokumencie HTML. Nie nadaje się do sytuacji, gdy ten sam styl ma być stosowany do wielu elementów, ponieważ zmuszałoby to do definiowania i przypisywania wielu unikalnych identyfikatorów do każdego z nich, co jest przeciwieństwem DRY (Don't Repeat Yourself). Selektor akapitu bezpośrednio odnosi się do wszystkich elementów danego typu, np. p dla wszystkich akapitów. Nie jest on elastyczny, gdy chcemy zastosować styl tylko do niektórych elementów danego typu. Klasy oferują większą elastyczność w zarządzaniu stylami wielu elementów, ponieważ mogą być stosowane do różnych typów elementów w różnych miejscach dokumentu HTML. Ponadto, klasy są bardziej czytelne i ułatwiają utrzymanie kodu, co jest zgodne z najlepszymi praktykami w programowaniu front-endowym. Użycie klas wspiera również lepszą strukturę i modularność kodu CSS, co jest istotne w kontekście pracy zespołowej oraz skalowalności projektu.

Pytanie 19

Jaką funkcję agregującą można zastosować, aby uzyskać ilość rekordów?

A. SUM
B. AVG
C. COUNT
D. NUMBER
Funkcja agregująca COUNT jest używana w bazach danych do zwracania liczby rekordów spełniających określone kryteria. Jest to jedna z podstawowych funkcji agregujących, która pozwala na szybkie uzyskanie informacji o objętości danych w tabeli. Na przykład, w zapytaniu SQL, które ma na celu policzenie liczby wszystkich klientów w tabeli "klienci", możemy użyć: SELECT COUNT(*) FROM klienci. Zwróci to całkowitą liczbę rekordów. Funkcja COUNT może być również używana z warunkami, co pozwala na bardziej zaawansowane analizy, takie jak: SELECT COUNT(*) FROM klienci WHERE kraj = 'Polska', co policzy tylko tych klientów, którzy są z Polski. W praktyce, COUNT jest nieoceniony w raportowaniu i analizie danych, umożliwiając analitykom i programistom szybkie zrozumienie struktury danych. Dobra praktyka to zawsze stosować COUNT w kontekście grupowania danych przy użyciu klauzuli GROUP BY, co pozwala na uzyskanie liczby rekordów w poszczególnych grupach.

Pytanie 20

Dla jakiej wartości zmiennej x instrukcja warunkowa w JavaScript jest spełniona?

if ((x < -5) || (x > 2))
    x++;
A. -4
B. -1
C. 3
D. 2
W danym przykładzie mamy do czynienia z instrukcją warunkową w języku JavaScript, która sprawdza, czy zmienna x spełnia jedno z dwóch warunków: x jest mniejsze od -5 lub x jest większe od 2. Operator logiczny OR (||) oznacza, że wystarczy spełnienie jednego z tych warunków, aby kod wewnętrzny został wykonany. Dla wartości x równej 3, warunek (x > 2) jest spełniony, ponieważ 3 jest większe od 2. W rezultacie instrukcja x++ zostanie wykonana, co oznacza inkrementację zmiennej x, czyli zwiększenie jej wartości o 1. Jest to przykład typowego zastosowania operatorów logicznych w programowaniu do kontroli przepływu programu. W praktyce umiejętność stosowania takich instrukcji jest kluczowa w tworzeniu kodu zdolnego do dynamicznej reakcji na różne warunki wejściowe. Ponadto, użycie operatora inkrementacji jest zgodne z najlepszymi praktykami w optymalizacji kodu, gdyż jest to szybki i efektywny sposób na modyfikację wartości liczbowych.

Pytanie 21

Który operator w PHP wyznacza resztę z dzielenia?

A.
@
B.
&
C.
%
D.
#
Resztę z dzielenia (modulo) wyznacza w PHP operator %, np. 7 % 3 daje 1, a 10 % 2 daje 0. To bardzo praktyczny operator: $n % 2 == 0 sprawdza parzystość, a modulo przydaje się też do „zawijania” indeksów czy cykli. Zapamiętaj: % pyta „ile zostaje po podziale”, a nie „ile razy się mieści”.

Pytanie 22

Poprawny zapis znacznika , za pomocą którego można umieścić na stronie internetowej obraz rys.jpg przeskalowany do szerokości 120 px i wysokości 80 px z tekstem alternatywnym "krajobraz" to

A. <img href="rys.jpg" height="120px" width="80px" info="krajobraz">
B. <img src="rys.jpg" width="120px" height="80px" alt="krajobraz">
C. <img src="rys.jpg" height="120px" width="80px" info="krajobraz">
D. <img image="rys.jpg" width="120px" height="80px" alt="krajobraz">
Odpowiedź <img src="rys.jpg" width="120px" height="80px" alt="krajobraz"> jest na pewno dobra! Używasz fajnego atrybutu 'src' do wskazania, skąd bierzesz obrazek, co jest super ważne. Atrybuty 'width' i 'height' też są dobrze ustawione, bo określają, jak duży ma być obrazek na stronie. To naprawdę przydaje się, zwłaszcza jak robimy responsywne strony. A ten 'alt', to świetny pomysł – daje tekst alternatywny, co bardzo pomaga osobom, które korzystają z czytników ekranu. Bez tego mogą nie wiedzieć, co jest na obrazku, a to jest spoko, bo dba o dostępność. Co do pikseli, używasz ich standardowo, ale pomyśl, że w CSS można też iść w procenty czy jednostki względne, żeby było jeszcze elastyczniej. W sumie, gdybyś chciał, mógłbyś bawić się CSS-em do stylizacji obrazów tła, co też sprawia, że wszystko lepiej się dopasowuje do różnych ekranów.

Pytanie 23

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

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

Pytanie 24

Które wyrażenie w C++ sprawdza, czy liczba jest TRZYCYFROWĄ wartością PARZYSTĄ?

A.
liczba % 2 == 0 && liczba > 99 && liczba < 999
B.
liczba % 2 == 0 && (liczba > 99 || liczba < 999)
C.
liczba % 2 == 0 || liczba > 99 || liczba < 999
D.
liczba % 2 == 0 || (liczba > 99 && liczba < 999)
Pozostałe zapisy źle łączą warunki. || wystarczyłoby spełnić jeden z nich, więc przeszłaby też liczba jednocyfrowa parzysta. Warunek „liczba > 99 || liczba < 999” jest prawdziwy dla niemal każdej liczby. Trzycyfrową parzystą opisuje liczba % 2 == 0 && liczba > 99 && liczba < 999.

Pytanie 25

W HTML atrybut alt w tagu img służy do określenia

A. tekstu, który pojawi się, gdy obrazek nie może być załadowany
B. napisu, który będzie widoczny pod obrazem
C. właściwości grafiki, takie jak rozmiar, ramka, wyrównanie
D. lokalizacji i nazwy pliku źródłowego obrazu
Odpowiedź, która wskazuje, że atrybut alt znacznika img w języku HTML definiuje tekst, który będzie wyświetlony, jeśli grafika nie może być poprawnie załadowana, jest całkowicie poprawna. Atrybut alt jest kluczowym elementem dostępności w sieci, ponieważ dostarcza użytkownikom alternatywne informacje o zawartości obrazu, co jest szczególnie ważne dla osób korzystających z czytników ekranu. Na przykład, jeśli zdjęcie w artykule nie jest dostępne z powodu problemów z łączem internetowym, atrybut alt zapewnia kontekst, dzięki czemu użytkownik jest informowany o tym, co miało być przedstawione. Dobre praktyki zalecają, aby tekst w atrybucie alt był zwięzły, ale jednocześnie dostarczał wystarczających informacji o obrazie. Warto również zauważyć, że stosowanie atrybutu alt wspiera SEO (optymalizację pod kątem wyszukiwarek), ponieważ wyszukiwarki mogą używać tych informacji do indeksowania treści. Przykład: <img src='example.jpg' alt='Zdjęcie pięknego krajobrazu górskiego'>.

Pytanie 26

Przedstawiony kod źródłowy ma na celu zaprezentowanie

$liczba = 1;
while ($liczba != 0)
{
    $liczba = rand(0,100);
    echo $liczba;
}
A. kolejnych liczb od 1 do 100
B. liczb wprowadzonych z klawiatury tak długo, aż nie zostanie podana wartość 0
C. losowych liczb od 0 do 100 do momentu, aż nie wylosowana zostanie liczba 0
D. wylosowanych liczb od 1 do 99
Kod źródłowy przedstawia pętlę while, która generuje losowe liczby od 0 do 100 przy użyciu funkcji rand(0,100). Proces trwa tak długo, jak wygenerowana liczba jest różna od zera. W przypadku wylosowania zera pętla zostaje zakończona. Funkcja rand jest często stosowana w programowaniu do generowania losowych wartości, co może być przydatne w wielu sytuacjach, takich jak symulacje, gry komputerowe czy testowanie algorytmów. Generowanie liczb losowych odgrywa kluczową rolę w kryptografii, gdzie losowość jest istotna dla bezpieczeństwa. Jednak w przypadku zastosowań wymagających wysokiej jakości losowości, takich jak aplikacje kryptograficzne, zaleca się użycie bardziej zaawansowanych generatorów liczb losowych, na przykład funkcji mt_rand w PHP, która oferuje lepsze właściwości statystyczne. Przy wyborze generatora ważne jest, aby zwrócić uwagę na jego właściwości, takie jak okres cyklu, równomierność rozkładu i odporność na przewidywalność, co wpływa na jakość i bezpieczeństwo generowanych danych.

Pytanie 27

Co opisuje polecenie

CREATE TABLE dane (kolumna INTEGER(3));
?
A. tabelę z jedną kolumną zawierającą 3-elementowe tablice
B. tabelę dane z JEDNĄ kolumną liczb całkowitych
C. tabelę z kolumnami kolumna1, kolumna2, kolumna3
D. tabelę z TRZEMA kolumnami liczb całkowitych
INTEGER przechowuje pojedynczą liczbę, a nie „3-elementowe tablice”. W definicji jest tylko jedna kolumna (kolumna) - nie ma „kolumna1, kolumna2, kolumna3”. (3) to parametr wyświetlania, a nie liczba KOLUMN. Powstaje tabela z jedną kolumną typu całkowitego.

Pytanie 28

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 numer, wartosc FROM faktury;
B. SELECT numer, wartosc FROM faktury WHERE data = CURRENT_DATE();
C. SELECT * FROM faktury WHERE data = CURRENT_DATE();
D. SELECT * 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 29

W kodzie HTML przypisano pewne znaczniki do klasy o nazwie "nomargin". Jak można przeprowadzić operacje na tych znacznikach w języku JavaScript, korzystając z odpowiedniej funkcji?

A. getElement("nomargin")
B. getElementById("nomargin")
C. getElementsByTagName("nomargin")
D. getElementsByClassName("nomargin")
Wybór odpowiedzi 'getElementsByClassName("nomargin")' jest właściwy, ponieważ ta funkcja umożliwia selekcję wszystkich elementów HTML, które mają przypisaną daną klasę. W tym przypadku klasa to 'nomargin'. Funkcja ta zwraca kolekcję elementów, co jest bardzo przydatne w manipulacji DOM, gdyż pozwala na wykonywanie operacji na wielu elementach jednocześnie. Przykładowo, jeśli chcemy usunąć marginesy z wszystkich elementów, które mają tę klasę, możemy wykorzystać zwróconą kolekcję do iteracji i zastosować odpowiednie style CSS. Kod mógłby wyglądać tak: var elements = document.getElementsByClassName('nomargin'); for (var i = 0; i < elements.length; i++) { elements[i].style.margin = '0'; }. Standardy JavaScript oraz DOM odnoszą się do używania tej funkcji jako efektywnej metody nawiązywania interakcji z elementami na stronie. Warto także pamiętać, że getElementsByClassName zwraca „żywą” kolekcję, co oznacza, że zmiany w DOM będą natychmiast widoczne w tej kolekcji.

Pytanie 30

Którą wartość zwróci funkcja zapisana w języku C++, jeżeli jej parametrem wejściowym jest tablica wypełniona w następujący sposób: tablica[6] = {3, 4, 2, 4, 10, 0};?

int fun1(int tab[]) {
    int wynik = 0;
    for (int i = 0; i < 6; i++)
        wynik += tab[i];
    return wynik;
}
A. 960
B. 10
C. 0
D. 23
Gratulacje, Twoja odpowiedź jest poprawna. W języku C++ funkcja zwraca sumę wszystkich elementów w tablicy. W podanym pytaniu mamy tablicę z sześcioma elementami, którymi są liczby: 3, 4, 2, 4, 10, 0. Dodając te liczby otrzymujemy 23, co jest poprawną odpowiedzią. To jest typowy scenariusz, kiedy potrzebujemy obliczyć sumę wszystkich elementów w tablicy. Na przykład, możemy mieć program, który oblicza średnią wartość z zestawu danych. W takim przypadku najpierw musimy zsumować wszystkie elementy, a następnie podzielić przez ich liczbę. Pamiętaj, że w języku C++ tablice indeksowane są od zera, co oznacza, że pierwszy element tablicy ma indeks 0, a ostatni element ma indeks o jeden mniejszy niż rozmiar tablicy. Jest to powszechny standard w programowaniu i jest istotny do zrozumienia, jak działają tablice.

Pytanie 31

Którym słowem kluczowym połączyć wyniki dwóch zapytań SELECT w jeden zbiór?

A.
JOIN
B.
DISTINCT
C.
UNION
D.
AS
Słowo UNION łączy wyniki dwóch (lub więcej) zapytań SELECT w jeden zbiór wierszy - pod warunkiem, że mają zgodną liczbę i typy kolumn. Domyślnie usuwa też duplikaty. Dlatego do scalenia wyników służy UNION.

Pytanie 32

Wskaż komendę, która dokonuje aktualizacji danych w tabeli?

A. SELECT
B. UPDATE
C. CREATE
D. ALTER
Odpowiedź "UPDATE" jest jak najbardziej trafna. To takie podstawowe polecenie SQL, które pozwala na aktualizowanie już istniejących danych w tabeli. Możesz dzięki niemu zmienić jeden albo kilka wierszy w tabeli, w zależności od tego, jakie masz kryteria. Na przykład, jeśli mamy tabelę "pracownicy" i chcemy zwiększyć pensję programistów do 6000 zł, wystarczy użyć polecenia: `UPDATE pracownicy SET pensja = 6000 WHERE stanowisko = 'programista';`. To polecenie działa w taki sposób, że modyfikuje dane, ale przy tym dba o integralność, co jest bardzo ważne w pracy z bazami danych. Warto zawsze dodawać klauzulę WHERE, żeby zmiany dotyczyły tylko wybranych wierszy – to pomoże uniknąć sytuacji, w której przypadkiem zmienisz wszystko. Umiejętność korzystania z UPDATE jest naprawdę istotna, jeżeli chcesz efektywnie zarządzać swoimi danymi.

Pytanie 33

Które dane zostaną wybrane w wyniku działania kwerendy na przedstawionych rekordach?

SELECT id FROM samochody WHERE rocznik LIKE "2%4";
idmarkamodelrocznik
1FiatPunto2016
2FiatPunto2002
3FiatPunto2007
4OpelCorsa2016
5OpelAstra2003
6ToyotaCorolla2016
7ToyotaCorolla2014
8ToyotaYaris2004
A. Brak danych.
B. Wszystkie identyfikatory.
C. Tylko identyfikator równy 8.
D. Identyfikatory równe 7 oraz 8.
W analizowanej kwerendzie zastosowanie operatora LIKE z wzorcem '2%4' skutkuje koniecznością zrozumienia, jak działają operatory porównania w SQL. Odpowiedzi sugerujące puste dane lub zwracające wszystkie id są błędne, ponieważ nie uwzględniają specyfiki zastosowanego wzorca. Mówiąc o pustych danych, zakłada się, że żaden z rekordów nie spełniałby kryteriów, co jest fałszywe, gdyż odpowiednie rekordy istnieją. Z kolei odpowiedź dotycząca wszystkich id ignoruje kluczową funkcję operatora LIKE, który pozwala na filtrowanie danych na podstawie rozpoznawania wzorców, a nie zwracanie całości. Odpowiedzi wskazujące na konkretne id, takie jak 8 lub kombinacje 7 i 8, nie uwzględniają logicznego rozumienia, że kwerenda zwraca wyniki spełniające określone kryteria. Ważne jest, aby pamiętać, że w analizach SQL kluczowe jest zrozumienie, jak operatory wpływają na wyniki, co może być łatwo pominięte w przypadku niewłaściwej interpretacji syntaktycznej zapytania.

Pytanie 34

Kod JavaScript uruchomiony w wyniku kliknięcia przycisku ma na celu <img id="i1" src="obraz1.gif"> <button onclick="document.getElementById('i1').src='obraz2.gif'"> test</button>

A. ukryć obraz2.gif
B. zamienić obraz1.gif na obraz2.gif
C. zmienić styl obrazu o id równym i1
D. wyświetlić obraz2.gif obok obraz1.gif
Odpowiedź 'zamienić obraz1.gif na obraz2.gif' jest poprawna, ponieważ kod JavaScript w przycisku jest odpowiedzialny za zmianę źródła obrazu. W momencie kliknięcia przycisku, funkcja `document.getElementById('i1').src='obraz2.gif'` przypisuje nowe źródło do elementu o identyfikatorze 'i1', co efektywnie powoduje wyświetlenie obraz2.gif zamiast obraz1.gif. Tego typu manipulacje DOM są powszechnie stosowane w interaktywnych aplikacjach webowych, gdzie użytkownik wchodzi w interakcję z różnymi elementami. Przykładem zastosowania tej techniki może być tworzenie galerii zdjęć, gdzie użytkownik klika na miniaturkę, a główny obrazek zostaje zmieniony na wybrane zdjęcie. Warto również zauważyć, że ta zmiana jest realizowana bez potrzeby reładowania strony, co znacząco poprawia doświadczenie użytkownika. Takie podejście jest zgodne z dobrymi praktykami w zakresie tworzenia dynamicznych interfejsów użytkownika.

Pytanie 35

Kolor Chartreuse przedstawiony w formie heksadecymalnej jako #7FFF00 odpowiada wartości RGB wynoszącej

A. rgb(64, 255, 0)
B. rgb(127, 255, 0)
C. rgb(128, 255, 0)
D. rgb(192, 255, 0)
Odpowiedź rgb(127, 255, 0) jest poprawna, ponieważ odpowiada wartościom RGB z koloru Chartreuse zapisanego w postaci heksadecymalnej #7FFF00. W systemie heksadecymalnym, pierwsze dwa znaki (7F) odpowiadają wartości czerwonej (R), drugie dwa znaki (FF) wartości zielonej (G), a ostatnie dwa znaki (00) wartości niebieskiej (B). Przekształcając te wartości na system dziesiętny, 7F w heksadecymalnym to 127 w dziesiętnym, FF to 255, a 00 to 0. Użycie tego koloru w projektach graficznych, web designie czy w aplikacjach mobilnych jest szerokie, zwłaszcza w kontekście tworzenia interfejsów użytkownika, gdzie Chartreuse może być wykorzystany jako kolor akcentujący, przyciągający uwagę. Dobrą praktyką jest stosowanie kolorów o wysokim kontraście dla elementów interaktywnych, co sprawia, że korzystanie z tak żywego koloru jak Chartreuse może poprawić użyteczność oraz estetykę projektu. Warto również zaznaczyć, że znajomość konwersji kolorów między różnymi modelami (HEXA, RGB, CMYK) jest kluczowa dla każdego projektanta wizualnego, z uwagi na różne zastosowania w druku i w mediach cyfrowych.

Pytanie 36

Jaki minimalny kontrast tekstu (standardowego rozmiaru) do tła wymaga WCAG 2.x na poziomie AA?

A. 1,5 : 1
B. 2,0 : 1
C. 2,5 : 1
D. 4,5 : 1
Wytyczne WCAG 2.x na poziomie AA wymagają dla tekstu standardowego rozmiaru minimalnego kontrastu 4,5:1 między kolorem tekstu a tłem - to zapewnia czytelność m.in. osobom słabowidzącym. Dla dużego tekstu próg jest niższy (3:1). Dlatego minimalny kontrast AA to 4,5:1.

Pytanie 37

Efekt AutoDuck w obróbce dźwięku jest stosowany do

A. ocieplenia głosu i dźwięków pochodzących z tła.
B. wyrównania głośności całej ścieżki dźwiękowej.
C. eliminacji szumów pochodzących z dźwięków w tle.
D. ściszenia dźwięku w tle, gdy pojawia się dźwięk pierwszoplanowy.
Efekt AutoDuck dokładnie robi to, co opisuje poprawna odpowiedź: automatycznie ścisza dźwięk w tle (np. muzykę), gdy pojawia się dźwięk pierwszoplanowy, zwykle głos lektora lub prowadzącego. W praktyce wygląda to tak, że masz dwie ścieżki: na jednej mówiony komentarz, na drugiej muzykę w tle. AutoDuck „podgląda” poziom głośności ścieżki z głosem i gdy wykryje, że ktoś zaczyna mówić, automatycznie obniża poziom głośności ścieżki z muzyką o zadaną liczbę decybeli. Kiedy mówienie się kończy, muzyka wraca płynnie do poprzedniego poziomu. To jest klasyczny przykład tzw. duckingu, bardzo często stosowany w radiu, podcastach, vlogach, prezentacjach wideo, a nawet w prostych materiałach szkoleniowych. Z mojego doświadczenia to jedna z tych funkcji, które naprawdę oszczędzają czas – zamiast ręcznie rysować obwiednię głośności, ustawiasz próg zadziałania, czas narastania i opadania (attack/release) oraz głębokość tłumienia. Dobre praktyki mówią, żeby nie przesadzać z tłumieniem tła – zwykle wystarcza w okolicach 10–18 dB, tak żeby głos był czytelny, ale muzyka nadal była słyszalna. Ważne jest też ustawienie odpowiednio długiego „release”, żeby muzyka nie „podskakiwała” nerwowo pomiędzy pauzami w mowie. W narzędziach typu Audacity, Adobe Audition czy Reaper AutoDuck (lub sidechain ducking) jest standardowym narzędziem w pracy z multimediami na potrzeby internetu: spoty reklamowe, intro do kanałów YouTube, kursy e-learningowe – wszędzie tam, gdzie chcesz, żeby głos był zawsze na pierwszym planie, a tło samo się grzecznie cofa, gdy ktoś coś mówi.

Pytanie 38

W dokumentacji języka PHP znajduje się informacja dotycząca jednej z jego funkcji:
„Warning. This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0.”.
Zgodnie z tą informacją użycie tej funkcji jest:

A. niezalecane w wersji PHP 5.5.0 i dostępne od wersji 7.0.0.
B. przestarzałe od wersji PHP 5.5.0 i całkowicie usunięte w wersji 7.0.0.
C. niemożliwe w wersjach PHP 5.5.0 lub starszych i dostępne dopiero od wersji 7.0.0.
D. dostępne w wersjach PHP od 5.5.0 do 7.0.0 (włącznie) i niedostępne w innych wersjach.
Komunikat z dokumentacji PHP „Warning. This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0.” oznacza dwa różne stany w cyklu życia funkcji/rozszerzenia. „Deprecated” od wersji 5.5.0 znaczy, że funkcja nadal działa, ale jej użycie jest oficjalnie niezalecane. Silnik PHP może generować ostrzeżenia (E_DEPRECATED), a autorzy języka jasno sugerują, żeby migrować kod na nowsze, wspierane rozwiązania. „Removed w PHP 7.0.0” oznacza, że od tej wersji funkcja po prostu nie istnieje – próba jej użycia skończy się błędem typu „undefined function” lub „undefined extension”. Z mojego doświadczenia wynika, że taki status to sygnał alarmowy dla programisty: w nowych projektach nie używamy funkcji oznaczonych jako deprecated, a w istniejących aplikacjach planujemy refaktoryzację, zanim wejdziemy na wyższą wersję PHP. Dobrym przykładem jest stare rozszerzenie mysql_* – od PHP 5.5 było oznaczone jako przestarzałe, a w PHP 7 zostało usunięte i trzeba było przejść na mysqli lub PDO. W praktyce, gdy widzisz w dokumentacji „deprecated od wersji X”, powinieneś: sprawdzić zalecaną alternatywę, włączyć raportowanie błędów i ostrzeżeń na środowisku developerskim, usunąć stopniowo wszystkie wywołania danej funkcji. Branżową dobrą praktyką jest też testowanie aplikacji na docelowej wersji PHP przed aktualizacją produkcji, żeby właśnie takie usunięte funkcje wyłapać automatycznie w logach lub podczas testów jednostkowych. Twoja odpowiedź dokładnie to odczytała: od 5.5 funkcja jest przestarzała (deprecated), a w 7.0 całkowicie znika z języka.

Pytanie 39

Funkcję Clean Project środowiska IDE stosuje się do

A. usuwania całego projektu.
B. usuwania wyników kompilacji projektu.
C. kompilowania projektu, gdy pliki źródłowe zostały zmienione.
D. debugowania skompilowanego i uruchomionego projektu.
Poprawnie – funkcja „Clean Project” w typowym IDE służy właśnie do usuwania wyników kompilacji, czyli wszystkich plików pośrednich i końcowych wygenerowanych podczas builda. Chodzi o katalogi typu bin, obj, target, build, różne *.class, *.o, *.exe tworzone automatycznie przez kompilator i linker. IDE po wywołaniu „Clean” nie rusza Twoich plików źródłowych, projektów, konfiguracji czy bibliotek w repozytorium – usuwa tylko artefakty budowania. Po co to się robi? Głównie po to, żeby wymusić tzw. „czystą kompilację” (clean build). Przydaje się to, gdy: zmieniłeś konfigurację projektu lub środowiska, dodałeś/zmieniłeś biblioteki, zmieniła się wersja kompilatora lub pluginów, a projekt zaczyna zachowywać się dziwnie, mimo że kod wygląda OK. Z mojego doświadczenia, w dużych projektach webowych (np. aplikacje w PHP z kompilowanym frontendem, czy Java/JavaScript z bundlerami) „Clean” pomaga pozbyć się starych, zcache’owanych plików, które potrafią powodować bardzo mylące błędy: IDE widzi jedno, a uruchamia się coś innego. Dobrą praktyką jest robienie pełnego „Clean & Build” przed wypuszczeniem wersji na produkcję albo przed puszczeniem testów integracyjnych, żeby mieć pewność, że wszystko zostało zbudowane od zera na podstawie aktualnego kodu. W wielu narzędziach CI/CD analogiczną rolę spełnia usuwanie katalogu build/ lub target/ przed kompilacją. W skrócie: Clean nie jest operacją destrukcyjną dla projektu, tylko porządkuje środowisko kompilacji i usuwa „śmieci” po poprzednich buildach, co wpisuje się w standardowe dobre praktyki pracy z kodem.

Pytanie 40

W której notacji diagramów ER został zapisany model związków encji przedstawiony na ilustracji?

Ilustracja do pytania
A. Bachmana.
B. Min-Max.
C. Martina.
D. Chena.
Prawidłowa odpowiedź to notacja Martina. Na diagramie widać bardzo charakterystyczne cechy tej notacji: encje są przedstawione jako prostokąty z nagłówkiem wypełnionym innym kolorem (tu: ciemnoszary pasek z nazwą encji KLIENT, ZAKUP, TOWAR), a pod spodem w formie tabelki wypisane są atrybuty, jeden pod drugim. Klucz główny jest po prostu pierwszym atrybutem na liście (ID), bez dodatkowych ozdobników typu podkreślenie czy elipsa, co jest typowe właśnie dla podejścia Martina, zorientowanego na projektowanie relacyjnej bazy danych. Związki między encjami są rysowane liniami z tzw. crow’s foot ("kurzą łapką") po stronie encji wielokrotnej, a po stronie encji pojedynczej mamy prostą kreskę. Na ilustracji dokładnie to widać: ZAKUP jest encją pośredniczącą, a relacje KLIENT–ZAKUP i TOWAR–ZAKUP mają klasyczną symbolikę notacji Martina. W praktyce, w wielu narzędziach CASE (np. w starszych wersjach ERwin, PowerDesigner, Visio z szablonem Database Model Diagram) domyślny styl ERD jest właśnie bardzo zbliżony do notacji Martina. Taki diagram jest od razu „bliski” strukturze fizycznej tabel w SQL, więc łatwo go przełożyć na CREATE TABLE, klucze obce i indeksy. Z mojego doświadczenia w firmach produkcyjnych i w małych software house’ach notacja Martina jest często używana przy projektach, gdzie liczy się szybkie przejście z modelu koncepcyjnego do modelu logicznego i fizycznego, bez zbyt rozbudowanej symboliki teoretycznych ER-ów. Dlatego rozpoznanie tej notacji po wyglądzie encji-tabelek i crow’s foot jest bardzo praktyczną umiejętnością przy pracy z bazami danych.