10. Relacje.txt

(59 KB) Pobierz
#212
10. Relacje

Nie ma nic, co mogłoby zastšpić komfort, jaki daje przyjęcie na
wiarę pewnego powišzania
Iris Murdoch
=====================================

Jak dowiedziałe się z rozdziału 3, relacja to powišzanie istniejšce między parš tabel. W relacyjnym modelu logicznym dwie tabele sš ze sobš w relacji, jeli wišżš je wartoci klucza podstawowego i klucza obcego lub też specjalna tabela łšczšca. Sposób powišzania tabel zależy od typu istniejšcej miedzy nimi relacji.
Relacje sš ważnym elementem bazy danych, ponieważ:
      Stanowiš sposób na łšczenie tabel przechowujšcych powišzane ze sobš dane. Dane zawarte w różnych tabelach zazwyczaj można ze sobš w jaki sposób powišzać. Przykładowo, miedzy danymi w tabeli Klienci" a danymi w tabeli Zamówienia" istnieje relacja, gdyż każde zamówienie (reprezentowane przez pojedynczy rekord w tabeli Zamówienia") wišże się z pewnym klientem (reprezentowanym przez pojedynczy rekord w tabeli Klienci").
      Pomagajš w ulepszaniu struktur tabel i minimalizowaniu iloci nadmiarowych danych. Korzyci te płynš ze sposobu łšczenia ze sobš powišzanych tabel. Proces definiowania relacji zakłada zmodyfikowanie struktur tabel w sposób, który czyni je efektywniejszymi.
       Umożliwiajš jednoczesne odczytywanie informacji z wielu różnych tabel. Z rozdziału 12 dowiesz się, że pola pochodzšce z różnych tabel można połšczyć w tabeli wirtualnej (perspektywie), co pozwala na ich jednoczesne wywietlanie oraz (w pewnych przypadkach) modyfikowanie.
      Poprawnie zdefiniowane, wprowadzajš do bazy danych integralnoć na poziomie relacji. Oznacza to gwarancję efektywnoci i spójnoci wszystkich relacji. Jak wiesz, integralnoć na poziomie relacji stanowi składnik ogólnej integralnoci danych.
#214
Aby móc skorzystać z zalet relacyjnego modelu logicznego, musisz powiecić nieco czasu na dokładne okrelenie i zdefiniowanie każdej relacji. Niespełnienie tego wymagania może znacznie utrudnić jednoczesnš prace z wieloma tabelami oraz wprowadzanie, modyfikowanie i usuwanie rekordów z powišzanych tabel. Problemami tymi zajmiemy się w dalszej częci ksišżki.

Typy relacji

Zanim przystšpisz do definiowania poszczególnych relacji, musisz najpierw poznać ich podstawowe typy. Każda relacja należy do pewnego konkretnego typu. Umiejętnoć okrelania typów relacji stanowi znaczne ułatwienie w projektowaniu relacyjnej bazy danych.
Jak powiedzielimy w rozdziale 3, istniejš trzy typy relacji: relacja jeden-do-jed-nego, relacja jeden-do-wielu oraz relacja wiele-do-wielu.
Uwaga: Za chwilę podamy wzorcowe" przykłady każdego z trzech omawianych typów. Zawsze dobrze jest wyobrażać sobie relacje w ich postaci wzorcowej - ułatwia to obiektywne okrelenie typu relacji istniejšcej między parš tabel.
Każdemu działowi towarzyszy odpowiedni diagram przykładowej relacji. Wszystkie specjalne wymagania zwišzane z tworzeniem takich diagramów sš szczegółowo opisane w poszczególnych działach. Symbole, z jakich składajš się diagramy relacji, będš omawiane w miarę potrzeb. Ten sposób prezentacji umożliwi Ci zrozumienie roli, jakš dany symbol pełni w diagramie, nie zmuszajšc Cię przy tym do jednoczesnego zapamiętania wszystkich symboli.
Pierwsze z omawianych symboli sš przedstawione na przykładowym diagramie relacji z rysunku 10.1.
(oznaczenia bloków:[..],{..},||..||,(..),[[..]]-zapamiętaj; tabele(bloki) sš obok siebie, jednak dla lepszego zrozumienia będš w pionie; musisz jedynie zwracać uwagę na wiersze. Np: Nazwa tabeli 1. odpowiada nazwie tabeli 2.Może być w tabelach że iloć wierszy w 2. jest mniejsza, ale obowišzuje zasada ze wiesz 2 odpowiada 2, 5 odp.5 itd; kreski pionowe |..| to wiersze, opuszczam w dalszej częci)

