10. Relacje, PRIV 2, PRIV 5, PROGRAMOWANIE, SQL, SQL, Podstawy SQL
[ Pobierz całość w formacie PDF ]
#21210. RelacjeNie ma nic, co mogłoby zastšpić komfort, jaki daje przyjęcie nawiarę pewnego powišzaniaIris 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.#214Aby 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 relacjiZanim 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#215Relacje jeden-do-jednegoMó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-jednegoNa 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 wtabeli A1.[|TABELA A 2.{|TABELA B||-----|-|1)--|2)--| || | | || | | |Ta linia -|2)oznacza, że pojedynczemu rekordowi w tabeli A odpowiada dokładnie jeden rekord w tabeli BRysunek 10.3. Diagram relacji jeden-do-jednegoNa 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-wieluMó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.#216Załóż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 A1.[|TABELA A 2.{|TABELA B|| | | || | | ||/////|<----------| || | |\\\\\|| | | || |] | |}Rysunek 10.5. Relacja jeden-do-wielu z punktu widzenia tabeli BRelacja 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 A1.[|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 BRysunek 10.6. Diagram relacji jeden-do-wieluRelacje wiele-do-wieluMó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#217odwró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 A1.[|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 BTen pędzel" -> oznacza, że pojedynczemu rekordowi w tabeli B może odpowiadać wiele rekordów w tabeli A1.[|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#218Problemy zwišzane z relacjami wiele-do-wieluPrzed 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 tabel1.[Studenci---------------ID studenta KPImię stud.Nazwisko stud.Adres miejski stud.Miasto stud.Stan stud.Kod pocztowy stud.Telefon domowy stud.]2.{Wykłady---------------ID wykładu KPNazwa wykładuOpis wykładuID wykładowcyKategoria}(powinny być obok siebie)Rysunek 10.10. Definiowanie relac...
[ Pobierz całość w formacie PDF ]