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';