Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00356 008552 10455169 na godz. na dobę w sumie
Relacyjne bazy danych - książka
Relacyjne bazy danych - książka
Autor: , Liczba stron: 340
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-095-2 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych >> inne
Porównaj ceny (książka, ebook, audiobook).

Relacyjne bazy danych stanowią podstawę większości współczesnych systemów informatycznych. Choć poszczególne systemy zarządzania bazami danych różnią się między sobą w wielu aspektach, są jednak oparte na wspólnych podstawach teoretycznych. Jeśli zrozumiesz ten wspólny fundament, będziesz mógł z łatwością budować na nim własne aplikacje, niezależnie od tego, czy jako systemu bazodanowego użyjesz komercyjnego Oracle'a lub MS SQL-a, czy też bezpłatnego PostgreSQL.

Książka 'Relacyjne bazy danych' została napisana w celu jak najbardziej przystępnego objaśnienia zagadnień relacyjnego modelu danych oraz jego znaczenia dla projektantów i twórców baz danych. Objaśnienia tych, często skomplikowanych zagadnień, przybliżają tajniki relacyjnego modelu danych wykorzystując przykłady, a nie wzory matematyczne. Dzięki ich zrozumieniu będziesz mógł projektować bazy danych szybsze, bardziej elastyczne i lepiej dopasowane do zadań, jakie mają realizować. Poznasz:

Dr Mark Whitehorn dysponuje ogromną wiedzą w dziedzinie teorii relacyjnych baz danych. Dzięki cyklowi artykułów w brytyjskim magazynie Personal Computer World udało mu się przybliżyć ją tysiącom użytkowników.

'Po prostu doskonała. Wyjaśniając tajniki zagadnień związanych z relacyjnymi bazami danych, Mark Whitehorn oraz Bill Marklyn osiągnęli o wiele więcej niż inni autorzy. Uczynili ten temat ciekawym, a nawet wręcz zabawnym, co stawia ich poza zasięgiem jakiejkolwiek konkurencji'.

