Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Bazy danych

Słowa kluczowe: Integralność bazy MySQL Integralność referencyjna Klucz główny w SQL Klucz obcy w SQL REFERENCES w SQL Relacja jeden do wielu

Którą integralność opisuje cytowana definicja?

„… polega na wprowadzeniu i utrzymaniu powiązań pomiędzy tabelami. Związki te tworzy się przez umieszczenie kolumny pełniącej rolę klucza głównego tabeli w innej tabeli, co nadaje kolumnie funkcję klucza obcego.”

A. Encji
B. Semantyczną
C. Referencyjną
D. Statyczną

Pytanie z egzaminu CKE, styczeń 2021 (arkusz E.14-SG-21.01).

Odpowiedź referencyjną jest właściwa, bo definicja mówi dokładnie o integralności referencyjnej w relacyjnych bazach danych. Chodzi tu o pilnowanie poprawnych powiązań między tabelami za pomocą klucza głównego i klucza obcego. Przykładowo tabela Klienci może mieć kolumnę id_klienta jako klucz główny, a tabela Zamowienia może przechowywać id_klienta jako klucz obcy. Dzięki temu baza danych nie powinna pozwolić na dodanie zamówienia dla klienta, którego nie ma w tabeli Klienci. Moim zdaniem to jedna z najważniejszych zasad przy projektowaniu normalnej, porządnej bazy, bo chroni przed bałaganem w danych. W praktyce integralność referencyjna jest realizowana przez ograniczenia FOREIGN KEY, często razem z regułami ON DELETE i ON UPDATE, np. CASCADE, RESTRICT albo SET NULL. Dobra praktyka branżowa jest taka, żeby relacje projektować świadomie już na etapie modelu ERD, a nie dopiero wtedy, gdy aplikacja zaczyna zwracać dziwne wyniki. Integralność referencyjna pomaga utrzymać spójność danych, ułatwia pisanie zapytań SQL i zmniejsza ryzyko tak zwanych osieroconych rekordów, czyli takich wpisów, które odwołują się do nieistniejących danych.
W tym pytaniu łatwo pomylić różne rodzaje integralności, bo wszystkie dotyczą poprawności danych, ale każda pilnuje czegoś innego. Integralność encji odnosi się głównie do tego, żeby każdy rekord w tabeli był jednoznacznie identyfikowalny. W praktyce oznacza to stosowanie klucza głównego, który nie powinien mieć wartości NULL i powinien być unikalny. To ważna zasada, ale sama w sobie nie opisuje jeszcze powiązań między tabelami. Jeśli w definicji pojawia się przeniesienie klucza głównego jednej tabeli do innej tabeli jako klucza obcego, to jesteśmy już przy relacjach między tabelami, a nie tylko przy identyfikacji pojedynczych wierszy.

Integralność statyczna bywa rozumiana jako poprawność danych w danym momencie, wynikająca z ograniczeń, typów danych, zakresów wartości czy reguł walidacyjnych. Nie jest to jednak standardowe określenie relacji typu klucz główny - klucz obcy. Podobnie integralność semantyczna dotyczy sensu danych względem logiki biznesowej. Na przykład cena produktu nie powinna być ujemna, data zakończenia umowy nie powinna być wcześniejsza niż data rozpoczęcia, a PESEL powinien mieć właściwą długość i strukturę. To są reguły znaczeniowe, bardzo praktyczne, ale nie o to chodzi w cytowanej definicji.

Typowy błąd myślowy polega na tym, że ktoś widzi słowo integralność i wybiera odpowiedź, która brzmi ogólnie albo technicznie. W bazach danych trzeba jednak patrzeć na słowa kluczowe: tabela, klucz główny, klucz obcy, powiązanie. Taki zestaw prawie zawsze prowadzi do integralności referencyjnej. Z mojego doświadczenia, jeśli dobrze zrozumiesz ten mechanizm, łatwiej potem projektować relacje jeden-do-wielu, tworzyć diagramy ERD i pisać poprawne zapytania JOIN bez robienia przypadkowego chaosu w danych.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.