RELACYJNE BAZY DANYCH TEORIA Bazy danych to uporzdkowany zbiór informacji z okrelonej dziedziny lub tematyki przeznaczony do wyszukiwania W kadej bazie danych mona wyodrbni dwa składniki: - model danych, - system zarzdzania baz danych (w skrócie SZBD). Termin model danych rozumiany bdzie szeroko, tzn. jako zbiór zasad dotyczcych struktury danych, i ich zwizków z rzeczywistoci. Pod pojciem SZBD rozumie bdziemy zbiór narzdzi (aplikacji) umoliwiajcy dostp do danych, w szczególnoci ich odczyt i modyfikacj. Przykładow baz Dziennik klasowy utworzymy korzystajc z systemu zarzdzania baz danych Access firmy Microsoft. Tabele jako zbiory danych SZBD przechowuje informacje (dane) w tabelach. Tabela charakteryzowana jest przez unikaln w skali bazy danych nazw. Kada tabela składa si z kolumn o okrelonej, unikalnej w skali tabeli nazwie. W kadej kolumnie mona przechowywa dane okrelonego typu. Wyodrbnianie danych elementarnych Pierwszym naszym zadaniem, jako projektantów bazy danych, powinno by okrelenie danych elementarnych na potrzeby naszego modelu danych. Pod pojciem danych elementarnych bdziemy rozumie podstawowe, niepodzielne 'cegiełki' informacji, z których moemy zbudowa pełn informacj o modelowanym fragmencie rzeczywistoci. Pojedyncze dane elementarne bdziemy przechowywa w odpowiednich kolumnach tabeli. Powinnimy zmieni projekt tabeli Matematyka zastpujc kolumn Imi i nazwisko ucznia dwiema kolumnami w jednej przechowamy informacje o imieniu, w drugiej o nazwisku ucznia. Przyjrzyjmy si pozostałym kolumnom. Oceny podzielilimy na oceny z odpowiedzi, oceny ze sprawdzianów i oceny semestralne. Jeeli nawet informacja o tym, kiedy została zdobyta konkretna ocena nie musi by zachowana w bazie, to taki sposób przechowywania danych uniemoliwi obliczenia np. redniej kadego ucznia z danego przedmiotu.
Analizujc nowy układ danych wyraniej moemy zauway, e jeeli kilkoro uczniów w klasie bdzie miało to samo imi, a wic dane w pierwszej tabeli kolumny bd identyczne, to SZBD bdzie miał problemy z "pamitaniem" jakie oceny zdobyła Ewa Rusek, a jakie Ewa Starska. Rozwizaniem tego problemu jest dodanie kolumny przechowujcej unikalne, jednoznacznie identyfikujce ucznia wartoci: Grupowanie danych w tabelach Przyjrzyjmy si tabeli Matematyka. Zawiera ona pewne informacje o uczniu, takie jak jego imi i nazwisko, nie zwizane bezporednio z jego ocenami z matematyki. W dodatku nie s to informacje kompletne, nauczyciel chciałby zna nie tylko imi i nazwisko ucznia, ale take wiedzie gdzie ucze mieszka, kim s jego rodzice, jak mona si z nimi skontaktowa itd. Dodajmy te niezbdne dane do tabeli Matematyka.
To, czego nie sposób nie zauway, to niesamowita nadmiarowo informacji. Dane o adresie, imionach rodziców, numerze telefonu, imieniu i nazwisku powtarzaj si dla kadego ucznia tyle razy, ile ocen z matematyki dostał on w tym roku szkolnym. Nietrudno zauway, e jeeli do tej tabeli dopisalibymy oceny z innego przedmiotu, sytuacje wygldałby o wiele gorzej. Szybko doprowadzilibymy do tego, e do przechowywania wzgldnie prostej informacji o kilku, czy kilkunastu ocenach z jednego przedmiotu potrzebowa bdziemy kilkuset kilobajtowego pliku na dysku. Nadmiarowo nie jest jedynym powodem, dla którego powinnimy grupowa dane o poszczególnych typach obiektów w wielu tabelach. W modelu jednorodnym stosunkowo trudno jest zachowa spójno i adekwatno danych. W naszym przypadku, jeeli Małgosia zdecydowałaby si wyprowadzi od rodziców, informacj o jej nowym adresie musielibymy modyfikowa tyle razy, ile ocen ma Małgosia. Kolejnym utrudnieniem w zarzdzaniu jednorodnym modelem danych jest konieczno wprowadzania nowych danych o jednym obiekcie do wielu rekordów. Gdyby Krzy zdecydował si poda nauczycielowi numer telefonu rodziców, SZBD musiałby wpisa t informacj w liczb pól równ iloci ocen Krzysia z matematyki. Niestety, to nie koniec wad modelu jednorodnego. Kolejny, powany mankament zwizany z przechowywaniem danych w pojedynczej tabeli zwizany jest z usuwaniem pewnych danych o obiekcie. W naszym przypadku, jeeli pewien ucze z klasy nie miałby adnej oceny z matematyki (co odpowiada sytuacji, w której wszystkie oceny z matematyki zostałby temu uczniowi anulowane) z tabeli usunite zostały by równie dane personalne ucznia. W naszym przykładzie łatwo wyodrbni elementarne dane opisujce ucznia (ID ucznia, Imi, Nazwisko, Adres, Imiona rodziców, Telefon kontaktowy) od danych opisujcych oceny ucznia(id ucznia, Ocena, Zdobyta za). Relacje czyli zwizki midzy tabelami Projektujc baz danych planujemy umieszczanie danych opisujcych róne typy obiektów w rónych tabelach. W efekcie unikamy błdów opisanych w poprzednim rozdziale, ale otrzymujemy pewn liczb tabel, z których adna nie zawiera kompletnej informacji o obiekcie. Kolejnym etapem projektu musi by ustalenie powiza midzy tymi tabelami. W Accessie powizania midzy tabelami nazwane zostały relacjami.
Aby uzyska informacj o imieniu ucznia i wystawionej mu ocenie semestralnej tabela Matematyka musi zosta powizana z tabel Ucze. Sposób powizania tabel przedstawia rysunek. W naszym przypadku powizane ze sob zostały pola Matematyka.ID ucznia i Uczen.ID ucznia. Pole ID ucznia dodalimy, jak pamitamy, wyłcznie po to, aby SZBD był w stanie jednoznacznie identyfikowa wszystkie dane elementarne jako opisujce tego włanie ucznia. Dziki temu polu informacje o imieniu i nazwisku, adresie, numerze telefonu, i imionach rodziców przypisane s do niepowtarzalnego identyfikatora. Pole tego typu, jak pole ID ucznia, bdziemy nazywa kluczami. W naszym przypadku typ powizania powinien umoliwi kademu z uczniów otrzymanie dowolnej liczby ocen z matematyki, jednoczenie uniemoliwiajc wystawianie ocen z przedmiotu nieistniejcym uczniom. Taki typ powizania nosi nazw powizania jeden do wielu. Drugim, oprócz jeden do wiele, typem powiza midzy tabelami jest typ jeden do jednego. Ten typ powizania wykorzystamy przy projektowaniu zwizku pomidzy tabel Ucze a tabel Szatnia, w której przechowywa bdziemy informacj o wyposaeniu szafki kadego z uczniów.
Znamy ju praktyczne wskazówki dotyczce wyodrbniania danych elementarnych, grupowania danych w tabelach i okrelaniu zwizków pomidzy tabelami. Moemy spróbowa uzupełni nasz baz danych o kolejn tabel: Nauczyciel. Kolejnym krokiem bdzie uogólnienie naszej bazy danych do takiej postaci, w której moliwe bdzie przechowywanie informacji o ocenach z rónych przedmiotów, nie tylko z matematyki. Dokonamy tego zastpujc tabel Matematyka tabel Ocena i uzupełniajc j o kolumn Przedmiot, w której przechowywa bdziemy dane o nazwie przedmiotu, z którego ucze dostał ocen. Dane do nowej kolumny bd pobierane z pomocniczej tabeli Lista przedmiotów, dziki czemu dodanie nowego przedmiotu do listy prowadzonych w szkole zaj sprowadzi si do wpisania jego nazwy do tabeli i przypisania mu nazwiska nauczyciela. Efekt zmian w projekcie bazy danych Dziennik:
Jzyk SQL Jzyk SQL jest ogólnie przyjtym standardem jzyków baz danych. Niezalenie od tego, jaka firma jest producentem SZBD, jak równie do współpracy z jakim systemem operacyjnym SZBD został zaprojektowany, moemy by pewni, e zaimplementowana jest w nim obsługa jzyka SQL. Polecenia jzyka SQL dziel si na dwie grupy: - polecenia DDL, słuce do definiowania danych - polecenia DML, słuce do modyfikowania danych. Za pomoc jzyka DDL moemy utworzy takie obiekty w bazie danych jak np. tabele. Polecenia jzyka DML słu do wstawiania, modyfikowania i usuwania danych z istniejcych obiektów. Instrukcje Instrukcja SELECT powoduje pobranie przez SZBD danych z tabeli, której nazwa okrelona jest poprzez klauzul FROM. SELECT NazwaKolumny, NazwaKolumny,... FROM NazwaTabeli; Przykłady: Wywietlenie wszystkich kolumn w tabeli uczniowie. SELECT * FROM Uczen; Ogranicza liczb kolumn do kolumny zawierajcej imiona i nazwiska SELECT Imi, Nazwisko FROM Uczen;
Słowo WHERE jest uywane do okrelania, e tylko niektóre wiersze (rekordy) tabeli maj by wywietlane. Wywietlane rekordy bazuj na kryteriach przedstawionych w klauzuli WHERE. WHERE nazwa_pola operator warto Przykład: Wywietlenie kwerendy zawierajcej Imi, Nazwisko i Telefon ucznia z identyfikatorem JBA. SELECT Imi, Nazwisko, [telefon kontaktowy] FROM Ucze WHERE [ID ucznia]='jba'; Operator AND łczy dwa lub wicej warunków i wywietla wiersz tylko wtedy, gdy dane w tym wierszu spełniaj wszystkie przedstawione warunki. Operator OR łczy dwa lub wicej warunków, ale zwraca wiersz, jeeli dowolny z nich (warunków) jest spełniony. Np. chcemy wiedzie ile ocen niedostatecznych wystawilimy na koniec semestru z matematyki. SELECT Ocena FROM Ocena WHERE Ocena=1 AND [ID przedmiotu]='mat' AND [Zdobyta za]='semestr'; Dodawanie, modyfikowanie i usuwanie wierszy INSERT INTO - dodawanie wierszy (rekordów) INSERT INTO Tabela ( pole1, pole2) VALUES ('warto_1', 'warto_2'); UPDATE modyfikowanie danych Aby podnie semestraln ocen z matematyki wszystkim uczniom o 1 napiszemy: UPDATE Ocena SET Ocena=Ocena+1 WHERE [Zdobyta za]='semestr' AND [ID przedmiotu]='mat'; DELETE Usuwanie wierszy Chcemy z listy przedmiotów usun przedmiot Filozofia wykorzystamy do tego ponisz instrukcj: DELETE * FROM [Lista przedmiotów] WHERE [Id przedmiotu]='filo'; Funkcje agregacyjne SUM () zwraca sum wartoci z wierszy spełniajcych zapytanie dla kolumny numerycznej. AVG () zwraca redni dla danej kolumny.
MAX () zwraca najwiksz warto w danej kolumnie. MIN () zwraca najmniejsz warto w danej kolumnie. COUNT(*) zwraca liczb okrelajc ilo wierszy spełniajcych warunki. Powracamy do wczeniejszego problemu. Chcemy wiedzie ile ocen niedostatecznych wystawilimy na koniec semestru z matematyki. SELECT COUNT([Ocena]) FROM Ocena WHERE [Ocena]=2 And [ID przedmiotu]='mat' And [Zdobyta za]='semestr';