Tabele jako zbiory danych Wyodrębnianie danych elementarnych
Transkrypt
Tabele jako zbiory danych Wyodrębnianie danych elementarnych
RELACYJNE BAZY DANYCH – TEORIA Bazy danych to uporz dkowany zbiór informacji z okre lonej dziedziny lub tematyki przeznaczony do wyszukiwania W ka dej bazie danych mo na wyodr bni dwa składniki: - model danych, - system zarz dzania baz danych (w skrócie SZBD). Termin model danych rozumiany b dzie szeroko, tzn. jako zbiór zasad dotycz cych struktury danych, i ich zwi zków z rzeczywisto ci . Pod poj ciem SZBD rozumie b dziemy zbiór narz dzi (aplikacji) umo liwiaj cy dost p do danych, w szczególno ci ich odczyt i modyfikacj . Przykładow baz Dziennik klasowy utworzymy korzystaj c z systemu zarz dzania 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 . Ka da tabela składa si z kolumn o okre lonej, unikalnej w skali tabeli nazwie. W ka dej kolumnie mo na przechowywa dane okre lonego typu. Wyodr bnianie danych elementarnych Pierwszym naszym zadaniem, jako projektantów bazy danych, powinno by okre lenie danych elementarnych na potrzeby naszego modelu danych. Pod poj ciem danych elementarnych b dziemy rozumie podstawowe, niepodzielne 'cegiełki' informacji, z których mo emy zbudowa pełn informacj o modelowanym fragmencie rzeczywisto ci. Pojedyncze dane elementarne b dziemy przechowywa w odpowiednich kolumnach tabeli. Powinni my zmieni projekt tabeli Matematyka zast puj c kolumn Imi i nazwisko ucznia dwiema kolumnami — w jednej przechowamy informacje o imieniu, w drugiej o nazwisku ucznia. Przyjrzyjmy si pozostałym kolumnom. Oceny podzielili my na oceny z odpowiedzi, oceny ze sprawdzianów i oceny semestralne. Je eli nawet informacja o tym, kiedy została zdobyta konkretna ocena nie musi by zachowana w bazie, to taki sposób przechowywania danych uniemo liwi obliczenia np. redniej ka dego ucznia z danego przedmiotu. Analizuj c nowy układ danych wyra niej mo emy zauwa y , e je eli kilkoro uczniów w klasie b dzie miało to samo imi , a wi c dane w pierwszej tabeli kolumny b d identyczne, to SZBD b dzie miał problemy z "pami taniem" jakie oceny zdobyła Ewa Rusek, a jakie Ewa Starska. Rozwi zaniem tego problemu jest dodanie kolumny przechowuj cej unikalne, jednoznacznie identyfikuj ce ucznia warto ci: Grupowanie danych w tabelach Przyjrzyjmy si tabeli Matematyka. Zawiera ona pewne informacje o uczniu, takie jak jego imi i nazwisko, nie zwi zane bezpo rednio z jego ocenami z matematyki. W dodatku nie s to informacje kompletne, nauczyciel chciałby zna nie tylko imi i nazwisko ucznia, ale tak e wiedzie gdzie ucze mieszka, kim s jego rodzice, jak mo na si z nimi skontaktowa itd. Dodajmy te niezb dne dane do tabeli Matematyka. To, czego nie sposób nie zauwa y , to niesamowita nadmiarowo informacji. Dane o adresie, imionach rodziców, numerze telefonu, imieniu i nazwisku powtarzaj si dla ka dego ucznia tyle razy, ile ocen z matematyki dostał on w tym roku szkolnym. Nietrudno zauwa y , e je eli do tej tabeli dopisaliby my oceny z innego przedmiotu, sytuacje wygl dałby o wiele gorzej. Szybko doprowadziliby my do tego, e do przechowywania wzgl dnie prostej informacji o kilku, czy kilkunastu ocenach z jednego przedmiotu potrzebowa b dziemy kilkuset kilobajtowego pliku na dysku. Nadmiarowo nie jest jedynym powodem, dla którego powinni my 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, je eli Małgosia zdecydowałaby si wyprowadzi od rodziców, informacj o jej nowym adresie musieliby my modyfikowa tyle razy, ile ocen ma Małgosia. Kolejnym utrudnieniem w zarz dzaniu 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 ilo ci ocen Krzysia z matematyki. Niestety, to nie koniec wad modelu jednorodnego. Kolejny, powa ny mankament zwi zany z przechowywaniem danych w pojedynczej tabeli zwi zany jest z usuwaniem pewnych danych o obiekcie. W naszym przypadku, je eli 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 usuni te zostały by równie dane personalne ucznia. W naszym przykładzie łatwo wyodr bni elementarne dane opisuj ce ucznia (ID ucznia, Imi , Nazwisko, Adres, Imiona rodziców, Telefon kontaktowy) od danych opisuj cych oceny ucznia(ID ucznia, Ocena, Zdobyta za). Relacje czyli zwi zki mi dzy tabelami Projektuj c baz danych planujemy umieszczanie danych opisuj cych 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 powi za mi dzy tymi tabelami. W Accessie powi zania mi dzy tabelami nazwane zostały relacjami. Aby uzyska informacj o imieniu ucznia i wystawionej mu ocenie semestralnej tabela Matematyka musi zosta powi zana z tabel Ucze . Sposób powi zania tabel przedstawia rysunek. W naszym przypadku powi zane ze sob zostały pola Matematyka.ID ucznia i Uczen.ID ucznia. Pole ID ucznia dodali my, jak pami tamy, wył cznie po to, aby SZBD był w stanie jednoznacznie identyfikowa wszystkie dane elementarne jako opisuj ce tego wła nie ucznia. Dzi ki 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, b dziemy nazywa kluczami. W naszym przypadku typ powi zania powinien umo liwi ka demu z uczniów otrzymanie dowolnej liczby ocen z matematyki, jednocze nie uniemo liwiaj c wystawianie ocen z przedmiotu nieistniej cym uczniom. Taki typ powi zania nosi nazw powi zania jeden do wielu. Drugim, oprócz jeden do wiele, typem powi za mi dzy tabelami jest typ jeden do jednego. Ten typ powi zania wykorzystamy przy projektowaniu zwi zku pomi dzy tabel Ucze a tabel Szatnia, w której przechowywa b dziemy informacj o wyposa eniu szafki ka dego z uczniów. Znamy ju praktyczne wskazówki dotycz ce wyodr bniania danych elementarnych, grupowania danych w tabelach i okre laniu zwi zków pomi dzy tabelami. Mo emy spróbowa uzupełni nasz baz danych o kolejn tabel : Nauczyciel. Kolejnym krokiem b dzie uogólnienie naszej bazy danych do takiej postaci, w której mo liwe b dzie przechowywanie informacji o ocenach z ró nych przedmiotów, nie tylko z matematyki. Dokonamy tego zast puj c tabel Matematyka tabel Ocena i uzupełniaj c j o kolumn Przedmiot, w której przechowywa b dziemy dane o nazwie przedmiotu, z którego ucze dostał ocen . Dane do nowej kolumny b d pobierane z pomocniczej tabeli Lista przedmiotów, dzi ki 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: J zyk SQL J zyk SQL jest ogólnie przyj tym standardem j zyków baz danych. Niezale nie od tego, jaka firma jest producentem SZBD, jak równie do współpracy z jakim systemem operacyjnym SZBD został zaprojektowany, mo emy by pewni, e zaimplementowana jest w nim obsługa j zyka SQL. Polecenia j zyka SQL dziel si na dwie grupy: - polecenia DDL, słu ce do definiowania danych - polecenia DML, słu ce do modyfikowania danych. Za pomoc j zyka DDL mo emy utworzy takie obiekty w bazie danych jak np. tabele. Polecenia j zyka DML słu do wstawiania, modyfikowania i usuwania danych z istniej cych obiektów. Instrukcje Instrukcja SELECT powoduje pobranie przez SZBD danych z tabeli, której nazwa okre lona jest poprzez klauzul FROM. SELECT NazwaKolumny, NazwaKolumny, ... FROM NazwaTabeli; Przykłady: Wy wietlenie wszystkich kolumn w tabeli uczniowie. SELECT * FROM Uczen; Ogranicza liczb kolumn do kolumny zawieraj cej imiona i nazwiska SELECT Imi , Nazwisko FROM Uczen; Słowo WHERE jest u ywane do okre lania, e tylko niektóre wiersze (rekordy) tabeli maj by wy wietlane. Wy wietlane rekordy bazuj na kryteriach przedstawionych w klauzuli WHERE. WHERE nazwa_pola operator warto Przykład: Wy wietlenie kwerendy zawieraj cej Imi , Nazwisko i Telefon ucznia z identyfikatorem ‘JBA’. SELECT Imi , Nazwisko, [telefon kontaktowy] FROM Ucze WHERE [ID ucznia]='JBA'; Operator AND ł czy dwa lub wi cej warunków i wy wietla wiersz tylko wtedy, gdy dane w tym wierszu spełniaj wszystkie przedstawione warunki. Operator OR ł czy dwa lub wi cej warunków, ale zwraca wiersz, je eli dowolny z nich (warunków) jest spełniony. Np. chcemy wiedzie matematyki. ile ocen niedostatecznych wystawili my na koniec semestru z 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 instrukcj : przedmiot Filozofia wykorzystamy do tego poni sz DELETE * FROM [Lista przedmiotów] WHERE [Id przedmiotu]='FILO'; Funkcje agregacyjne SUM () zwraca sum warto ci z wierszy spełniaj cych zapytanie dla kolumny numerycznej. AVG () zwraca redni dla danej kolumny. MAX () zwraca najwi ksz warto w danej kolumnie. MIN () zwraca najmniejsz warto w danej kolumnie. COUNT(*) zwraca liczb okre laj c ilo wierszy spełniaj cych warunki. Powracamy do wcze niejszego problemu. Chcemy wiedzie wystawili my na koniec semestru z matematyki. ile ocen niedostatecznych SELECT COUNT([Ocena]) FROM Ocena WHERE [Ocena]=2 And [ID przedmiotu]='MAT' And [Zdobyta za]='semestr';