1.[|Nazwa tabeli|		{Nazwa tabeli
|---------------|		|-------------|
|	|]			|	|}
Tabela danych]		Tabela-podzbiór}

Rysunek 10.1. Diagram tabeli danych i tabeli-podzbioru
#215
Relacje jeden-do-jednego
Mówimy, że dwie tabele łšczy relacja jeden-do-jednego, jeli pojedynczemu rekordowi w tabeli A odpowiada dokładnie jeden rekord w tabeli B, a pojedynczemu rekordowi w tabeli B odpowiada dokładnie jeden rekord w tabeli A. Rysunek 10.2 przedstawia wzorzec relacji jeden-do-jednego.

1.[|TABELA A	2.{|TABELA B|
|	|		|	|
|	|		|	|
|/////|<--------->|\\\\\|
|	|		|	|
|	|		|	|
|	|]		|	|}

Rysunek 10.2. Wzorzec relacji jeden-do-jednego

Na rysunku pojedynczy rekord w tabeli A jest powišzany z jednym rekordem w tabeli B i na odwrót. W relacji jeden-do-jednego często (chociaż nie zawsze) uczestniczy tabela-podzbiór. Dla potrzeb naszego przykładu załóżmy, że tabela B jest podzbiorem. Rysunek 10.3 przedstawia diagram relacji jeden-do-jednego.
Ta linia -|1)oznacza, że pojedynczemu rekordowi w tabeli B odpowiada dokładnie jeden rekord w
tabeli A

1.[|TABELA A	2.{|TABELA B|
|-----|-|1)--|2)--|	|
|	|		|	|
|	|		|	|

Ta linia -|2)oznacza, że pojedynczemu rekordowi w tabeli A odpowiada dokładnie jeden rekord w tabeli B

Rysunek 10.3. Diagram relacji jeden-do-jednego

Na diagramie relacji jej typ jest okrelany przez rodzaj linii narysowanej miedzy dwoma tabelami. W dalszej częci rozdziału pokażemy, jak umieszczać na diagramie pozostałe cechy relacji.

Relacje jeden-do-wielu

Mówimy, że między dwoma tabelami istnieje relacja jeden-do-wielu, jeli pojedynczemu rekordowi w tabeli A odpowiada jeden lub więcej rekordów w tabeli B, a pojedynczemu rekordowi w tabeli B odpowiada dokładnie jeden rekord w tabeli A. Do zilustrowania tego typu relacji potrzebne sš dwa diagramy.
#216
Załóżmy, że pracujesz nad dwiema tabelami: A i B. Relacja jeden-do-wielu istnieje, jeli każdemu rekordowi w tabeli A możemy przypisać jeden lub więcej (ale niekoniecznie wszystkie) rekordy z tabeli B, a pojedynczemu rekordowi w tabeli B odpowiada tylko jeden rekord z tabeli A.
1.[|TABELA A	2.{|TABELA B|
|	|		|\\\\\|
|	|		|	|
|/////|---------->|\\\\\|
|	|		|\\\\\|
|	|		|	|
|	|]		|\\\\\|}
Od |/////|z 1. strzałki do wszystkich |\\\\\|z 2.


Rysunek 10.4. Relacja jeden-do-wielu z punktu widzenia tabeli A

1.[|TABELA A	2.{|TABELA B|
|	|		|	|
|	|		|	|
|/////|<----------|	|
|	|		|\\\\\|
|	|		|	|
|	|]		|	|}

Rysunek 10.5. Relacja jeden-do-wielu z punktu widzenia tabeli B

Relacja jeden-do-wielu jest najczęciej pojawiajšcym się typem relacji i jest też najprostsza do okrelenia. Rysunek 10.6 przedstawia diagram relacji jeden-do-wielu.
Ta linia -|1) oznacza, że pojedynczemu rekordowi w tabeli B odpowiada dokładnie jeden rekord w tabeli A
1.[|TABELA A	2.{|TABELA B|
|-----|-|1)---2)<-|	|
|	|		|	|
|	|		|	|