Neil Fawcett, Edytor techniczny, VNU Business Publications

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI Relacyjne bazy danych KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG Autorzy: Mark Whitehorn, Bill Marklyn T³umaczenie: Marek Pêtlicki ISBN: 83-7361-095-2 Tytu³ orygina³u: Inside Relational Databases 2nd Edition Format: B5, stron: 338 TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Relacyjne bazy danych stanowi¹ podstawê wiêkszoġci wspó³czesnych systemów informatycznych. Choæ poszczególne systemy zarz¹dzania bazami danych ró¿ni¹ siê miêdzy sob¹ w wielu aspektach, s¹ jednak oparte na wspólnych podstawach teoretycznych. Jeġli zrozumiesz ten wspólny fundament, bêdziesz móg³ z ³atwoġci¹ budowaæ na nim w³asne aplikacje, niezale¿nie od tego, czy jako systemu bazodanowego u¿yjesz komercyjnego Oracle a lub MS SQL-a, czy te¿ bezp³atnego PostgreSQL. Ksi¹¿ka „Relacyjne bazy danych” zosta³a napisana w celu jak najbardziej przystêpnego objaġnienia zagadnieñ relacyjnego modelu danych oraz jego znaczenia dla projektantów i twórców baz danych. Objaġnienia tych, czêsto skomplikowanych zagadnieñ, przybli¿aj¹ tajniki relacyjnego modelu danych wykorzystuj¹c przyk³ady, a nie wzory matematyczne. Dziêki ich zrozumieniu bêdziesz móg³ projektowaæ bazy danych szybsze, bardziej elastyczne i lepiej dopasowane do zadañ, jakie maj¹ realizowaæ. Poznasz: • Podstawowe pojêcia zwi¹zane z bazami danych: tabele, rekordy, pola • Sposoby pobierania danych za pomoc¹ zapytañ • Tworzenie raportów z wyselekcjonowanych danych • Projektowanie baz z uwzglêdnieniem zwi¹zków miêdzy danymi, klucze i indeksy • Sposoby przestrzegania regu³ integralnoġci danych • Tworzenie zaawansowanych wielowarstwowych aplikacji opartych o bazy danych • Programowanie wyzwalaczy, procedur zapisanych, u¿ycie perspektyw • Zastosowania transakcji • Teoriê baz danych: regu³y Codda, normalizacjê • Jêzyk SQL Dr Mark Whitehorn dysponuje ogromn¹ wiedz¹ w dziedzinie teorii relacyjnych baz danych. Dziêki cyklowi artyku³ów w brytyjskim magazynie Personal Computer World uda³o mu siê przybli¿yæ j¹ tysi¹com u¿ytkowników. „Po prostu doskona³a. Wyjaġniaj¹c tajniki zagadnieñ zwi¹zanych z relacyjnymi bazami danych, Mark Whitehorn oraz Bill Marklyn osi¹gnêli o wiele wiêcej ni¿ inni autorzy. Uczynili ten temat ciekawym, a nawet wrêcz zabawnym, co stawia ich poza zasiêgiem jakiejkolwiek konkurencji”. — Neil Fawcett, Edytor techniczny, VNU Business Publications Spis treści Przedmowa do drugiego wydania ................................................... ..... 9 Rozdział 1. Wstęp ................................................... .......................................... 11 Czym jest baza danych? ...................................................b.................................................11 Bazy danych a systemy zarządzania nimi ...................................................b......................12 Systemy obsługi relacyjnych baz danych...................................................b.......................12 Cel powstania książki...................................................b...................................................b..13 Kto powinien przeczytać tę książkę? ...................................................b.............................15 Struktura książki...................................................b...................................................b..........16 Dodatkowe uwagi...................................................b...................................................b........17 Podziękowania ...................................................b...................................................b............18 Część I Prosta baza danych ...................................................o.....19 Rozdział 2. Wstęp do części pierwszej ................................................... ............ 21 Tabele ...................................................b...................................................b..........................21 Formularze ...................................................b...................................................b..................22 Zapytania...................................................b...................................................b.....................22 Raporty ...................................................b...................................................b.................. ......23 Rozdział 3. Tabele ................................................... .......................................... 25 Wiersze i kolumny — rekordy i pola ...................................................b.............................26 Tworzenie tabeli...................................................b...................................................b..........28 Typy danych...................................................b...................................................b..........29 Rozmiar pola ...................................................b...................................................b.........34 Ogólne porady dotyczące projektowania tabel ...................................................b........35 Tabele podstawowe ...................................................b...................................................b.....39 Rozdział 4. Formularze................................................... .................................... 41 Wykorzystanie kilku formularzy obsługujących pojedynczą tabelę.................................44 Pola tekstowe udostępniane tylko do odczytu...................................................b................44 Pola tekstowe zawierające połączone dane z kilku pól...................................................b..45 Nie wszystkie pola tabeli muszą występować w formularzu ............................................46 Kontrola wprowadzanych danych...................................................b..................................47 Wykorzystanie formularzy może być kontrolowane ...................................................b.....47 Formularze mogą być stronami WWW ...................................................b.........................47 Podsumowanie ...................................................b...................................................b............48 Rozdział 5. Zapytania ................................................... ..................................... 51 Pobieranie danych za pomocą zapytań...................................................b...........................51 Zapytania, tabele wynikowe oraz tabele podstawowe ...................................................b...52 4 Relacyjne bazy danych Wyliczanie danych ...................................................b...................................................b......56 Inne rodzaje zapytań...................................................b...................................................b....57 Graficzne narzędzia służące do tworzenia zapytań...................................................b........57 SQL i perspektywy...................................................b...................................................b......58 Rozdział 6. Raporty ................................................... ........................................ 59 Rozdział 7. Podsumowanie części pierwszej ................................................... .... 61 Część II Jednoużytkownikowa baza danych, zbudowana z wielu tabel .................................................65 Rozdział 8. Wstęp do części drugiej ................................................... ................ 67 Rozdział 9. Problemy z pojedynczymi tabelami................................................... . 69 Nadmiarowość danych ...................................................b...................................................b70 Błędy typograficzne ...................................................b...................................................b....70 Aktualizacja danych ...................................................b...................................................b....71 Modyfikacja danych...................................................b...................................................b....72 Podsumowanie ...................................................b...................................................b............72 Rozdział 10. Zastosowanie kilku tabel ................................................... .............. 75 Nadmiarowość danych ...................................................b...................................................b77 Błędy typograficzne ...................................................b...................................................b....79 Aktualizacja danych ...................................................b...................................................b....79 Modyfikacja danych...................................................b...................................................b....80 Rozdział 11. Współdziałanie wielu tabel ................................................... ............ 81 Bazy danych są zaprojektowane w celu modelowania świata rzeczywistego ..................82 Rozdział 12. Prawidłowy projekt tabel................................................... ............... 83 Kilka słów na temat normalizacji i modelowania związków encji ...................................85 Identyfikacja klas obiektów ...................................................b...........................................85 Rozdział 13. Związki w świecie rzeczywistym................................................... .... 89 Związki typu jeden do wielu ...................................................b..........................................89 Związki typu jeden do jednego ...................................................b......................................90 Związki typu wiele do wielu ...................................................b..........................................90 Brak związku...................................................b...................................................b...............90 Rozdział 14. Modelowanie związków ................................................... ................. 91 Klucze główne...................................................b...................................................b.............93 Wykorzystanie kilku kolumn w charakterze klucza głównego ..................................95 Wybór właściwego klucza głównego ...................................................b......................96 Definiowanie klucza głównego...................................................b................................97 Klucze obce ...................................................b...................................................b.................97 Definiowanie klucza obcego...................................................b....................................98 Częściowe podsumowanie ...................................................b.............................................98 Klucz główny ...................................................b...................................................b........99 Klucz obcy ...................................................b...................................................b............99 Złączenia ...................................................b...................................................b.....................99 Związki typu „jeden do wielu” ...................................................b................................99 Związki typu „jeden do jednego” ...................................................b..........................102 Związki typu „wiele do wielu” ...................................................b..............................104 Ogólne informacje na temat złączeń...................................................b......................111 Spis treści 5 Rozdział 15. Ponowna analiza czterech elementów baz danych ........................... 117 Tabele ...................................................b...................................................b........................120 Zapytania...................................................b...................................................b...................121 Formularze ...................................................b...................................................b................127 Raporty ...................................................b...................................................b.................. ....128 Rozdział 16. Integralność danych................................................... .................... 131 Integrowanie danych — opłacalny wysiłek ...................................................b.................131 Błędy integralności danych i ich przyczyny ...................................................b................132 Błędy w unikalnych danych w ramach pojedynczego rekordu ................................133 Błędy w standardowych danych w ramach pojedynczego rekordu ..........................133 Błędy pomiędzy danymi w różnych polach...................................................b...........135 Błędy pomiędzy kluczami w różnych tabelach ...................................................b.....136 Inne zagadnienia dotyczące integralności ...................................................b....................142 Definiowanie zasad integralności danych w systemie ...................................................b.143 Deklarowana i proceduralna integralność odwołań ...................................................b.....144 Rozdział 17. Budowanie aplikacji wykorzystującej bazę danych........................... 147 Wykorzystanie narzędzi graficznych, makr oraz języków skryptowych ........................149 Tworzenie prostego interfejsu...................................................b................................149 Wykorzystanie narzędzi graficznych ...................................................b.....................150 Wykorzystanie makra ...................................................b............................................151 Wykorzystanie języka programowania...................................................b..................152 Które z rozwiązań jest najlepsze? ...................................................b..........................154 Inne języki — SQL ...................................................b...................................................b...156 Rozdział 18. Podsumowanie części drugiej................................................... ...... 157 Część III Bazy danych w środowisku wieloużytkownikowym .........159 Rozdział 19. Architektura baz danych ................................................... ............. 161 Siedem elementów architektury ...................................................b...................................161 Element pierwszy...................................................b...................................................b162 Element drugi...................................................b...................................................b......162 Element trzeci ...................................................b...................................................b.....162 Element czwarty...................................................b...................................................b..162 Element piąty ...................................................b...................................................b......163 Element szósty ...................................................b...................................................b....163 Element siódmy ...................................................b...................................................b..163 Interfejs aplikacji na komputerze klienta, baza danych na serwerze ..............................164 Architektura klient-serwer (dwuwarstwowa)...................................................b...............167 Architektura trójwarstwowa (wielowarstwowa) ...................................................b..........169 Aplikacje internetowe ...................................................b..................................................170 Wybór odpowiedniej architektury...................................................b................................172 Podsumowanie ...................................................b...................................................b..........173 Rozdział 20. Bardziej skomplikowane projekty baz danych .................................. 175 Model użytkownika...................................................b...................................................b...177 Model logiczny...................................................b...................................................b..........177 Model fizyczny...................................................b...................................................b..........178 Model logiczny i fizyczny w praktyce ...................................................b.........................179 Podsumowanie częściowe ...................................................b............................................182 Kolejna wielka zaleta narzędzi CASE ...................................................b.........................183 Różnice pomiędzy modelem logicznym a fizycznym...................................................b..184 Normalizacja ...................................................b...................................................b.............186 6 Relacyjne bazy danych Inżynieria odwrotna...................................................b...................................................b...187 Różne metodologie...................................................b...................................................b....187 Rozdział 21. Wyzwalacze, zapisane procedury oraz perspektywy ......................... 189 Wyzwalacze ...................................................b...................................................b..............189 Terminologia wyzwalaczy ...................................................b.....................................190 Typowe zastosowanie wyzwalaczy, wywoływanych przed i po zdarzeniu .............190 Więcej informacji na temat wyzwalaczy ...................................................b...............191 Zapisane procedury ...................................................b...................................................b...191 Wyzwalacze i zapisane procedury — podsumowanie ...................................................b.192 Perspektywy ...................................................b...................................................b..............193 Rozdział 22. Transakcje, dzienniki, kopie zapasowe, blokowanie i współbieżność .. 197 Transakcje ...................................................b...................................................b.................197 Wycofanie ...................................................b...................................................b.................198 Dzienniki...................................................b...................................................b.............198 Przywrócenie transakcji ...................................................b...............................................201 Archiwizowanie dzienników ...................................................b.................................201 Lokalizacja ...................................................b...................................................b................202 Strategie wykonywania kopii zapasowych ...................................................b..................202 Zalecenia ...................................................b...................................................b.............203 Inne możliwości ...................................................b...................................................b..204 Blokowanie.........................................b...................................................b..........................204 Zakleszczenia ...................................................b...................................................b......205 Współbieżność ...................................................b...................................................b..........206 Blokowanie wierszy i stron ...................................................b..........................................207 Co czeka nas w kolejnych rozdziałach...................................................b.........................207 Rozwiązanie testu...................................................b...................................................b......207 Część IV Tematy związane z bazami danych ................................209 Rozdział 23. Relacyjne i nierelacyjne bazy danych .............................................. 211 Wiele tabel a relacyjność baz danych ...................................................b..........................211 Nazewnictwo...................................................b...................................................b.............212 Rozdział 24. Reguły Codda ................................................... ............................. 215 Do czego potrzebna jest znajomość reguł Codda...................................................b.........215 Zwięzłość a czytelność...................................................b.................................................216 Krótkie wprowadzenie ...................................................b.................................................216 Reguły ...................................................b...................................................b................... Podsumowanie ...................................................b...................................................b..........226 ....216 Rozdział 25. Normalizacja................................................... ............................... 229 Normalizacja ...................................................b...................................................b.............229 Zależność funkcyjna...................................................b...................................................b..231 Definicja wymagań ...................................................b................................................232 Pierwsza forma normalna...................................................b.............................................234 Druga forma normalna ...................................................b.................................................236 Odpowiedzi ...................................................b...................................................b.........239 Trzecia forma normalna ...................................................b...............................................240 Podsumowanie częściowe ...................................................b............................................242 Pierwsza forma normalna (1NF lub pierwszy poziom normalizacji) .......................242 Druga forma normalna (2NF lub drugi poziom normalizacji)..................................242 Trzecia forma normalna (3NF lub trzeci poziom normalizacji) ...............................242 Spis treści 7 Dalsze postępowanie ...................................................b...................................................b.242 Przykład praktyczny...................................................b...............................................243 Normalizacja a usuwanie wszelkiej nadmiarowości ...................................................b....245 Podsumowanie ...................................................b...................................................b..........251 Rozdział 26. Katalog systemowy................................................... ..................... 253 Katalog systemowy ...................................................b...................................................b...253 Rozdział 27. Operacje na danych ................................................... .................... 255 Operatory relacyjne ...................................................b...................................................b...255 Selekcja ...................................................b...................................................b...............257 Projekcja ...................................................b...................................................b.............257 Suma ...................................................b...................................................b...................258 Różnica ...................................................b...................................................b...............259 Przecięcie ...................................................b...................................................b............260 Iloczyn...................................................b...................................................b.................260 Złączenie ...................................................b...................................................b.............262 Podział...................................................b...................................................b.................262 Podsumowanie ...................................................b...................................................b..........264 Rozdział 28. SQL ................................................... ............................................ 267 SELECT oraz FROM ...................................................b...................................................b270 DISTINCT ...................................................b...................................................b..........270 WHERE ...................................................b...................................................b..............271 Warunki...................................................b...................................................b...............272 ORDER BY ...................................................b...................................................b........275 Wzorce dopasowań ...................................................b................................................277 Podzapytania ...................................................b...................................................b.......278 Funkcje wbudowane ...................................................b..............................................279 GROUP BY ...................................................b...................................................b........282 GROUP BY...HAVING...................................................b.........................................287 Praca z wieloma tabelami ...................................................b......................................289 Złączenia wewnętrzne...................................................b............................................293 Złączenia zewnętrzne...................................................b.............................................293 Suma tabel...................................................b...................................................b...........295 Podsumowanie instrukcji SELECT ...................................................b.......................298 INSERT...................................................b...................................................b................... ..299 UPDATE ...................................................b...................................................b...................301 DELETE...................................................b...................................................b....................303 Analiza przypadku...................................................b...................................................b.....304 DISTINCTROW ...................................................b...................................................b.......306 Podsumowanie ...................................................b...................................................b..........310 8 Relacyjne bazy danych Rozdział 29. Dziedziny ................................................... .................................... 311 Rozdział 30. Indeksy — przyśpieszanie działania bazy danych ............................. 313 Rozdział 31. Znaczenie wartości NULL ................................................... ............ 319 Rozdział 32. Klucze główne ................................................... ............................ 323 Dodatki ...................................................o....................................327 Dodatek A Słowniczek ................................................... ................................. 329 Skorowidz................................................... ................................... 331 Rozdział 14. Modelowanie związków Udało nam się umieścić klasy obiektów w tabelach bazy danych. Znamy również sieć zależności, istniejących pomiędzy obiektami. Kolejnymi zadaniem będzie odwzorowa- nie tych związków w bazie. Do realizacji tego zadania będą nam potrzebne pewne nairzędzia:  klucze — główne oraz obce;  złączenia. Te dwa pojęcia określają dwa różne typy narzędzi, udostępnianych przez relacyjne bazy danych, lecz najczęściej oba są wykorzystywane jednocześnie. Na przykład: przed zde- finiowaniem złączenia należy utworzyć jeden lub kilka kluczy głównych, zaś dopiero zbudowanie złączenia nadaje sens istnieniu klucza głównego. Nie należy przejmować się tym, że nazwy tych mechanizmów brzmią dla nas niezrozumiale; w rzeczywistości są to dość proste pojęcia. Zrozumienie ich jest jednak bardzo ważnym krokiem, bowiem dzięki nim wiele zagadnień relacyjnych baz danych nabiera głębszego sensu. Trudno byłoby wyobrazić sobie istnienie relacyjnych baz dainych bez kluczy i złączeń. Zagadnienia dotyczące kluczy i złączeń najprościej omawiać na podstawie przykładu. Jednym z najczęściej stosowanych związków są związki typu „jeden do wielu”, omó- wione w poprzednim rozdziale. Przedstawiliśmy tam związek pomiędzy klientami oraz zamówieniami. Wykorzystamy ten przykład także ii tutaj. Pamiętajmy o stosowanej konwencji nazewnictwa: 9+ .-+ A.+6 4; określają nazwy tabel, natomiast /KGUCPG.KVGT[ określają nazwy kolumn. Odwołania do kolumn w tabeli są zapisywane jako nazwa tabeli, po której widnieje kropka, a następnie nazwa kolumny. Dlatego zapis -.+ 0 +0T-NKGPVC określa kolumnę 0T-NKGPVC tabeli -.+ 0 +. Jedna z zaprezentowanych tu tabel przedstawia uproszczoną wersję tabeli #/19+ 0+#, zawierającą odnośniki do tabeli -.+ 0 + oraz 24# 190+ ;: 92 Część II ♦ Jednoużytkownikowa baza danych, zbudowana z wielu Jtabel -.+ 0 + 0T-NKGPVC +OKG 0CYKUMQ  FYCTF KMK  #NKELC -YKCVMQYUMC  *GPT[M $GDQľP[  ,CPKPC -QđQYUMC #/19+ 0+# 0T COQYKGPKC 0T2TCEQYPKMC 0T-NKGPVC QUVCYEC GPC 6QYCT                      ,CP5VTWI đ $KWTMQ (CD/GDNK đ -TGUđQ ,CP5VTWI đ 5VÎđ $đ[UMUE đ .CORC (CD/GDNK đ -TGUđQ $đ[UMUE đ .CORC ,CP5VTWI đ $KWTMQ 24# 190+ ; 0T2TCEQYPKMC +OKG 0CYKUMQ CVC7TQFGPKC CVC CVTWFPKGPKC  ,CP -QYCNUMK MYK OCL  /CTKC 0QYCM OCT UV[  [IOWPV FWP OCL MYK  QHKC -YKCVMQYUMC MYK MYK  5VGHCP CTPGEMK MYK MYK  9đCF[UđCY /Cđ[ OCL OCL Tabele te odnaleźć można w pliku R14.MDB. W celu zwiększenia ich czytelności klucze główne zostały zapisane wytłuszczoną czcionką, natomiast klucze obce — kursywą. Zdaję sobie sprawę z tego, że tabela #/19+ 0+# jest daleka od doskonałości, po- nieważ nadal zawiera informacje nadmiarowe (dotyczące towarów). Zamiast tego należałoby zastosować osobną tabelę 619#4;. Jest to jednak zabieg celowy — chcia- łem uniknąć nadmiernej komplikacji. Udoskonaleniem tabeli #/19+ 0+# zajmiemy się w dalszej części niniejszego rozdziału. Po bliższym zapoznaniu się z tabelami -.+ 0 + oraz #/19+ 0+# możemy zauważyć, że dane łączące te tabele, znajdują się w dwóch kolumnach (po jednej w każdej z tabel) o tej samej nazwie (0T-NKGPVC). Bez trudu można domyślić się, że liczba  w kolumnie 0T-NKGPVC, w pierwszym wierszu tabeli #/19+ 0+#, oznacza, że pani Alicja Kwiat- kowska zakupiła biurko. Liczba  w tym miejscu jest wykorzystana w charakterze wskaźnika rekordu w tabeli -.+ 0 +, zawierającego dane pani Alicji. Analogicznie, na podstawie innych danych możemy dowiedzieć się, że zamówienie zrealizował pracow- nik Jan Kowalski. 92 (03-07-17) C:AndrzejPDFRelacyjne bazy danych 14-07.doc Rozdział 14. ♦ Modelowanie związków 93 W celu wyjaśnienia mechanizmu modelowania związków możemy posłużyć się za- równo przykładowymi związkami pomiędzy tabelą #/19+ 0+# a tabelą -.+ 0 +, jak i związkami pomiędzy tabelą #/19+ 0+# a tabelą 24# 190+ ;, ponieważ w obydwu przypadkach związki te są tworzone i obsługiwane na identycznych zasadach. Na razie zajmiemy się związkami pomiędzy tabelą #/19+ 0+# a tabelą -.+ 0 +, lecz w odpo- wiednim czasie wrócimy jeszcze do tabeli 24# 190+ ;. Aby wykorzystać kolumny 0T-NKGPVC w charakterze mechanizmu definiującego związki pomiędzy dwiema tabelami, każda z kolumn w o nazwie 0T-NKGPVC musi spełniać określone założenia. W skrócie można powiedzieć, że kolumna 0T-NKGPVC w tabeli -.+ 0 + musi być kluczem głównym, natomiast kolumna 0T-NKGPVC w tabeli #/1 9+ 0+# musi być kluczem obcym. W celu utworzenia związku „jeden do wielu” pomiędzy dwiema tabelami należy utwo- rzyć w jednej z nich klucz główny, w drugiej natomiast klucz obcy. Klucz główny określa stronę związku określaną przez „jeden”, natomiast klucz obcy definiuje stronę związku określaną przez „wiele”. Wartości kluczy są przez nas wykorzystywane do modelo- wania związków pomiędzy klientami i zamówieniami w śiwiecie rzeczywistym. Pojęcia kluczy głównych i obcych są bardzo istotne. Poiświęćmy im więc nieco uwagi. Klucze główne Wymagania dotyczące klucza głównego są dosyć jasne. Moglibyśmy wymienić je teraz po kolei, lecz wydaje się, że wydedukowanie ich przyniesie nieco więcej satysfakcji, a przede wszystkim będzie miało lepszy skutek pedagogiczny. Wiele zagadnień w relacyjnej teorii baz danych można dość łatwo wywieść za pomocą logiczniego rozumowania. Pamiętamy o tym, że kolumna 0T-NKGPVC w tabeli -.+ 0 + zawiera klucze główne tej tabeli. Zawartość pól w tej kolumnie identyfikuje poszczególnych klientów. Klucz o war- tości  identyfikuje Edwarda Dzikiego, klucz o wartości  Alicję Kwiatkowską, itd. Co stałoby się, gdyby klucz, identyfikujący Alicję Kwiatkowską, został zmieniony na wartość ? Tabele -.+ 0 + oraz #/19+ 0+# (patrz następna strona) wyglądałyby w tej sytuacji następująco: -.+ 0 + 0T-NKGPVC +OKG 0CYKUMQ  FYCTF KMK  #NKELC -YKCVMQYUMC  *GPT[M $GDQľP[  ,CPKPC -QđQYUMC Poprzez zamianę wartości jednego pola w tabeli -.+ 0 + nie można określić tego, komu należy przesłać rachunek za zamówienia numer  — nie wiemy, czy krzesło kupiła Alicja, czy Edward. (Dodatkowy problem występuje z zamówieniami o numerach ,  94 Część II ♦ Jednoużytkownikowa baza danych, zbudowana z wielu Jtabel #/19+ 0+# 0T COQYKGPKC 0T2TCEQYPKMC 0T-NKGPVC QUVCYEC GPC 6QYCT                ,CP5VTWI đ $KWTMQ  (CD/GDNK đ -TGUđQ  ,CP5VTWI đ 5VÎđ  $đ[UMUE đ .CORC  (CD/GDNK đ -TGUđQ  $đ[UMUE đ .CORC  ,CP5VTWI đ $KWTMQ oraz , lecz to zagadnienie omówimy w podrozdziale, w którym zajmować się będziemy kluczami obcymi.) Pierwszą zasadą dotyczącą kluczy głównych, którą udało nam się wydedukować, jest więc konieczność zachowania unikalności wszystkich kluczy głównych w tabeli, bowiem jakiekolwiek duplikaty nie będą toilerowane. Kolejną sytuacją, którą warto rozpatrzyć, jest brak wairtości klucza głównego w tabeli. -.+ 0 + 0T-NKGPVC +OKG 0CYKUMQ  FYCTF KMK  #NKELC -YKCVMQYUMC *GPT[M $GDQľP[  ,CPKPC -QđQYUMC #/19+ 0+# 0T COQYKGPKC 0T2TCEQYPKMC 0T-NKGPVC QUVCYEC GPC 6QYCT                ,CP5VTWI đ $KWTMQ  (CD/GDNK đ -TGUđQ  ,CP5VTWI đ 5VÎđ  $đ[UMUE đ .CORC  (CD/GDNK đ -TGUđQ  $đ[UMUE đ .CORC  ,CP5VTWI đ $KWTMQ W kolumnie -.+ 0 +0T-NKGPVC brakuje wartości dla klienta o nazwisku Henryk Bez- bożny. Czy w takim razie nie będzie on musiał płacić za zamówienia nr ? Niewiele lepsza będzie sytuacja, gdy tabele będą wyglądać tak: -.+ 0 + 0T-NKGPVC +OKG 0CYKUMQ  FYCTF KMK  #NKELC -YKCVMQYUMC *GPT[M $GDQľP[  ,CPKPC -QđQYUMC 94 (03-07-17) C:AndrzejPDFRelacyjne bazy danych 14-07.doc Rozdział 14. ♦ Modelowanie związków 95 #/19+ 0+# 0T COQYKGPKC 0T2TCEQYPKMC 0T-NKGPVC QUVCYEC GPC 6QYCT                ,CP5VTWI đ $KWTMQ  (CD/GDNK đ -TGUđQ ,CP5VTWI đ 5VÎđ  $đ[UMUE đ .CORC  (CD/GDNK đ -TGUđQ  $đ[UMUE đ .CORC  ,CP5VTWI đ $KWTMQ W tym przypadku odpowiedź nadal nie jest oczywista. Najlepszym sposobem na unik- nięcie takich niejasności jest zadbanie o to, by wszystkie pola w kluczu głównym posia- dały określoną wartość. Brak wartości w bazie danych określa się wartością NULL (zwaną również wartością pustą lub wartością zerową). Jest to dość specyficzna wartość, a jej obsługa w bazach danych wiąże się z dość ciekawymi kwestiami. Roz- dział 31., umieszczony w części IV, jest poświęcony w całości właśnie zagadnieniom związanym z wartością 07... W ten sposób udało nam się określić drugą zasadę dotyczącą kluczy głównych. Klucze główne nie mogą się powtarzać oraz nie mogą zawierać pusitych wartości. Systemy zarządzania bazami danych, takie jak MS Access, obsługują klucze główne z uwzględnieniem tych zasad. Należy tylko wskazać systemowi, które z kolumn zawie- rają klucze główne, a zastosuje on zabezpieczenia przed złamaniem tych reguł. Można się zastanawiać, czy rzeczywiście system jest w stanie sprawdzić, czy wartość pola będącego kluczem głównym, nie występuje już w tabeli, szczególnie w przypadku tabel zawierających setki tysięcy wierszy danych? W rzeczywistości mechanizmy obsługi kluczy głównych w porządnych relacyjnych systemach zarządzania bazą danych są w stanie dokonać takiego sprawdzenia w sposób tak szybki, że nie będzie to miało widocznego wpływu na czas, jaki zajmuje dopisanie wieirsza do tabeli. Wykorzystanie kilku kolumn w charakterze klucza głównego Przedstawione jak dotąd w tym podrozdziale wymagania (unikalność oraz konieczność określenia wartości) dotyczące kluczy głównych, nie ograniczają ich konstrukcji tylko do jednej kolumny. Możemy na przykład wykorzystać kolumny +OKG oraz 0CYKUMQ. Naruszenie zasady unikalności danych nastąpi wyłącznie w sytuacji, gdy pola obydwu kolumn będą identyczne w rozpatrywanym rekordzie danych. Możemy więc posiadać w naszej tabeli osoby o nazwisku Jan Kowalski oraz Jan Kowal, lecz nie możemy za- pisać dwóch osób o nazwisku Jan Kowalski. Wykorzystanie więcej niż jednej kolumny w charakterze klucza głównego jest więc jak najbardziej dopuszczalne, lecz z reguły nie jest zalecane. Bywają jednak przypadki, w których takie rozwiązanie ma pierw- szorzędne znaczenie. Jedno z takich zastosowań omówimy w podrozdziale, w którym zajmiemy się związkami typu „wiele do wielu”. 96 Część II ♦ Jednoużytkownikowa baza danych, zbudowana z wielu Jtabel Wybór właściwego klucza głównego Wybór klucza głównego dla tabeli może być trudny, dodatkowo sprawę tę komplikuje możliwość zastosowania do tego kilku kolumn tabeli.i Jak już wspomnieliśmy, istnieją sytuacje, w których wykorzystanie kilku kolumn w cha- rakterze klucza głównego stanowi jedyne rozsądne rozwiązanie. Jeśli jednak nie można znaleźć bezpośredniego powodu, dla którego mielibyśmy zdecydować się na klucz główny złożony z kilku kolumn, należy wybrać rozwiązanie na bazie pojedynczej kolumny. Nie jest to zasada niepodważalna — to tylko dobra rada. Klucze główne zbu- dowane na podstawie pojedynczej kolumny są łatwiejsze w obsłudze i z reguły działają szybciej. Oznacza to, że w przypadku zastosowania klucza głównego zbudowanego na podstawie pojedynczej kolumny, zapytania w bazie danyich będą wykonywane szybciej. Kolejny problem stanowi właściwy wybór kolumny. Podstawowym kryterium wyboru jest tutaj zapewnienie unikalności wartości w kolumnie. W przypadku tabeli pracow- ników wybór kolumny +OKG jest oczywiście dość kiepski, ponieważ istnieją wielkie szanse na to, że ich imiona będą się powtarzać. Jedna z anegdot na temat Billa Gatesa, założyciela i wieloletniego prezesa firmy Microsoft głosi, że jest to człowiek o skłonnościach paranoidalnych. Jednym z obja- wów choroby miałby być zakaz zatrudniania w firmie osób o takim samym imieniu, jakie nosi Prezes. W jednej z wersji tej anegdoty utorzymuje się, że zanim zatrudniono kolejnego Billa, liczba pracowników Microsoftu wynosiła powyżej pięciuset osób. Historia ta jest bardzo interesująca, lecz, niestety, nieprawdziwa. Bill Marklyn, współautor tej książki, został zatrudniony w firmie Microsoft na długo przed osią- gnięciem przez nią wspomnianej liczby pracowników. Można z tego wysnuć wnio- sek, że w Microsofcie nie stosuje się klucza głównego w tabeli 24# 190+ ;, zbudo- wanego na podstawie kolumny +OKG. Najprostszym i powszechnie stosowanym sposobem zapewnienia unikalności klucza głównego jest wykorzystanie do tego celu samego systemu bazy danych. Większość relacyjnych systemów zarządzania bazą danych posiada mechanizmy umożliwiające automatyczne generowanie unikalnych identyfikatorów dla każdego dopisywanego wiersza. Access na przykład udostępnia w tym celu specjalny typ danych o nazwie #WVQPWOGTQYCPKG. Jest to doskonałe rozwiązanie w przypadku identyfikacji obiektów, takich jak zamówienia, pracownicy, itd. Warto jednak zorientować się, czy w tabeli nie jest już zapisana informacja, zapewniająca unikalność danych dzięki swojej spe- cyficznej charakterystyce. Taką informacją w przypadku pracowników może być na przykład numer PESEL. Jest to z założenia unikalny i niezmienny identyfikator każ- dego obywatela Rzeczpospolitej Polskiej, więc jest idealny w celu zdefiniowania klu- cza głównego tabeli (w każdym razie w firmie zatrudniającej wyłącznie obywateli na- szego kraju)1. 1 Należy oczywiście wziąć pod uwagę realia. Jeśli zatzrudnienie w firmie obcokrajowców wchodzi w rachubę, zastosowanie numeru PESEL nie jest uzasadnione — przyp. tłum. 96 (03-07-17) C:AndrzejPDFRelacyjne bazy danych 14-07.doc Rozdział 14. ♦ Modelowanie związków 97 Generowanie naprawdę unikalnych identyfikatorów nie jest zadaniem tak prostym, ja- kim się może wydawać. Więcej informacji na ten temat omożna znaleźć w rozdziale 32. Definiowanie klucza głównego Definiowanie klucza głównego tabeli jest bardzo ważnym elementem w procesie jej konstruowania. Pomimo, że nie jest to książka na temat programu MS Access, sposób zdefiniowania klucza głównego zademonstrujemy na przykładzie tego programu. Ważne jest również spostrzeżenie różnicy pomiędzy kluczami głównymi a obcymi. Klucz główny należy zdefiniować na etapie definiowania struktury tabeli. Tworzenie klucza obcego nie musi natomiast być dokonywane w sposób jawny. Wykorzystanie wartości określo- nej kolumny w charakterze klucza obcego może zostać dokonane dopiero podczas two- rzenia złączenia tabel. W jaki sposób możemy zatem zdefiniować klucz główny w programie MS Access? Na etapie tworzenia struktury tabeli zaznaczamy odpowiedni wiersz. Następnie klikamy przycisk z ikoną klucza na pasku narzędzi. Najczęściej kolumna definiująca klucz główny jest umieszczana jako pierwsza w tabeli, nie jest to jednak konieczne. Jeśli wystąpi potrzeba zdefiniowania klucza głównego na większej ilości kolumn, zazna- czamy odpowiednie kolumny i klikamy przycisk z ikoną klucza. Warto zwrócić uwagę na to, że w nomenklaturze zastosowanej w polskiej wersji programu MS Access, klucze główne noszą nazwę kluczy podstawowych. Klucze obce Pozostaniemy przy naszym przykładzie, wykorzystującym tabele -.+ 0 + oraz #/1 9+ 0+#. Przejdźmy teraz do omówienia kluczy obcych w modelowaniu związków typu „jeden do wielu”. Klucz obcy jest po prostu referencją pewnego klucza głównego. W naszym przypadku kluczem obcym jest kolumna #/19+ 0+#0T-NKGPVC. Ponownie zastosujemy regułę intuicyjnego wyodrębniania zasad regulujących istnienie kluczy obcych. Weźmy pod uwagę wartości z poniższych tiabel. -.+ 0 + 0T-NKGPVC +OKG 0CYKUMQ  FYCTF KMK  #NKELC -YKCVMQYUMC  *GPT[M $GDQľP[  ,CPKPC -QđQYUMC Zwróćmy uwagę na ostatni wiersz tabeli #/19+ 0+#. Zawiera on wartość  w kolumnie 0T-NKGPVC. Jest to nieco dziwne, ponieważ w tabeli -.+ 0 + nie istnieje wiersz o takiej wartości w kolumnie 0T-NKGPVC. W tym przypadku nie jesteśmy w stanie określić 98 Część II ♦ Jednoużytkownikowa baza danych, zbudowana z wielu Jtabel #/19+ 0+# 0T COQYKGPKC 0T2TCEQYPKMC 0T-NKGPVC QUVCYEC GPC 6QYCT                ,CP5VTWI đ $KWTMQ  (CD/GDNK đ -TGUđQ  ,CP5VTWI đ 5VÎđ  $đ[UMUE đ .CORC  (CD/GDNK đ -TGUđQ  $đ[UMUE đ .CORC  ,CP5VTWI đ $KWTMQ adresata rachunku za zamówienie numer . Można się zatem domyślić, że tego typu sytuacja jest nie do przyjęcia w bazie danych. Stąd właśnie wynika pierwsza zasada, dotycząca kluczy obcych. Zasada ta wymusza stosowanie w kluczach obcych wyłącz- nie takich wartości, jakie występują w odpowiednim dlia nich kluczu głównym. Definiowanie klucza obcego Klucze obce są definiowane w ramach procesu definicji złączenia tabel. Proces ten zostanie omówiony w dalszej części niniejszego rozdiziału. Częściowe podsumowanie Zanim przejdziemy do kolejnych zagadnień, podsumujmy informacje, z którymi zapo- znaliśmy się do tej pory. Ponownie prezentujemy znane nam już tabele: -.+ 0 + 0T-NKGPVC +OKG 0CYKUMQ  FYCTF KMK  #NKELC -YKCVMQYUMC  *GPT[M $GDQľP[  ,CPKPC -QđQYUMC #/19+ 0+# 0T COQYKGPKC 0T2TCEQYPKMC 0T-NKGPVC QUVCYEC GPC 6QYCT                ,CP5VTWI đ $KWTMQ  (CD/GDNK đ -TGUđQ  ,CP5VTWI đ 5VÎđ  $đ[UMUE đ .CORC  (CD/GDNK đ -TGUđQ  $đ[UMUE đ .CORC  ,CP5VTWI đ $KWTMQ 98 (03-07-17) C:AndrzejPDFRelacyjne bazy danych 14-07.doc Rozdział 14. ♦ Modelowanie związków 99 Klucz główny Każda tabela w relacyjnej bazie danych musi posiadać klucz główny. Klucz taki składa się z co najmniej jednego pola (kolumny). Żadna z wartości klucza głównego nie może być pusta. Każdy z wierszy w tabeli musi posiadać unikalną wartość klucza głównego. Klucz główny jest definiowany na etapie definicji tabeili. Klucz obcy Klucze obce nie są wymaganym elementem tabel. Innymi słowy, każda tabela musi posiadać zdefiniowany klucz główny, lecz nie wszystkiie muszą definiować klucze obce. Jeśli istnieje związek pomiędzy dwiema tabelami, jedna z nich musi posiadać klucz obcy, na podstawie którego pobierane są odpowiednie dane z drugiej tabeli. W prak- tyce bywa tak, że większość tabel posiada klucze obce i zupełnie dopuszczalne jest występowanie więcej niż jednego klucza obcego w tabeli. Jeśli tak jest w istocie, tabela musi posiadać związki z kilkoma innymi tabelami. Definicja klucza obcego następuje podczas definicji złączenia. Złączenia Jak wspomnieliśmy na początku niniejszego rozdziału, narzędziami, służącymi do okre- ślania związków w ramach baz danych, są:  klucze (główne i obce),  złączenia. Nadszedł czas na omówienie drugiego z wymienionych narzędzi. W poprzednim roz- dziale zostały wymienione trzy możliwe typy związków, jakie można modelować w bazie danych:  „jeden do wielu”,  „wiele do wielu”,  „jeden do jednego”. Nasze rozważania dotyczące złączeń rozpoczniemy od najczęściej spotykanych związ- ków typu „jeden do wielu”. Związki typu „jeden do wielu” Załóżmy, że posiadamy dwie tabele: 100 Część II ♦ Jednoużytkownikowa baza danych, zbudowana z wielu Jtabel -.+ 0 + 0T-NKGPVC +OKG 0CYKUMQ  FYCTF KMK  #NKELC -YKCVMQYUMC  *GPT[M $GDQľP[  ,CPKPC -QđQYUMC #/19+ 0+# 0T COQYKGPKC 0T2TCEQYPKMC 0T-NKGPVC QUVCYEC GPC 6QYCT                ,CP5VTWI đ $KWTMQ  (CD/GDNK đ -TGUđQ  ,CP5VTWI đ 5VÎđ  $đ[UMUE đ .CORC  (CD/GDNK đ -TGUđQ  $đ[UMUE đ .CORC  ,CP5VTWI đ $KWTMQ Czy można określić typ związku pomiędzy tymi tabelami na podstawie ich zawartości? Odpowiedź brzmi: tak i nie. Nie możemy być absolutnie pewni co do typu związku, lecz możemy dokonać pewnych, bardzo prawdopodobnych ziałożeń. Możemy założyć, że #/19+ 0+#0T COQYKGPKC jest kluczem głównym. Pierwszą wska- zówką, pozwalającą nam na takie założenie, jest nazwa kolumny; drugą stanowią uni- kalne wartości w ramach tej kolumny. Podobne założenie możemy przyjąć na temat kolumny -.+ 0 +0T-NKGPVC. Można zaobserwować, że wartości w kolumnie #/19+ 0+#0T-NKGPVC odpowiadają wartościom w kolumnie -.+ 0 +0T-NKGPVC, dlatego bardzo prawdopodobne jest, że kolumna #/19+ 0+#0T-NKGPVC jest kluczem obcym. Czemu mają służyć powyższe dociekania? Nie namawiam czytelnika do tego, aby oglądał zawartość tabel w celu odgadnięcia typów związków pomiędzy nimi. Celem powyższego ćwiczenia jest uświadomienie czytelnikowi szczególnych własności, które pomagają w procesie definiowania związków pomiędzy tabelami i zarządzania nimi. Możemy więc zająć się procesem modelowania złączenia typu „jeden do wielu”. Proces ten składa się z następujących kroków:  Podejmujemy decyzję umieszczenia w bazie danych dwóich tabel, reprezentujących klasy obiektów zamówień oraz klientów.  Związek pomiędzy tymi klasami obiektów jest typu „jedein do wielu”, co oznacza, że klient może mieć związek z wieloma ziamówieniami.  Tworzymy tabele, reprezentujące wspomniane klasy obieiktów, nadając im nazwy -.+ 0 + oraz #/19+ 0+#.  Każda z wymienionych tabel będzie miała klucz głównyi, przede wszystkim dlatego, że taki jest wymóg w stosunku do tabel w relacyjnych bazach danych. Klucze główne nazwiemy -.+ 0 +0T-NKGPVC oraz #/19+ 0+#0T COQYKGPKC. 100 (03-07-17) C:AndrzejPDFRelacyjne bazy danych 14-07.doc Rozdział 14. ♦ Modelowanie związków 101  Ponieważ nasze tabele mają za zadanie odzwierciedlaći obiekty ze świata rzeczywistego, mamy zamiar modelować również związkii pomiędzy reprezentowanymi klasami obiektów. W naszym przypadku ibędzie to związek typu „jeden do wielu”.  W celu umożliwienia realizacji związku w bazie danycih musimy utworzyć odpowiedni klucz obcy w tabeli reprezentującej stronęi określaną przez „wiele”. W naszym przypadku będzie to tabela #/19+ 0+#.  Kolumna klucza obcego może mieć dowolną nazwę, jednaki powszechną praktyką jest nadawanie kolumnom tego typu takich samyich nazw, jakie posiadają kolumny klucza głównego, do którego się odnoiszą.  Do tabeli #/19+ 0+# dodajemy nową kolumnę o nazwie 0T-NKGPVC.  Wskazujemy systemowi bazy danych istnienie związku tiypu „jeden do wielu” pomiędzy rozpatrywanymi tabelami. W przypadku aplikacji MS Access zdefiniowanie złączenia poimiędzy tabelami polega na otwarciu Edytora relacji (ponieważ związki w polskiej wersji MS Access noszą na- zwę relacji, co jest w pewnym konflikcie z przyjętą terminologią dotyczącą relacyj- nych baz danych), dodaniu do relacji dwóch tabel, a następnie przeciągnięciu nazwy kolumny -.+ 0 +0T-NKGPVC na #/19+ 0+#0T-NKGPVC. Po otworzeniu się okna zatytu- łowanego Edytowanie relacji należy zaznaczyć opcję Wymuszaj więzy integralności. Utworzenie związku zatwierdzamy przez kliknięcie przycisku OK. Osoby zaintereso- wane znaczeniem wspomnianych więzów integralności odsyłam do rozdziału 16., zatytu- łowanego „Integralność danych”. Rysunek 14.1. W operacji przedstawionej na rysunku 14.1 zdefiniowano złączenie tabel w bazie danych. Efektem dodatkowym było nadanie kolumnie #/19+ 0+#0T-NKGPVC roli klucza obcego. W konsekwencji tej zmiany system odmówi wprowadzenia do kolumny #/19+ 0+#0T -NKGPVC jakiejkolwiek wartości nie występującej w kluczu głównym, do którego odnosi się klucz obcy, reprezentowany przez tę kolumnę. 102 Część II ♦ Jednoużytkownikowa baza danych, zbudowana z wielu Jtabel Przedstawiony przez nas proces definiowania złączenia w systemie Access unaocznił, w jaki sposób złączenia oraz klucze są wzajemnie ze sobą powiązane. W celu zdefi- niowania złączenia, podobnego do omówionego powyżej, należy wcześniej zdefiniować klucz główny, a także utworzyć kolumnę, która ma realizować funkcję klucza obcego. Dopiero jednak utworzenie złączenia tabel nada kolumniie rolę klucza obcego. Należy zdawać sobie sprawę z kilku faktów, dotyczących definiowania złączeń tabel. Złączenie (z wymuszeniem więzów integralności) nie zostanie utworzone w przypad- ku, gdy:  kolumna wskazana po stronie „jeden” związku nie jest kiluczem głównym,  typy danych w łączonych kolumnach nie są identyczne,  w polach klucza obcego (strona „wiele”) istnieją wartości, które nie występują w polach klucza głównego (strona „jeden”). Wspomnieliśmy wcześniej o istnieniu możliwości wykorzystania w Accessie kolumn typu #WVQPWOGTQYCPKG w charakterze kluczy głównych tabel. Kolumny tego typu nie możemy zastosować w charakterze klucza obcego. Typem odpowiadającym typowi #WVQ PWOGTQYCPKG, który może zostać zastosowany w charakterze odpowiedniego klucza obcego, jest typ .KEDQY[, podtyp .KEDCECđMQYKVCFđWIC .QPI+PVGIGT . Nie jest to, jak mo- głoby się wydawać, złamanie wymogu identyczności typów danych w kluczach głów- nych i wskazujących na nie kluczach obcych. Typ #WVQPWOGTQYCPKG jest specjalnym przy- padkiem typu .KEDC ECđMQYKVC FđWIC .QPI +PVGIGT , z tą różnicą, że wartości w kolumnach tego typu podlegają automatycznemu zwiększaniu podczas dopisywania nowej kolumny. Związki typu „jeden do jednego” Związki typu „jeden do jednego” stosowane są raczej dość rzadko. Tworzenie ich jest jednak bardzo proste, ponieważ proces definicji złączeń tabel w takich związkach jest bardzo podobny do definicji złączenia tabel w związkach typu „jeden do wielu”. Podobnie jak miało to miejsce w przypadku związków typu „jeden do wielu”, należy przeciągnąć nazwę kolumny z klucza głównego na nazwę kolumny klucza obcego. Jedyna różnica polega na tym, że klucz obcy w tym przypadku nie może zawierać zduplikowanych wartości. Istnieją dwie metody zapewnienia unikalności wartości w ramach kolumn kluczy obcych. Pierwsza metoda polega na utworzeniu klucza obcego tabeli na podstawie jej klucza głównego. Innymi słowy, złączenie nastąpi pomiędzy kluczami głównymi dwóch tabel, z których jeden będzie również pełnił rolę klucza oibcego. Drugi sposób polega na utworzeniu indeksu bez powtórzeń na kolumnie klucza obcego. Taka operacja spowoduje, że jako wartości pól w tej kolumnie nie zostaną przyjęte wartości już występujące. Ten właśnie sposób na zapewnienie unikalności danych w kolumnie omówimy nieco szerzej. 102 (03-07-17) C:AndrzejPDFRelacyjne bazy danych 14-07.doc Rozdział 14. ♦ Modelowanie związków 103 W przykładowej bazie danych każdemu pracownikowi musi zostać przyznany pokój do wyłącznego wykorzystania, lecz ze względu na koszty żaden pracownik nie może mieć do dyspozycji więcej niż jeden pokój. 24# 190+ ; 0T2TCEQYPKMC +OKG 0CYKUMQ CVC7TQFGPKC CVC CVTWFPKGPKC  ,CP -QYCNUMK MYK OCL  /CTKC 0QYCM OCT UV[  [IOWPV FWP OCL MYK  QHKC -YKCVMQYUMC MYK MYK  5VGHCP CTPGEMK MYK MYK  9đCF[UđCY /Cđ[ OCL OCL 21-1, 0T2QMQLW 0T2TCEQYPKMC         Kolumna 24# 190+ ;0T2TCEQYPKMC jest kluczem głównym, więc w jej przypadku nie są dopuszczalne powtórzenia. Na kolumnie 21-1, 0T2TCEQYPKMC w trakcie projektowania tabeli został założony unikalny indeks, więc również w tym przypadku nie są dopuszczal- ne powtórzenia. Dodatkowo kolumna 21-1, 0T2TCEQYPKMC jest kluczem obcym, więc wartości pól tej kolumny muszą odpowiadać istniejącym wartościom pól kolumny odpowiedniego klucza głównego, to znaczy kolumny 24# 190+ ;0T2TCEQYPKMC. Z tego powodu poniższa tabela zawiera nieprawidłową zawartość w kolumnie klucza ob- cego, ponieważ wartość  nie występuje w kolumnie klucza głównego tabeli 24# 190+ ;: 21-1, 0T2QMQLW 0T2TCEQYPKMC         Także zawartość tabeli zaprezentowanej poniżej jest niedopuszczalna, ponieważ war- tość  występuje dwukrotnie w kolumnie 21-1, 0T2TCEQYPKMC: 21-1, 0T2QMQLW 0T2TCEQYPKMC         104 Część II ♦ Jednoużytkownikowa baza danych, zbudowana z wielu Jtabel Utworzenie związku typu „jeden do jednego” wymaga wykorzystania Edytora relacji. Dodajemy do relacji tabele 24# 190+ ; oraz 21-1, (poprzez wykorzystanie przycisku Pokaż tabele z paska narzędzi). Przeciągamy nazwę kolumny 24# 190+ ;0T2TCEQYPKMC na nazwę kolumny 21-1, 0T2TCEQYPKMC. Po pojawieniu się okna zatytułowanego Edy- towanie relacji zaznaczamy opcję Wymuszaj więzy integralności. Zwróćmy uwagę na to, że w tym przypadku domyślnym typem złączenia jest „jeden do jednego”. Zatwierdzamy utworzenie złączenia, klikając przycisk OK (rysunek 14.2). Rysunek 14.2. Ważne jest ustanowienie unikalnego indeksu na kolumnie 21-1, 0T-NKGPVC przed zdefiniowaniem złączenia. Należy również zdawać sobie sprawę z tego, że pomimo istnienia związku pomiędzy dwoma kluczami głównymi, związek ten nie jest symetryczny. W tabeli zawierającej klucz główny złączenia (na przykład 24# 190+ ;), mogą istnieć elementy, które nie będą występować w tabeli definiującej klucz obcy (na przykład 21-1, ). Niedopusz- czalna jest jednak sytuacja odwrotna (istnienie wartości klucza obcego, nie występu- jących w kluczu głównym złączenia). Związki typu „wiele do wielu” Związki typu „wiele do wielu” są stosunkowo powszechne. Ich reprezentacja w bazie danych może początkowo wydać się skomplikowana, lecz z chwilą, gdy opanujemy zasady, tworzenie tego typu związków okaże się bardzoi łatwe. Rozważmy związki pomiędzy klientami a pracownikami. Każdy klient może być obsłu- giwany przez różnych pracowników, każdy z pracowników natomiast ma do czynienia z wieloma klientami. Dlatego właśnie związki pomiędzy pracownikami a klientami są typu „wiele do wielu”. Kolejnym pytaniem, na które należy sobie odpowiedzieć, jest: „przez co warunkowane są powiązania pomiędzy klientami a pracownikami?”. Możliwe jest nawią- zywanie kontaktów klientów z pracownikami bez dokonywania jakichkolwiek zakupów, lecz najprawdopodobniej tego typu kontakty nie mają znaczenia, przynajmniej z punktu 104 (03-07-17) C:AndrzejPDFRelacyjne bazy danych 14-07.doc Rozdział 14. ♦ Modelowanie związków 105 widzenia naszej bazy danych. Jedynym ważnym rodzajem kontaktów klientów z naszymi pracownikami jest kontakt związany z realizacją zamówień. Za każdym razem, gdy kupo- wany jest towar, zostaje złożone zamówienie. Zatem możemy stwierdzić, że powiązania pomiędzy klientami a pracownikami warunkowane są przezi te zamówienia. Zastanówmy się teraz nad powiązaniami pomiędzy klientami a zamówieniami. Są to związki typu „jeden do wielu”. Tego samego typu związki istnieją pomiędzy pracow- nikami a zamówieniami. -.+ 0 + 0T-NKGPVC +OKG 0CYKUMQ  FYCTF KMK  #NKELC -YKCVMQYUMC  *GPT[M $GDQľP[  ,CPKPC -QđQYUMC #/19+ 0+# 0T COQYKGPKC 0T2TCEQYPKMC 0T-NKGPVC QUVCYEC GPC 6QYCT                ,CP5VTWI đ $KWTMQ  (CD/GDNK đ -TGUđQ  ,CP5VTWI đ 5VÎđ  $đ[UMUE đ .CORC  (CD/GDNK đ -TGUđQ  $đ[UMUE đ .CORC  ,CP5VTWI đ $KWTMQ 24# 190+ ; 0T2TCEQYPKMC +OKG 0CYKUMQ CVC7TQFGPKC CVC CVTWFPKGPKC  ,CP -QYCNUMK MYK OCL  /CTKC 0QYCM OCT UV[  [IOWPV FWP OCL MYK  QHKC -YKCVMQYUMC MYK MYK  5VGHCP CTPGEMK MYK MYK  9đCF[UđCY /Cđ[ OCL OCL Być może wyda się to nieprawdopodobne, lecz dla utworzenia pary związków typu „jeden do wielu” w taki sposób, jaki opisaliśmy powyżej, wystarczy, aby powstał związek typu „wiele do wielu”. W naszym przypadku, niejako samoistnie, powstał związek typu „wiele do wielu” pomiędzy tabelami -.+ 0 + oraz 24# 190+ ;. Tak naprawdę nie ist- nieje w systemach relacyjnych baz danych żaden dodatkowy mechanizm, definiujący związki „wiele do wielu”. Zawsze w przypadku konieczności utworzenia takiego związku posługujemy się dwoma związkami typu „jeden do wielu”. Istnieje jednak wymóg utworzenia tych powiązań w taki sposób, jak zostało to przed- stawione na rysunku 14.3. 106 Część II ♦ Jednoużytkownikowa baza danych, zbudowana z wielu Jtabel Rysunek 14.3. Dowolne dwa związki typu „jeden do wielu”, obejmujące trzy tabele, nie oznaczają jeszcze związku „wiele do wielu”, czego przykładem może być sytuacja przedstawiona na rysunku 14.4. Rysunek 14.4. Z mojego doświadczenia wynika, że dość często można znaleźć tabelę, która będzie pomocna w celu utworzenia związku typu „wiele do wielu”. W naszym przykładzie stała się nią tabela #/19+ 0+#. Bywają jednak sytuacje, gdy taka tabela nie istnieje. Warto o tym wspomnieć, aby przybliżyć czytelnikowi problemy, które dość często mogą wystąpić w pracach nad rzeczywistymi bazami danych. W celu ilustracji posłu- żymy się ponownie naszą bazą danych. Dokonamy na niej kolejnych modyfikacji, zwiększając nieco poziom jej realizmu. Nasz przykład wyjaśni również, w jakich sytu- acjach niezbędny może okazać się klucz główny zbudowany na dwóch kolumnach. Konieczność zastosowania kluczy głównych zbudowanych na kilku kolumnach Rozpatrzmy nasz przykład z rozdziału 12. Zidentyfikowaliśmy w nim sześć klas obiektów:  klienci,  towary,  zamówienia,  pr
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Relacyjne bazy danych
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: