Ćwiczenia, wprowadzające w świat tworzenia relacyjnego modelu reprezentującego rzeczywistość, umożliwiają naukę tworzenia kwerendwybierających informacje oraz zapytań parametrycznych – przeprowadzimy je na przykładzie bazy danych dziennika szkolnego.
Pliki zawierające rekordy pochodzą z zadania maturalnego z informatyki rozszerzonej.
Zadanie zostało opracowane przez Centralną Komisję Egzaminacyjną i pojawiło się na egzaminie maturalnym z informatyki, w maju 2010 r. (poziom rozszerzony, cz. II). Cały arkusz można znaleźć na stronie internetowej CKE.
oceny.txt – z danymi na temat uzyskanych ocen: IDucznia, Ocena, Data, IDprzedmiotu,
przedmioty.txt – z danymi o realizowanych w szkole przedmiotach: IDprzedmiotu, NazwaPrzedmiotu, Nazwisko_naucz, Imie_naucz.
Dane zgromadzone w plikach będą potrzebne do realizacji tego e‑materiału.
RJUy0Dtega3gS
Import danych z plików tekstowych
Przed dokonaniem analizy modelu relacyjnego na przykładzie udostępnionej bazy dziennika szkolnego należy przenieść dane z plików tekstowych do tabel programu MS Access. Proces ten omówiono szczegółowo w filmie:
RbfcqSsZoxqVe
Oprócz przeniesienia rekordów do tabel dokonaliśmy także oznaczenia logicznych powiązań pomiędzy atrybutami obiektów. Ostatecznie struktura bazy danych prezentuje się następująco w widoku relacji:
Rn7QKdhmWdUgE
Ćwiczenie 1
Przedstawmy także import danych z plików tekstowych oraz sposób definiowania relacji w programie LibreOffice Base – w przypadku użytkowania tego narzędzia, kliknij tutaj:
Importu tabeli Uczniowie należy dokonać poprzez otwarcie pliku tekstowego uczniowie.txt w narzędziu LibreOffice Calc, nie zmieniając domyślnych opcji importu pliku tekstowego. Upewnij się jedynie, że w opcjach wyboru separatora zaznaczono pole przy średniku:
R1ISBsFhqiEs1
Po otwarciu pliku w arkuszu kalkulacyjnym z menu Edycja, wybieramy opcję Zaznacz | Zaznacz obszar danych lub naciskamy kombinację klawiszy Ctrl + *. W ten sposób zaznaczymy wszystkie dane znajdujące się w arkuszu:
R1OzbIdqOWIUd
Następnie kopiujemy zaznaczony obszar danych za pomocą kombinacji klawiszy Ctrl + C, po czym przechodzimy już do narzędzia LibreOffice Base. Upewnijmy się przy tym, że w oknie Baza danych aktywną zakładką jest zakładka Tabele:
R1W99DXkRf3qL
Teraz możemy wkleić informację ze schowka za pomocą kombinacji klawiszy Ctrl + V. Spowoduje to otwarcie kreatora Kopiuj tabelę. Poprawną konfigurację zatwierdzamy przyciskiem Dalej, po czym przenosimy wszystkie skopiowane kolumny do nowo tworzonej tabeli:
RiBbitm8HlrJo
W trzecim kroku kreatora zawsze należy dobrać odpowiednie typy danych do atrybutów. Przykładowa konfiguracja:
IDucznia – typ danych Integer [ INTEGER ], czyli wartość liczbowa całkowita dla klucza głównego,
nazwisko – typ danych Tekst [ VARCHAR ],
imie – typ danych Tekst [ VARCHAR ],
ulica – typ danych Tekst [ VARCHAR ],
dom – typ danych Tekst [ VARCHAR ],
IDklasy – typ danych Tekst [ VARCHAR ], ponieważ mimo mylącej nazwy nie jest to klucz obcy, tylko tekstowa nazwa klasy, np. 1a, 1b itd.
Pamiętajmy, by koniecznie ustanowić w tabeli klucz podstawowy – klikając prawym przyciskiem myszy na atrybucie IDucznia, zaznaczamy opcję Klucz główny:
R1INipYNgcWyS
Jak widać, spowodowało to dodanie małej ikonki klucza przy wskazanym atrybucie. Teraz możemy już zakończyć import tabeli, klikając przycisk Utwórz.
Analogicznie postępujemy dla dwóch pozostałych tabel, importując dane przy użyciu narzędzia LibreOffice Calc jako pośrednika w procesie przenoszenia plików tekstowych do bazy danych. Pamiętajmy, aby zawsze w pierwszym kroku kreatora importu zaznaczona była opcja Definicje i dane.
Typy danych dobieramy odpowiednio do przechowywanej wartości – w razie wątpliwości kieruj się opisem kolumn przedstawionym w filmie dotyczącym MS Access. Zwróć szczególną uwagę na pole Data w tabeli Oceny, które nie powinno mieć tekstowego typu danych, tylko DATA [ DATE ] oraz na klucze obce IDucznia i IDprzedmiotu, które są liczbami całkowitymi Integer [ INTEGER ].
Warto jeszcze zauważyć, że tabela Oceny nie zawiera atrybutu, który mógłby stać się kluczem głównym – w związku z tym pozwalamy kreatorowi dodać własny klucz podstawowy, np. o nazwie IDoceny:
R17t41EVUiVeE
W celu stworzenia relacji pomiędzy zaimportowanymi tabelami z menu wybieramy Narzędzia | Relacje, po czym dodajemy wszystkie trzy tabele do projektu relacji.
Ustanawiamy analogiczne do MS Access powiązania pomiędzy kluczami podstawowymi i obcymi:
Riagbq1SGzEvL
Zanim przygotujemy naszą pierwszą kwerendę wybierającą, przyjrzyjmy się najpierw temu modelowi danych – na ile skutecznie i dokładnie odwzorowuje on codzienne życie szkolnej społeczności.
Analiza istniejącego modelu danych
Na początek przypomnijmy definicję modelu danych – jest to integralny zbiór zasad opisujących stan reprezentowanych obiektów, ich zachowania oraz istniejące powiązania logiczne pomiędzy fragmentami symulowanego świata.
Proces tworzenia modelu reprezentującego konkretną rzeczywistość co do zasady przebiega w trzech teoretycznych etapach:
Projektowanie konceptualne – polega na wyodrębnieniu ze świata autonomicznych obiektów (instancji) posiadających własny zestaw atrybutów, który nazywamy klasą lub encją. W przypadku dziennika szkolnego obiektami są np. uczniowie, zaś atrybuty każdego takiego obiektu to m.in.: imię, nazwisko, adres zamieszkania.
Ciekawostka
Zwróćmy uwagę, że obiekty wyróżnione z opisywanej rzeczywistości mogą być zarówno rzeczywiste, czyli posiadające fizyczną reprezentację w świecie (obiekt reprezentujący ucznia szkoły), jak i abstrakcyjne (ocena w dzienniku, która jest z natury jedynie matematyczną informacją).
Projektowanie logiczne – do obiektów dających się wyróżnić w symulowanym świecie, które opisaliśmy w projektowaniu konceptualnym, dodajemy logiczne powiązania (relacje) występujące pomiędzy atrybutami. Dokonujemy tego przy użyciu specjalnych atrybutów, które nazywamy kluczami. W analizowanym tu modelu dziennika szkolnego przykładem logicznej relacji jest związek pomiędzy atrybutem obiektu uczeń o nazwie IDucznia (klucz podstawowyKlucz podstawowyklucz podstawowy) oraz atrybutem obiektu ocena o tej samej nazwie (klucz obcyKlucz obcyklucz obcy).
Projektowanie fizyczne – poprzednie dwa etapy pracy nad modelem nie uwzględniają decyzji technicznych związanych z implementacją modelu w konkretnym DBMSDatabase Management SystemDBMS. A zatem trzeci, finałowy etap budowy symulacji polega na określeniu przez projektanta nazw tabel i kolumn, przypisaniu atrybutom obiektów właściwych typów danych oraz wszelkich działaniach konfiguracyjnych, specyficznych dla wybranego systemu bazodanowego.
Wprawne i skuteczne modelowanie rzeczywistości w systemach bazodanowych to trudne zadanie, wymagające praktycznego doświadczenia. Dlatego też naukę modelowania baz danych w początkowym etapie najlepiej rozpocząć od analizy już istniejących przykładowych struktur, zamiast od syntezy w pełni kompletnej symulacji. Przyjrzyjmy się zatem udostępnionemu w zadaniu modelowi dziennika szkolnego:
RLUMrHTOUh7aW
Reasumując, w projektowaniu konceptualno‑logicznym dokonaliśmy analizy rzeczywistości szkolnej pod kątem istnienia:
dających się wyróżnić obiektów (tworząc rekordy, czyli wiersze w tabelach),
niezbędnych atrybutów tych obiektów (zestaw takich cech to klasa lub encja),
występujących powiązań logicznych (relacji) pomiędzy atrybutami obiektów (stosując klucze podstawowe oraz klucze obce).
Wspomniane działania prowadzą jednak zawsze do ostatniego etapu pracy, który nazywamy projektowaniem logicznym – jest to ogół działań specyficznych dla używanego przez projektanta DBMSDatabase Management SystemDBMS.
W przypadku MS Access należało dokonać operacji importu danych ze szczególną dbałością o poprawne określenie typów danych dla kolumn – tak, aby symulacja mogła wiernie reprezentować opisywaną rzeczywistość.
Przeprowadzona przez nas analiza ujawniła także istniejące w modelu tzw. anomalie – czyli okoliczności, w których może dojść do utraty spójności (integralności) danych. W takim wypadku przechowywane informacje nie będą już zgodne ze stanem faktycznym występującym w symulowanym świecie.
Przykładem anomalii jest sytuacja wystąpienia redundancji w tabeli Uczniowie – informacja o nazwie klasy (atrybut IDklasy) powtarza się w wielu wierszach. W związku z tym dokonanie modyfikacji wartości tego atrybutu okazało się działaniem obarczonym ryzykiem wystąpienia anomalii.
W praktyce anomalie najłatwiej wykryć w analizie modelu, dokonując operacji: wstawiania, modyfikowania oraz usuwania danych. Natomiast ogół działań projektowych, prowadzących do zapobiegania utracie integralności danych, to tzw. normalizacja modelu.
Kwerendy wybierające i parametryczne
Pora na utworzenie pierwszych kwerend, czyli napisanych w języku SQLSQLjęzyku SQLzapytań skierowanych do bazy danych, które zwracają wartości atrybutów w rekordach spełniających zadane kryteria.
Oczywiście kwerendy w bazach danych nie służą jedynie do wyszukiwania informacji, lecz także wstawiają, modyfikują oraz usuwają dane. Ponadto, mogą mieć wpływ na elementy struktury modelu (konfiguracja tabel, kolumn, typów danych, kluczy podstawowych i obcych).
Swoją przygodę z bazami danych zdecydowana większość osób rozpoczyna jednak od poznania dwóch klasycznych rodzajów zapytań:
kwerendy wybierające – zwracają informacje spełniające określone kryteria zdefiniowane w treści zapytania,
kwerendy parametryczne – działają identycznie jak wybierające, z tą jednak różnicą, że poszukiwaną wartość kryterium można wprowadzić dopiero po uruchomieniu zapytania.
Ciekawostka
Słowo parametr oznacza wprowadzoną przez nas wartość argumentu – tak jak w funkcjach w matematyce w zapisie: f(x) parametrem funkcji jest x. A zatem zwracana wartość funkcji zależy wprost od podanego parametru, tak samo jak wyniki zwrócone przez kwerendę parametryczną zależą od podanego kryterium.
Słownik
Database Management System
Database Management System
system zarządzania bazą danych, czyli oprogramowanie umożliwiające tworzenie, modyfikację i zarządzanie bazami danych; przykładowe współczesne systemy DBMS to m.in.: MySQL, MariaDB, PostgreSQL, FireBird, MS SQL, MS Access, LibreOffice Base
klucz obcy
klucz obcy
(ang. foreign key) pole tabeli, które tworzy relację (związek) z inną tabelą, czyli przechowuje wartości klucza głównego z innej tabeli; typ danych klucza obcego musi być taki sam jak typ danych klucza głównego
klucz podstawowy
klucz podstawowy
zwany też kluczem głównym (ang. primary key) – jedno lub więcej pól (atrybutów), których wartość jednoznacznie identyfikuje każdy rekord w tabeli; taka cecha klucza nazywana jest unikatowością (unikalnością); klucz podstawowy służy do powiązania rekordów jednej tabeli z rekordami w innej tabeli
SQL
SQL
(od ang. Structured Query Language) – strukturalny język zapytań, który stanowi standard komunikacji ze współczesnymi, relacyjnymi bazami danych