R 18


Rozdział 18 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. Na potrzeby tej książki zarezerwujemy termin relacja na
określenie pewnego skończonego zbioru odwzorowań (szerzej o relacjach, ich
schematach i teorii relacyjnych baz danych piszemy w następnym rozdziale),
zastępując występujący w Accessie termin relacja terminem związek lub
powiązanie.
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.
rys 18.1 Związek między tabelą Matematyka a Uczeń


Rysunek powinien być odpowiedzią na pytanie zadane na końcu rozdziału 17.
Jeżeli nie dodalibyśmy do tabeli Matematyka kolumny ID ucznia SZBD nie byłby w
stanie odpowiedzieć na pytanie, który uczeń dostał którą ocenę, chociaż
wszystkie informacje o uczniach i ocenach nadal znajdowałyby się w bazie.
Związki pomiędzy tabelami przedstawiane są za pomocą linii łączących powiązane
ze sobą kolumny w obu tabelach. 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 wiele, i jest symbolizowany poprzez liczbę jeden
wyświetloną "od strony" tabeli Uczeń i symbol nieskończoności wyświetlany przy
tabeli Matematyka. Przeglądając zawartość obu tabeli pod kątem ilości wystąpień
pojedynczego identyfikatora ucznia możemy przekonać się, że dane przechowywane
w tabelach spełniają warunek powiązania typu jeden do wiele.
rys 18.2 powiązane ze sobą pola z tabel Matematyka i Uczeń




Powiązanie dwóch tabel może zostać przez nas wykorzystane do dodatkowych zadań.
Na rysunku 18.1, znajduje się okno właściwości powiązania [1 wywoływane poprzez
klikniecie na linii obrazującej powiązanie.], w którym możemy określić w jakim
stopniu SZBD będzie wymuszał przestrzegania referencyjnych związków spójności
(integralności) danych.
Access domyślnie traktuje wszystkie powiązania jako powiązania typu wiele do
wielu, i w związku z tym nie sprawdza referencyjnych więzów spójności pomiędzy
tabelami. Należy zawsze zmieniać domyślny typ powiązania na jeden do wielu lub
jeden do jednego i włączyć wymuszanie więzów integralności poprzez zaznaczenie
odpowiedniego pola w oknie właściwości relacji.
Zaznaczając pola kaskadowej aktualizacji i kaskadowego usuwania zapewniamy
sobie najwyższy poziom spójności danych pomiędzy tabelami. O ile pole
kaskadowej aktualizacji powinniśmy zawsze zaznaczać, o tyle zaznaczając pola
kaskadowego usuwania danych narażamy się na usunięcie wraz z danymi
personalnymi informacji o ocenach ucznia [2 SZBD, aby zachować referencyjne
więzy spójności, usuwając identyfikator ucznia z tabeli Uczeń skasuje również
wszystkie wiersze, w których występował ten identyfikator, z tabeli
Matematyka.]. Sytuację tą obrazuje rysunek 18.3.


rys 18.3 tabela Matematyka przed i po usunięciu Krzysia z tabeli Uczeń przy
włączonej opcji kaskadowego usuwania danych




Drugim, oprócz jeden do wiele, typem powiązań między tabelami jest typ jeden do
jednego [3 Jeżeli projektując bazę danych będziemy zmuszeni na powiązanie tabel
(tabeli A i tabeli B) związkiem typu wiele do wielu, to metodą wyjścia z tej
sytuacji jest zaprojektowanie dodatkowej tablicy (C) i powiązanie: tablicy A z
tablicą C związkiem jeden do wielu oraz tablicy B z tablicą C związkiem jeden
do wielu.]. 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.
Pierwszym krokiem będzie zaprojektowanie tablicy Szatnia, według projektu
przedstawionego na rys. 18.4
rys. 18.4 Projekt tabeli Szatnia


Kolejnym krokiem będzie powiązanie nowej tabeli z tabelą Uczeń, jak pokazano na
rys. 18.5
rys. 18.5 Związki między tabelami Matematyka
Uczeń
Szatnia


W efekcie takiego ustawienia związków pomiędzy tabelami próba przyznania
jednemu uczniowi więcej niż jednej szafki zakończy się niepowodzeniem SZBD
zgłosi błąd polegający na naruszeniu referencyjnych więzów spójności.
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.
rys. 18.6 Projekt tabeli 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 [4 Prawdopodobnie większości Czytelników od początku nie podobał
się pomysł ograniczenia przedmiotów, z których oceny będą przechowywane w
Dzienniku do jednego. Teraz potrafimy już ominąć to ograniczenie.]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.
Kompletny schemat powiązań pomiędzy tabelami w bazie Dziennik przedstawia
rysunek 18.7


rys 18.7 Efekt zmian w projekcie bazy danych Dziennik

Proszę zauważyć, że nie tylko nie istnieje bezpośrednie powiązanie ucznia z
nauczycielem [5 Co w większości przypadków przedstawia tzw. stan "normalny".],
ale również nauczyciela z wystawioną oceną. Proszę przeanalizować, jaki będzie
miało to wpływ na sytuację, w której jeden przedmiot prowadzony jest przez
dwóch nauczycieli.
W następnym rozdziale przedstawimy nieco bardziej formalny sposób podejścia do
problemu wyznaczania danych elementarnych, grupowania danych w tabelach i
określania związków między tabelami.


Wyszukiwarka

Podobne podstrony:
2565 18
kawały(18)
Załącznik nr 18 zad z pisow wyraz ó i u poziom I
A (18)
consultants howto 18
Kazanie na 18 Niedzielę Zwykłą C
18 Prezentacja
18 Mit mityzacja mitologie współczesne
18 (36)

więcej podobnych podstron