Ten pędzel" 2)<- oznacza, że pojedynczemu rekordowi w tabeli A może odpowiadać wiele rekordów w tabeli B

Rysunek 10.6. Diagram relacji jeden-do-wielu

Relacje wiele-do-wielu

Mówimy, że miedzy dwoma tabelami istnieje relacja wiele-do-wielu, jeli pojedynczemu rekordowi w tabeli A odpowiada jeden lub więcej rekordów w tabeli B i na
#217
odwrót - pojedynczemu rekordowi w tabeli B odpowiada jeden lub więcej rekordów w tabeli A.
Ponownie załóżmy, że pracujesz nad tabelami A i B. Relacja wiele-do-wielu istnieje, jeli każdemu rekordowi w tabeli A możemy przypisać jeden lub więcej (ale niekoniecznie wszystkie) rekordy z tabeli B, i podobnie - pojedynczemu rekordowi w tabeli B można przyporzšdkować jeden lub więcej (ale niekoniecznie wszystkie) rekordy z tabeli A.
Rysunek 10.9 przedstawia diagram relacji wiele-do-wielu.

1.[|TABELA A	2.{|TABELA B|
|	|		|\\\\\|
|	|		|	|
|/////|---------->|\\\\\|
|	|		|\\\\\|
|	|		|	|
|	|]		|\\\\\|}
Od |/////|z 1. strzałki do wszystkich |\\\\\|z 2.

Rysunek 10.7. Relacja wiele-do-wielu z punktu widzenia tabeli A
1.[|TABELA A	2.{|TABELA B|
|/////|		|	|
|	|		|	|
|/////|<----------|\\\\\|
|/////|		|	|
|	|		|	|
|/////|]		|	|}

Od |\\\\\|z 2. strzałki do wszystkich |/////|z 1.

Rysunek 10.8. Relacja wiele-do-wielu z punktu widzenia tabeli B

Ten pędzel" -> oznacza, że pojedynczemu rekordowi w tabeli B może odpowiadać wiele rekordów w tabeli A
1.[|TABELA A	2.{|TABELA B|
|-----|->1)---2)<-|	|
|	|		|	|
|	|		|	|
Ten pędzel" 2)<- oznacza, że pojedynczemu rekordowi w tabeli A może odpowiadać wiele rekordów w tabeli B Rysunek 10.9. Diagram relacji wiele-do-wielu
#218
Problemy zwišzane z relacjami wiele-do-wielu

Przed skorzystaniem z tabel uczestniczšcych w relacji wiele-do-wielu musisz uporać się z kilkoma problemami. Jeli relacja ta nie zostanie poprawnie zdefiniowana, wówczas:
      Jedna z tabel będzie zawierać dużš iloć nadmiarowych danych. Jeżeli nie znasz poprawnej   procedury   definiowania  relacji   wiele-do-wielu,   będziesz   musiał wprowadzić do jednej z tabel niepotrzebne pola (co pocišgnie za sobš koniecznoć przechowywania nadmiarowych danych).
      W obu tabelach znajdzie się pewna iloć danych zwielokrotnionych. Wprowadzenie powtórzonych pól do jednej z tabel oznacza obecnoć zwielokrotnionych danych w obu tabelach.                                                                            Trudno będzie wprowadzać, modyfikować i usuwać dane z powišzanych tabel. Po wprowadzeniu zwielokrotnionych pól do obu tabel będziesz musiał dbać o spójnoć zawartych w nich danych.
Aby zilustrować te problemy, rozważmy dwie tabele, których struktury przedstawia rysunek 10.10. Miedzy tabelš Studenci" a tabelš Wykłady" istnieje relacja wiele--do-wielu, ponieważ każdy student może uczęszczać na wiele wykładów, a w każdym wykładzie może uczestniczyć wielu studentów.
Struktury tabel

1.[Studenci
---------------
ID studenta   KP
Imię stud.
Nazwisko stud.
Adres miejski stud.
Miasto stud.
Stan stud.
Kod pocztowy stud.
Telefon domowy stud.]

2.{Wykłady
---------------
ID wykładu   KP
Nazwa wykładu
Opis wykładu
ID wykładowcy
Kategoria}
(powinny być obok siebie)

Rysunek 10.10. Definiowanie relac...
Zgłoś jeśli naruszono regulamin