Download as pdf or txt
Download as pdf or txt
You are on page 1of 32

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Relacyjne bazy danych


Autorzy: Mark Whitehorn, Bill Marklyn
Tumaczenie: Marek Ptlicki
ISBN: 83-7361-095-2
Tytu oryginau: Inside Relational Databases 2nd Edition
Format: B5, stron: 338

Relacyjne bazy danych stanowi podstaw wikszoci wspczesnych systemw


informatycznych. Cho poszczeglne systemy zarzdzania bazami danych rni si
midzy sob w wielu aspektach, s jednak oparte na wsplnych podstawach
teoretycznych. Jeli zrozumiesz ten wsplny fundament, bdziesz mg z atwoci
budowa na nim wasne aplikacje, niezalenie od tego, czy jako systemu bazodanowego
uyjesz komercyjnego Oracle'a lub MS SQL-a, czy te bezpatnego PostgreSQL.
Ksika Relacyjne bazy danych zostaa napisana w celu jak najbardziej przystpnego
objanienia zagadnie relacyjnego modelu danych oraz jego znaczenia dla projektantw
i twrcw baz danych. Objanienia tych, czsto skomplikowanych zagadnie, przybliaj
tajniki relacyjnego modelu danych wykorzystujc przykady, a nie wzory matematyczne.
Dziki ich zrozumieniu bdziesz mg projektowa bazy danych szybsze, bardziej
elastyczne i lepiej dopasowane do zada, jakie maj realizowa.
Poznasz:
Podstawowe pojcia zwizane z bazami danych: tabele, rekordy, pola
Sposoby pobierania danych za pomoc zapyta
Tworzenie raportw z wyselekcjonowanych danych
Projektowanie baz z uwzgldnieniem zwizkw midzy danymi, klucze i indeksy
Sposoby przestrzegania regu integralnoci danych
Tworzenie zaawansowanych wielowarstwowych aplikacji opartych o bazy danych
Programowanie wyzwalaczy, procedur zapisanych, uycie perspektyw
Zastosowania transakcji
Teori baz danych: reguy Codda, normalizacj
Jzyk SQL
Dr Mark Whitehorn dysponuje ogromn wiedz w dziedzinie teorii relacyjnych baz
danych. Dziki cyklowi artykuw w brytyjskim magazynie Personal Computer World
udao mu si przybliy j tysicom uytkownikw. Po prostu doskonaa. Wyjaniajc
tajniki zagadnie zwizanych z relacyjnymi bazami danych, Mark Whitehorn oraz Bill
Marklyn osignli o wiele wicej ni inni autorzy. Uczynili ten temat ciekawym, a nawet
wrcz zabawnym, co stawia ich poza zasigiem jakiejkolwiek konkurencji.
Neil Fawcett, Edytor techniczny, VNU Business Publications

Spis treci
Przedmowa do drugiego wydania ........................................................ 9
Rozdzia 1. Wstp ............................................................................................. 11
Czym jest baza danych? ....................................................................................................11
Bazy danych a systemy zarzdzania nimi .........................................................................12
Systemy obsugi relacyjnych baz danych..........................................................................12
Cel powstania ksiki........................................................................................................13
Kto powinien przeczyta t ksik? ................................................................................15
Struktura ksiki................................................................................................................16
Dodatkowe uwagi..............................................................................................................17
Podzikowania ..................................................................................................................18

Cz I

Prosta baza danych ........................................................19

Rozdzia 2. Wstp do czci pierwszej ............................................................... 21


Tabele ................................................................................................................................21
Formularze ........................................................................................................................22
Zapytania...........................................................................................................................22
Raporty ..............................................................................................................................23

Rozdzia 3. Tabele ............................................................................................. 25


Wiersze i kolumny rekordy i pola ................................................................................26
Tworzenie tabeli................................................................................................................28
Typy danych................................................................................................................29
Rozmiar pola...............................................................................................................34
Oglne porady dotyczce projektowania tabel ...........................................................35
Tabele podstawowe ...........................................................................................................39

Rozdzia 4. Formularze....................................................................................... 41
Wykorzystanie kilku formularzy obsugujcych pojedyncz tabel.................................44
Pola tekstowe udostpniane tylko do odczytu...................................................................44
Pola tekstowe zawierajce poczone dane z kilku pl.....................................................45
Nie wszystkie pola tabeli musz wystpowa w formularzu............................................46
Kontrola wprowadzanych danych.....................................................................................47
Wykorzystanie formularzy moe by kontrolowane ........................................................47
Formularze mog by stronami WWW ............................................................................47
Podsumowanie ..................................................................................................................48

Rozdzia 5. Zapytania ........................................................................................ 51


Pobieranie danych za pomoc zapyta..............................................................................51
Zapytania, tabele wynikowe oraz tabele podstawowe ......................................................52

Relacyjne bazy danych


Wyliczanie danych ............................................................................................................56
Inne rodzaje zapyta..........................................................................................................57
Graficzne narzdzia suce do tworzenia zapyta...........................................................57
SQL i perspektywy............................................................................................................58

Rozdzia 6. Raporty ........................................................................................... 59


Rozdzia 7. Podsumowanie czci pierwszej ....................................................... 61

Cz II

Jednouytkownikowa baza danych,


zbudowana z wielu tabel .................................................65

Rozdzia 8. Wstp do czci drugiej ................................................................... 67


Rozdzia 9. Problemy z pojedynczymi tabelami.................................................... 69
Nadmiarowo danych ......................................................................................................70
Bdy typograficzne ..........................................................................................................70
Aktualizacja danych ..........................................................................................................71
Modyfikacja danych..........................................................................................................72
Podsumowanie ..................................................................................................................72

Rozdzia 10. Zastosowanie kilku tabel ................................................................. 75


Nadmiarowo danych ......................................................................................................77
Bdy typograficzne ..........................................................................................................79
Aktualizacja danych ..........................................................................................................79
Modyfikacja danych..........................................................................................................80

Rozdzia 11. Wspdziaanie wielu tabel ............................................................... 81


Bazy danych s zaprojektowane w celu modelowania wiata rzeczywistego ..................82

Rozdzia 12. Prawidowy projekt tabel.................................................................. 83


Kilka sw na temat normalizacji i modelowania zwizkw encji ...................................85
Identyfikacja klas obiektw ..............................................................................................85

Rozdzia 13. Zwizki w wiecie rzeczywistym....................................................... 89


Zwizki typu jeden do wielu .............................................................................................89
Zwizki typu jeden do jednego .........................................................................................90
Zwizki typu wiele do wielu .............................................................................................90
Brak zwizku.....................................................................................................................90

Rozdzia 14. Modelowanie zwizkw .................................................................... 91


Klucze gwne...................................................................................................................93
Wykorzystanie kilku kolumn w charakterze klucza gwnego ..................................95
Wybr waciwego klucza gwnego .........................................................................96
Definiowanie klucza gwnego...................................................................................97
Klucze obce .......................................................................................................................97
Definiowanie klucza obcego.......................................................................................98
Czciowe podsumowanie ................................................................................................98
Klucz gwny ..............................................................................................................99
Klucz obcy ..................................................................................................................99
Zczenia ...........................................................................................................................99
Zwizki typu jeden do wielu ...................................................................................99
Zwizki typu jeden do jednego .............................................................................102
Zwizki typu wiele do wielu .................................................................................104
Oglne informacje na temat zcze.........................................................................111

Spis treci

Rozdzia 15. Ponowna analiza czterech elementw baz danych ........................... 117
Tabele ..............................................................................................................................120
Zapytania.........................................................................................................................121
Formularze ......................................................................................................................127
Raporty ............................................................................................................................128

Rozdzia 16. Integralno danych....................................................................... 131


Integrowanie danych opacalny wysiek ....................................................................131
Bdy integralnoci danych i ich przyczyny ...................................................................132
Bdy w unikalnych danych w ramach pojedynczego rekordu ................................133
Bdy w standardowych danych w ramach pojedynczego rekordu ..........................133
Bdy pomidzy danymi w rnych polach..............................................................135
Bdy pomidzy kluczami w rnych tabelach ........................................................136
Inne zagadnienia dotyczce integralnoci .......................................................................142
Definiowanie zasad integralnoci danych w systemie ....................................................143
Deklarowana i proceduralna integralno odwoa ........................................................144

Rozdzia 17. Budowanie aplikacji wykorzystujcej baz danych........................... 147


Wykorzystanie narzdzi graficznych, makr oraz jzykw skryptowych........................149
Tworzenie prostego interfejsu...................................................................................149
Wykorzystanie narzdzi graficznych........................................................................150
Wykorzystanie makra ...............................................................................................151
Wykorzystanie jzyka programowania.....................................................................152
Ktre z rozwiza jest najlepsze? .............................................................................154
Inne jzyki SQL .........................................................................................................156

Rozdzia 18. Podsumowanie czci drugiej......................................................... 157

Cz III Bazy danych w rodowisku wielouytkownikowym .........159


Rozdzia 19. Architektura baz danych ................................................................ 161
Siedem elementw architektury ......................................................................................161
Element pierwszy......................................................................................................162
Element drugi............................................................................................................162
Element trzeci ...........................................................................................................162
Element czwarty........................................................................................................162
Element pity ............................................................................................................163
Element szsty ..........................................................................................................163
Element sidmy ........................................................................................................163
Interfejs aplikacji na komputerze klienta, baza danych na serwerze ..............................164
Architektura klient-serwer (dwuwarstwowa)..................................................................167
Architektura trjwarstwowa (wielowarstwowa) .............................................................169
Aplikacje internetowe .....................................................................................................170
Wybr odpowiedniej architektury...................................................................................172
Podsumowanie ................................................................................................................173

Rozdzia 20. Bardziej skomplikowane projekty baz danych.................................. 175


Model uytkownika.........................................................................................................177
Model logiczny................................................................................................................177
Model fizyczny................................................................................................................178
Model logiczny i fizyczny w praktyce ............................................................................179
Podsumowanie czciowe ...............................................................................................182
Kolejna wielka zaleta narzdzi CASE ............................................................................183
Rnice pomidzy modelem logicznym a fizycznym.....................................................184
Normalizacja ...................................................................................................................186

Relacyjne bazy danych


Inynieria odwrotna.........................................................................................................187
Rne metodologie..........................................................................................................187

Rozdzia 21. Wyzwalacze, zapisane procedury oraz perspektywy ......................... 189


Wyzwalacze ....................................................................................................................189
Terminologia wyzwalaczy ........................................................................................190
Typowe zastosowanie wyzwalaczy, wywoywanych przed i po zdarzeniu .............190
Wicej informacji na temat wyzwalaczy ..................................................................191
Zapisane procedury .........................................................................................................191
Wyzwalacze i zapisane procedury podsumowanie ....................................................192
Perspektywy ....................................................................................................................193

Rozdzia 22. Transakcje, dzienniki, kopie zapasowe, blokowanie i wspbieno .. 197


Transakcje .......................................................................................................................197
Wycofanie .......................................................................................................................198
Dzienniki...................................................................................................................198
Przywrcenie transakcji ..................................................................................................201
Archiwizowanie dziennikw ....................................................................................201
Lokalizacja ......................................................................................................................202
Strategie wykonywania kopii zapasowych .....................................................................202
Zalecenia ...................................................................................................................203
Inne moliwoci ........................................................................................................204
Blokowanie......................................................................................................................204
Zakleszczenia............................................................................................................205
Wspbieno ................................................................................................................206
Blokowanie wierszy i stron .............................................................................................207
Co czeka nas w kolejnych rozdziaach............................................................................207
Rozwizanie testu............................................................................................................207

Cz IV Tematy zwizane z bazami danych ................................209


Rozdzia 23. Relacyjne i nierelacyjne bazy danych .............................................. 211
Wiele tabel a relacyjno baz danych .............................................................................211
Nazewnictwo...................................................................................................................212

Rozdzia 24. Reguy Codda ................................................................................ 215


Do czego potrzebna jest znajomo regu Codda............................................................215
Zwizo a czytelno....................................................................................................216
Krtkie wprowadzenie ....................................................................................................216
Reguy .............................................................................................................................216
Podsumowanie ................................................................................................................226

Rozdzia 25. Normalizacja.................................................................................. 229


Normalizacja ...................................................................................................................229
Zaleno funkcyjna........................................................................................................231
Definicja wymaga ...................................................................................................232
Pierwsza forma normalna................................................................................................234
Druga forma normalna ....................................................................................................236
Odpowiedzi ...............................................................................................................239
Trzecia forma normalna ..................................................................................................240
Podsumowanie czciowe ...............................................................................................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 treci

7
Dalsze postpowanie .......................................................................................................242
Przykad praktyczny..................................................................................................243
Normalizacja a usuwanie wszelkiej nadmiarowoci.......................................................245
Podsumowanie ................................................................................................................251

Rozdzia 26. Katalog systemowy........................................................................ 253


Katalog systemowy .........................................................................................................253

Rozdzia 27. Operacje na danych ....................................................................... 255


Operatory relacyjne .........................................................................................................255
Selekcja .....................................................................................................................257
Projekcja ...................................................................................................................257
Suma .........................................................................................................................258
Rnica .....................................................................................................................259
Przecicie ..................................................................................................................260
Iloczyn.......................................................................................................................260
Zczenie ...................................................................................................................262
Podzia.......................................................................................................................262
Podsumowanie ................................................................................................................264

Rozdzia 28. SQL ............................................................................................... 267


SELECT oraz FROM ......................................................................................................270
DISTINCT ................................................................................................................270
WHERE ....................................................................................................................271
Warunki.....................................................................................................................272
ORDER BY ..............................................................................................................275
Wzorce dopasowa ...................................................................................................277
Podzapytania .............................................................................................................278
Funkcje wbudowane .................................................................................................279
GROUP BY ..............................................................................................................282
GROUP BY...HAVING............................................................................................287
Praca z wieloma tabelami .........................................................................................289
Zczenia wewntrzne...............................................................................................293
Zczenia zewntrzne................................................................................................293
Suma tabel.................................................................................................................295
Podsumowanie instrukcji SELECT ..........................................................................298
INSERT...........................................................................................................................299
UPDATE .........................................................................................................................301
DELETE..........................................................................................................................303
Analiza przypadku...........................................................................................................304
DISTINCTROW .............................................................................................................306
Podsumowanie ................................................................................................................310

Relacyjne bazy danych

Rozdzia 29. Dziedziny ....................................................................................... 311


Rozdzia 30. Indeksy przypieszanie dziaania bazy danych ............................. 313
Rozdzia 31. Znaczenie wartoci NULL ............................................................... 319
Rozdzia 32. Klucze gwne ............................................................................... 323

Dodatki .......................................................................................327
Dodatek A Sowniczek .................................................................................... 329
Skorowidz...................................................................................... 331

Rozdzia 14.

Modelowanie zwizkw
Udao nam si umieci klasy obiektw w tabelach bazy danych. Znamy rwnie sie
zalenoci, istniejcych pomidzy obiektami. Kolejnym zadaniem bdzie odwzorowanie tych zwizkw w bazie.
Do realizacji tego zadania bd nam potrzebne pewne narzdzia:
 klucze gwne oraz obce;
 zczenia.

Te dwa pojcia okrelaj dwa rne typy narzdzi, udostpnianych przez relacyjne bazy
danych, lecz najczciej oba s wykorzystywane jednoczenie. Na przykad: przed zdefiniowaniem zczenia naley utworzy jeden lub kilka kluczy gwnych, za dopiero
zbudowanie zczenia nadaje sens istnieniu klucza gwnego. Nie naley przejmowa
si tym, e nazwy tych mechanizmw brzmi dla nas niezrozumiale; w rzeczywistoci
s to do proste pojcia. Zrozumienie ich jest jednak bardzo wanym krokiem, bowiem
dziki nim wiele zagadnie relacyjnych baz danych nabiera gbszego sensu. Trudno
byoby wyobrazi sobie istnienie relacyjnych baz danych bez kluczy i zcze.
Zagadnienia dotyczce kluczy i zcze najprociej omawia na podstawie przykadu.
Jednym z najczciej stosowanych zwizkw s zwizki typu jeden do wielu, omwione w poprzednim rozdziale. Przedstawilimy tam zwizek pomidzy klientami
oraz zamwieniami. Wykorzystamy ten przykad take i tutaj.
Pamitajmy o stosowanej konwencji nazewnictwa:  okrelaj nazwy
tabel, natomiast
    okrelaj nazwy kolumn. Odwoania do kolumn
w tabeli s zapisywane jako nazwa tabeli, po ktrej widnieje kropka, a nastpnie
nazwa kolumny. Dlatego zapis   okrela kolumn  
tabeli .

Jedna z zaprezentowanych tu tabel przedstawia uproszczon wersj tabeli 


,
zawierajc odnoniki do tabeli  oraz  :

Cz II Jednouytkownikowa baza danych, zbudowana z wielu tabel

92




 

 

 


 

  

 



 

 



  

  



 



 



 !"##

 

$%& 

 '"##





'(!"##

)

 % %

!#"##

*+,

$%& 

 '"##

 % %

!#"##

*+,



 !"##

 





  


 

        

 

  

( (-..

#(+ (---

 &

/

(+(-00

#(###

 1+

1

#(+ (-00

#( ##

 12

  

#  (-..

#( ##

 2

3 

( (-..

#( ##

 4

&

#(+ (-.0

#(+ ##'

Tabele te odnale mona w pliku R14.MDB. W celu zwikszenia ich czytelnoci klucze
gwne zostay zapisane wytuszczon czcionk, natomiast klucze obce kursyw.
Zdaj sobie spraw z tego, e tabela 
 jest daleka od doskonaoci, poniewa nadal zawiera informacje nadmiarowe (dotyczce towarw). Zamiast tego
naleaoby zastosowa osobn tabel  . Jest to jednak zabieg celowy chciaem unikn nadmiernej komplikacji. Udoskonaleniem tabeli 
 zajmiemy
si w dalszej czci niniejszego rozdziau.

Po bliszym zapoznaniu si z tabelami  oraz 


 moemy zauway, e
dane czce te tabele, znajduj si w dwch kolumnach (po jednej w kadej z tabel)
o tej samej nazwie ( ). Bez trudu mona domyli si, e liczba  w kolumnie
 , w pierwszym wierszu tabeli 
, oznacza, e pani Alicja Kwiatkowska zakupia biurko. Liczba  w tym miejscu jest wykorzystana w charakterze
wskanika rekordu w tabeli , zawierajcego dane pani Alicji. Analogicznie, na
podstawie innych danych moemy dowiedzie si, e zamwienie zrealizowa pracownik Jan Kowalski.

92 (03-07-17)

C:\Andrzej\PDF\Relacyjne bazy danych\r14-07.doc

Rozdzia 14. Modelowanie zwizkw

93

W celu wyjanienia mechanizmu modelowania zwizkw moemy posuy si zarwno przykadowymi zwizkami pomidzy tabel 
 a tabel , jak
i zwizkami pomidzy tabel 
 a tabel  , poniewa w obydwu
przypadkach zwizki te s tworzone i obsugiwane na identycznych zasadach. Na razie
zajmiemy si zwizkami pomidzy tabel 
 a tabel , lecz w odpowiednim czasie wrcimy jeszcze do tabeli  .
Aby wykorzysta kolumny   w charakterze mechanizmu definiujcego zwizki
pomidzy dwiema tabelami, kada z kolumn w o nazwie   musi spenia
okrelone zaoenia. W skrcie mona powiedzie, e kolumna   w tabeli
 musi by kluczem gwnym, natomiast kolumna   w tabeli 

 musi by kluczem obcym.
W celu utworzenia zwizku jeden do wielu pomidzy dwiema tabelami naley utworzy w jednej z nich klucz gwny, w drugiej natomiast klucz obcy. Klucz gwny okrela
stron zwizku okrelan przez jeden, natomiast klucz obcy definiuje stron zwizku
okrelan przez wiele. Wartoci kluczy s przez nas wykorzystywane do modelowania zwizkw pomidzy klientami i zamwieniami w wiecie rzeczywistym.
Pojcia kluczy gwnych i obcych s bardzo istotne. Powimy im wic nieco uwagi.

Klucze gwne
Wymagania dotyczce klucza gwnego s dosy jasne. Moglibymy wymieni je teraz po
kolei, lecz wydaje si, e wydedukowanie ich przyniesie nieco wicej satysfakcji, a przede
wszystkim bdzie miao lepszy skutek pedagogiczny. Wiele zagadnie w relacyjnej teorii
baz danych mona do atwo wywie za pomoc logicznego rozumowania.
Pamitamy o tym, e kolumna   w tabeli  zawiera klucze gwne tej
tabeli. Zawarto pl w tej kolumnie identyfikuje poszczeglnych klientw. Klucz o wartoci  identyfikuje Edwarda Dzikiego, klucz o wartoci  Alicj Kwiatkowsk, itd.
Co staoby si, gdyby klucz, identyfikujcy Alicj Kwiatkowsk, zosta zmieniony na
warto ? Tabele  oraz 
 (patrz nastpna strona) wygldayby w tej
sytuacji nastpujco:




 

 

 


 

  

 



 

 

Poprzez zamian wartoci jednego pola w tabeli  nie mona okreli tego, komu
naley przesa rachunek za zamwienia numer  nie wiemy, czy krzeso kupia
Alicja, czy Edward. (Dodatkowy problem wystpuje z zamwieniami o numerach , 

Cz II Jednouytkownikowa baza danych, zbudowana z wielu tabel

94


  

     



 

 

 !"##  

 $%& 

 '"## 

 

'(!"## )

  % %

!#"## *+,

 $%& 

 '"## 

  % %

!#"## *+,

 

 !"##  

oraz , lecz to zagadnienie omwimy w podrozdziale, w ktrym zajmowa si bdziemy


kluczami obcymi.) Pierwsz zasad dotyczc kluczy gwnych, ktr udao nam si
wydedukowa, jest wic konieczno zachowania unikalnoci wszystkich kluczy
gwnych w tabeli, bowiem jakiekolwiek duplikaty nie bd tolerowane.
Kolejn sytuacj, ktr warto rozpatrzy, jest brak wartoci klucza gwnego w tabeli.




 

 

 


 

  


 


 



  

     



 

 

 !"##  

 $%& 

 '"## 

 

'(!"## )

  % %

!#"## *+,

 $%& 

 '"## 

  % %

!#"## *+,

 

 !"##  

W kolumnie   brakuje wartoci dla klienta o nazwisku Henryk Bezbony. Czy w takim razie nie bdzie on musia paci za zamwienia nr !? Niewiele
lepsza bdzie sytuacja, gdy tabele bd wyglda tak:



 

 


 

  


 

94 (03-07-17)

 


 

C:\Andrzej\PDF\Relacyjne bazy danych\r14-07.doc

Rozdzia 14. Modelowanie zwizkw

95



  

     



 

 

 !"##  

 $%& 

 '"## 

  % %

!#"## *+,

 $%& 

 '"## 

  % %

!#"## *+,

 

 !"##  



'(!"## )

W tym przypadku odpowied nadal nie jest oczywista. Najlepszym sposobem na uniknicie takich niejasnoci jest zadbanie o to, by wszystkie pola w kluczu gwnym posiaday okrelon warto. Brak wartoci w bazie danych okrela si wartoci NULL
(zwan rwnie wartoci pust lub wartoci zerow). Jest to do specyficzna
warto, a jej obsuga w bazach danych wie si z do ciekawymi kwestiami. Rozdzia 31., umieszczony w czci IV, jest powicony w caoci wanie zagadnieniom
zwizanym z wartoci ".
W ten sposb udao nam si okreli drug zasad dotyczc kluczy gwnych. Klucze
gwne nie mog si powtarza oraz nie mog zawiera pustych wartoci.
Systemy zarzdzania bazami danych, takie jak MS Access, obsuguj klucze gwne
z uwzgldnieniem tych zasad. Naley tylko wskaza systemowi, ktre z kolumn zawieraj klucze gwne, a zastosuje on zabezpieczenia przed zamaniem tych regu. Mona
si zastanawia, czy rzeczywicie system jest w stanie sprawdzi, czy warto pola
bdcego kluczem gwnym, nie wystpuje ju w tabeli, szczeglnie w przypadku tabel
zawierajcych setki tysicy wierszy danych? W rzeczywistoci mechanizmy obsugi
kluczy gwnych w porzdnych relacyjnych systemach zarzdzania baz danych s
w stanie dokona takiego sprawdzenia w sposb tak szybki, e nie bdzie to miao
widocznego wpywu na czas, jaki zajmuje dopisanie wiersza do tabeli.

Wykorzystanie kilku kolumn


w charakterze klucza gwnego
Przedstawione jak dotd w tym podrozdziale wymagania (unikalno oraz konieczno
okrelenia wartoci) dotyczce kluczy gwnych, nie ograniczaj ich konstrukcji tylko
do jednej kolumny. Moemy na przykad wykorzysta kolumny # oraz $ %&.
Naruszenie zasady unikalnoci danych nastpi wycznie w sytuacji, gdy pola obydwu
kolumn bd identyczne w rozpatrywanym rekordzie danych. Moemy wic posiada
w naszej tabeli osoby o nazwisku Jan Kowalski oraz Jan Kowal, lecz nie moemy zapisa dwch osb o nazwisku Jan Kowalski. Wykorzystanie wicej ni jednej kolumny
w charakterze klucza gwnego jest wic jak najbardziej dopuszczalne, lecz z reguy
nie jest zalecane. Bywaj jednak przypadki, w ktrych takie rozwizanie ma pierwszorzdne znaczenie. Jedno z takich zastosowa omwimy w podrozdziale, w ktrym
zajmiemy si zwizkami typu wiele do wielu.

Cz II Jednouytkownikowa baza danych, zbudowana z wielu tabel

96

Wybr waciwego klucza gwnego


Wybr klucza gwnego dla tabeli moe by trudny, dodatkowo spraw t komplikuje
moliwo zastosowania do tego kilku kolumn tabeli.
Jak ju wspomnielimy, istniej sytuacje, w ktrych wykorzystanie kilku kolumn w charakterze klucza gwnego stanowi jedyne rozsdne rozwizanie. Jeli jednak nie mona
znale bezporedniego powodu, dla ktrego mielibymy zdecydowa si na klucz
gwny zoony z kilku kolumn, naley wybra rozwizanie na bazie pojedynczej
kolumny. Nie jest to zasada niepodwaalna to tylko dobra rada. Klucze gwne zbudowane na podstawie pojedynczej kolumny s atwiejsze w obsudze i z reguy dziaaj
szybciej. Oznacza to, e w przypadku zastosowania klucza gwnego zbudowanego na
podstawie pojedynczej kolumny, zapytania w bazie danych bd wykonywane szybciej.
Kolejny problem stanowi waciwy wybr kolumny. Podstawowym kryterium wyboru
jest tutaj zapewnienie unikalnoci wartoci w kolumnie. W przypadku tabeli pracownikw wybr kolumny # jest oczywicie do kiepski, poniewa istniej wielkie
szanse na to, e ich imiona bd si powtarza.
Jedna z anegdot na temat Billa Gatesa, zaoyciela i wieloletniego prezesa firmy
Microsoft gosi, e jest to czowiek o skonnociach paranoidalnych. Jednym z objaww choroby miaby by zakaz zatrudniania w firmie osb o takim samym imieniu,
jakie nosi Prezes. W jednej z wersji tej anegdoty utrzymuje si, e zanim zatrudniono
kolejnego Billa, liczba pracownikw Microsoftu wynosia powyej piciuset osb.
Historia ta jest bardzo interesujca, lecz, niestety, nieprawdziwa. Bill Marklyn,
wspautor tej ksiki, zosta zatrudniony w firmie Microsoft na dugo przed osigniciem przez ni wspomnianej liczby pracownikw. Mona z tego wysnu wniosek, e w Microsofcie nie stosuje si klucza gwnego w tabeli  , zbudowanego na podstawie kolumny # .

Najprostszym i powszechnie stosowanym sposobem zapewnienia unikalnoci klucza


gwnego jest wykorzystanie do tego celu samego systemu bazy danych. Wikszo
relacyjnych systemw zarzdzania baz danych posiada mechanizmy umoliwiajce
automatyczne generowanie unikalnych identyfikatorw dla kadego dopisywanego
wiersza. Access na przykad udostpnia w tym celu specjalny typ danych o nazwie
'&'# &$ . Jest to doskonae rozwizanie w przypadku identyfikacji obiektw,
takich jak zamwienia, pracownicy, itd. Warto jednak zorientowa si, czy w tabeli
nie jest ju zapisana informacja, zapewniajca unikalno danych dziki swojej specyficznej charakterystyce. Tak informacj w przypadku pracownikw moe by na
przykad numer PESEL. Jest to z zaoenia unikalny i niezmienny identyfikator kadego obywatela Rzeczpospolitej Polskiej, wic jest idealny w celu zdefiniowania klucza gwnego tabeli (w kadym razie w firmie zatrudniajcej wycznie obywateli naszego kraju)1.

Naley oczywicie wzi pod uwag realia. Jeli zatrudnienie w firmie obcokrajowcw wchodzi w rachub,
zastosowanie numeru PESEL nie jest uzasadnione przyp. tum.

96 (03-07-17)

C:\Andrzej\PDF\Relacyjne bazy danych\r14-07.doc

Rozdzia 14. Modelowanie zwizkw

97

Generowanie naprawd unikalnych identyfikatorw nie jest zadaniem tak prostym, jakim si moe wydawa. Wicej informacji na ten temat mona znale w rozdziale 32.

Definiowanie klucza gwnego


Definiowanie klucza gwnego tabeli jest bardzo wanym elementem w procesie jej
konstruowania. Pomimo, e nie jest to ksika na temat programu MS Access, sposb
zdefiniowania klucza gwnego zademonstrujemy na przykadzie tego programu. Wane
jest rwnie spostrzeenie rnicy pomidzy kluczami gwnymi a obcymi. Klucz gwny
naley zdefiniowa na etapie definiowania struktury tabeli. Tworzenie klucza obcego
nie musi natomiast by dokonywane w sposb jawny. Wykorzystanie wartoci okrelonej kolumny w charakterze klucza obcego moe zosta dokonane dopiero podczas tworzenia zczenia tabel.
W jaki sposb moemy zatem zdefiniowa klucz gwny w programie MS Access?
Na etapie tworzenia struktury tabeli zaznaczamy odpowiedni wiersz. Nastpnie klikamy
przycisk z ikon klucza na pasku narzdzi. Najczciej kolumna definiujca klucz
gwny jest umieszczana jako pierwsza w tabeli, nie jest to jednak konieczne. Jeli
wystpi potrzeba zdefiniowania klucza gwnego na wikszej iloci kolumn, zaznaczamy odpowiednie kolumny i klikamy przycisk z ikon klucza. Warto zwrci uwag
na to, e w nomenklaturze zastosowanej w polskiej wersji programu MS Access, klucze
gwne nosz nazw kluczy podstawowych.

Klucze obce
Pozostaniemy przy naszym przykadzie, wykorzystujcym tabele  oraz 

. Przejdmy teraz do omwienia kluczy obcych w modelowaniu zwizkw typu
jeden do wielu. Klucz obcy jest po prostu referencj pewnego klucza gwnego.
W naszym przypadku kluczem obcym jest kolumna 
 .
Ponownie zastosujemy regu intuicyjnego wyodrbniania zasad regulujcych istnienie
kluczy obcych. Wemy pod uwag wartoci z poniszych tabel.




 

 

 


 

  

 



 

 

Zwrmy uwag na ostatni wiersz tabeli 


. Zawiera on warto  w kolumnie
 . Jest to nieco dziwne, poniewa w tabeli  nie istnieje wiersz o takiej
wartoci w kolumnie  . W tym przypadku nie jestemy w stanie okreli

Cz II Jednouytkownikowa baza danych, zbudowana z wielu tabel

98


  

     



 

 

 !"##  

 $%& 

 '"## 

 

'(!"## )

  % %

!#"## *+,

 $%& 

 '"## 

  % %

!#"## *+,

 

 !"##  

adresata rachunku za zamwienie numer . Mona si zatem domyli, e tego typu


sytuacja jest nie do przyjcia w bazie danych. Std wanie wynika pierwsza zasada,
dotyczca kluczy obcych. Zasada ta wymusza stosowanie w kluczach obcych wycznie takich wartoci, jakie wystpuj w odpowiednim dla nich kluczu gwnym.

Definiowanie klucza obcego


Klucze obce s definiowane w ramach procesu definicji zczenia tabel. Proces ten
zostanie omwiony w dalszej czci niniejszego rozdziau.

Czciowe podsumowanie
Zanim przejdziemy do kolejnych zagadnie, podsumujmy informacje, z ktrymi zapoznalimy si do tej pory. Ponownie prezentujemy znane nam ju tabele:




 

 

 


 

  

 



 

 



  

98 (03-07-17)

     



 

 

 !"##  

 $%& 

 '"## 

 

'(!"## )

  % %

!#"## *+,

 $%& 

 '"## 

  % %

!#"## *+,

 

 !"##  

C:\Andrzej\PDF\Relacyjne bazy danych\r14-07.doc

Rozdzia 14. Modelowanie zwizkw

99

Klucz gwny
Kada tabela w relacyjnej bazie danych musi posiada klucz gwny. Klucz taki skada
si z co najmniej jednego pola (kolumny). adna z wartoci klucza gwnego nie moe
by pusta. Kady z wierszy w tabeli musi posiada unikaln warto klucza gwnego.
Klucz gwny jest definiowany na etapie definicji tabeli.

Klucz obcy
Klucze obce nie s wymaganym elementem tabel. Innymi sowy, kada tabela musi
posiada zdefiniowany klucz gwny, lecz nie wszystkie musz definiowa klucze obce.
Jeli istnieje zwizek pomidzy dwiema tabelami, jedna z nich musi posiada klucz
obcy, na podstawie ktrego pobierane s odpowiednie dane z drugiej tabeli. W praktyce bywa tak, e wikszo tabel posiada klucze obce i zupenie dopuszczalne jest
wystpowanie wicej ni jednego klucza obcego w tabeli. Jeli tak jest w istocie, tabela
musi posiada zwizki z kilkoma innymi tabelami. Definicja klucza obcego nastpuje
podczas definicji zczenia.

Zczenia
Jak wspomnielimy na pocztku niniejszego rozdziau, narzdziami, sucymi do okrelania zwizkw w ramach baz danych, s:
 klucze (gwne i obce),
 zczenia.

Nadszed czas na omwienie drugiego z wymienionych narzdzi. W poprzednim rozdziale zostay wymienione trzy moliwe typy zwizkw, jakie mona modelowa
w bazie danych:
 jeden do wielu,
 wiele do wielu,
 jeden do jednego.

Nasze rozwaania dotyczce zcze rozpoczniemy od najczciej spotykanych zwizkw typu jeden do wielu.

Zwizki typu jeden do wielu


Zamy, e posiadamy dwie tabele:

Cz II Jednouytkownikowa baza danych, zbudowana z wielu tabel

100




 

 

 


 

  

 



 

 



  

     



 

 

 !"##  

 $%& 

 '"## 

 

'(!"## )

  % %

!#"## *+,

 $%& 

 '"## 

  % %

!#"## *+,

 

 !"##  

Czy mona okreli typ zwizku pomidzy tymi tabelami na podstawie ich zawartoci?
Odpowied brzmi: tak i nie. Nie moemy by absolutnie pewni co do typu zwizku,
lecz moemy dokona pewnych, bardzo prawdopodobnych zaoe.
Moemy zaoy, e 
#&$   jest kluczem gwnym. Pierwsz wskazwk, pozwalajc nam na takie zaoenie, jest nazwa kolumny; drug stanowi unikalne wartoci w ramach tej kolumny. Podobne zaoenie moemy przyj na temat
kolumny  .
Mona zaobserwowa, e wartoci w kolumnie 
  odpowiadaj
wartociom w kolumnie  , dlatego bardzo prawdopodobne jest, e
kolumna 
  jest kluczem obcym.
Czemu maj suy powysze dociekania? Nie namawiam czytelnika do tego, aby
oglda zawarto tabel w celu odgadnicia typw zwizkw pomidzy nimi. Celem
powyszego wiczenia jest uwiadomienie czytelnikowi szczeglnych wasnoci, ktre
pomagaj w procesie definiowania zwizkw pomidzy tabelami i zarzdzania nimi.
Moemy wic zaj si procesem modelowania zczenia typu jeden do wielu. Proces
ten skada si z nastpujcych krokw:
 Podejmujemy decyzj umieszczenia w bazie danych dwch tabel,

reprezentujcych klasy obiektw zamwie oraz klientw.


 Zwizek pomidzy tymi klasami obiektw jest typu jeden do wielu,

co oznacza, e klient moe mie zwizek z wieloma zamwieniami.


 Tworzymy tabele, reprezentujce wspomniane klasy obiektw, nadajc
im nazwy  oraz 
.
 Kada z wymienionych tabel bdzie miaa klucz gwny, przede wszystkim

dlatego, e taki jest wymg w stosunku do tabel w relacyjnych bazach danych.


Klucze gwne nazwiemy   oraz 
#&$  .

100 (03-07-17)

C:\Andrzej\PDF\Relacyjne bazy danych\r14-07.doc

Rozdzia 14. Modelowanie zwizkw

101

 Poniewa nasze tabele maj za zadanie odzwierciedla obiekty ze wiata

rzeczywistego, mamy zamiar modelowa rwnie zwizki pomidzy


reprezentowanymi klasami obiektw. W naszym przypadku bdzie to zwizek
typu jeden do wielu.
 W celu umoliwienia realizacji zwizku w bazie danych musimy utworzy

odpowiedni klucz obcy w tabeli reprezentujcej stron okrelan przez


wiele. W naszym przypadku bdzie to tabela 
.
 Kolumna klucza obcego moe mie dowoln nazw, jednak powszechn

praktyk jest nadawanie kolumnom tego typu takich samych nazw, jakie
posiadaj kolumny klucza gwnego, do ktrego si odnosz.
 Do tabeli 
 dodajemy now kolumn o nazwie  .
 Wskazujemy systemowi bazy danych istnienie zwizku typu jeden do wielu

pomidzy rozpatrywanymi tabelami.


W przypadku aplikacji MS Access zdefiniowanie zczenia pomidzy tabelami polega
na otwarciu Edytora relacji (poniewa zwizki w polskiej wersji MS Access nosz nazw relacji, co jest w pewnym konflikcie z przyjt terminologi dotyczc relacyjnych baz danych), dodaniu do relacji dwch tabel, a nastpnie przecigniciu nazwy
kolumny   na 
 . Po otworzeniu si okna zatytuowanego Edytowanie relacji naley zaznaczy opcj Wymuszaj wizy integralnoci.
Utworzenie zwizku zatwierdzamy przez kliknicie przycisku OK. Osoby zainteresowane znaczeniem wspomnianych wizw integralnoci odsyam do rozdziau 16., zatytuowanego Integralno danych.

Rysunek 14.1.

W operacji przedstawionej na rysunku 14.1 zdefiniowano zczenie tabel w bazie danych.


Efektem dodatkowym byo nadanie kolumnie 
  roli klucza obcego.
W konsekwencji tej zmiany system odmwi wprowadzenia do kolumny 

  jakiejkolwiek wartoci nie wystpujcej w kluczu gwnym, do ktrego odnosi
si klucz obcy, reprezentowany przez t kolumn.

Cz II Jednouytkownikowa baza danych, zbudowana z wielu tabel

102

Przedstawiony przez nas proces definiowania zczenia w systemie Access unaoczni,


w jaki sposb zczenia oraz klucze s wzajemnie ze sob powizane. W celu zdefiniowania zczenia, podobnego do omwionego powyej, naley wczeniej zdefiniowa
klucz gwny, a take utworzy kolumn, ktra ma realizowa funkcj klucza obcego.
Dopiero jednak utworzenie zczenia tabel nada kolumnie rol klucza obcego.
Naley zdawa sobie spraw z kilku faktw, dotyczcych definiowania zcze tabel.
Zczenie (z wymuszeniem wizw integralnoci) nie zostanie utworzone w przypadku, gdy:
 kolumna wskazana po stronie jeden zwizku nie jest kluczem gwnym,
 typy danych w czonych kolumnach nie s identyczne,
 w polach klucza obcego (strona wiele) istniej wartoci, ktre nie wystpuj

w polach klucza gwnego (strona jeden).


Wspomnielimy wczeniej o istnieniu moliwoci wykorzystania w Accessie kolumn
typu '&'# &$ w charakterze kluczy gwnych tabel. Kolumny tego typu nie
moemy zastosowa w charakterze klucza obcego. Typem odpowiadajcym typowi '&
'# &$ , ktry moe zosta zastosowany w charakterze odpowiedniego klucza obcego,
jest typ  ()&$, podtyp  ()*(+%&$ *,+'-*.&-* - /. Nie jest to, jak mogoby si wydawa, zamanie wymogu identycznoci typw danych w kluczach gwnych i wskazujcych na nie kluczach obcych. Typ '&'# &$ jest specjalnym przypadkiem typu  ()* (+%&$ * ,+'-* .&-*  - /, z t rnic, e wartoci
w kolumnach tego typu podlegaj automatycznemu zwikszaniu podczas dopisywania
nowej kolumny.

Zwizki typu jeden do jednego


Zwizki typu jeden do jednego stosowane s raczej do rzadko. Tworzenie ich jest
jednak bardzo proste, poniewa proces definicji zcze tabel w takich zwizkach jest
bardzo podobny do definicji zczenia tabel w zwizkach typu jeden do wielu. Podobnie
jak miao to miejsce w przypadku zwizkw typu jeden do wielu, naley przecign
nazw kolumny z klucza gwnego na nazw kolumny klucza obcego. Jedyna rnica
polega na tym, e klucz obcy w tym przypadku nie moe zawiera zduplikowanych
wartoci. Istniej dwie metody zapewnienia unikalnoci wartoci w ramach kolumn
kluczy obcych.
Pierwsza metoda polega na utworzeniu klucza obcego tabeli na podstawie jej klucza
gwnego. Innymi sowy, zczenie nastpi pomidzy kluczami gwnymi dwch tabel,
z ktrych jeden bdzie rwnie peni rol klucza obcego.
Drugi sposb polega na utworzeniu indeksu bez powtrze na kolumnie klucza obcego.
Taka operacja spowoduje, e jako wartoci pl w tej kolumnie nie zostan przyjte
wartoci ju wystpujce. Ten wanie sposb na zapewnienie unikalnoci danych
w kolumnie omwimy nieco szerzej.

102 (03-07-17)

C:\Andrzej\PDF\Relacyjne bazy danych\r14-07.doc

Rozdzia 14. Modelowanie zwizkw

103

W przykadowej bazie danych kademu pracownikowi musi zosta przyznany pokj do


wycznego wykorzystania, lecz ze wzgldu na koszty aden pracownik nie moe mie
do dyspozycji wicej ni jeden pokj.


  


 

        

 

  

( (-..

#(+ (---

 &

/

(+(-00

#(###

 1+

1

#(+ (-00

#( ##

 12

  

#  (-..

#( ##

 2

3 

( (-..

#( ##

 4

&

#(+ (-.0

#(+ ##'




!

  







Kolumna  (&$ % jest kluczem gwnym, wic w jej przypadku nie s
dopuszczalne powtrzenia. Na kolumnie 0(&$ % w trakcie projektowania
tabeli zosta zaoony unikalny indeks, wic rwnie w tym przypadku nie s dopuszczalne powtrzenia. Dodatkowo kolumna 0(&$ % jest kluczem obcym, wic
wartoci pl tej kolumny musz odpowiada istniejcym wartociom pl kolumny
odpowiedniego klucza gwnego, to znaczy kolumny  (&$ %.
Z tego powodu ponisza tabela zawiera nieprawidow zawarto w kolumnie klucza obcego, poniewa warto 1 nie wystpuje w kolumnie klucza gwnego tabeli  :



!

  







Take zawarto tabeli zaprezentowanej poniej jest niedopuszczalna, poniewa warto  wystpuje dwukrotnie w kolumnie 0(&$ %:



!

  







Cz II Jednouytkownikowa baza danych, zbudowana z wielu tabel

104

Utworzenie zwizku typu jeden do jednego wymaga wykorzystania Edytora relacji.


Dodajemy do relacji tabele  oraz 0 (poprzez wykorzystanie przycisku
Poka tabele z paska narzdzi). Przecigamy nazw kolumny  (&$ %
na nazw kolumny 0(&$ %. Po pojawieniu si okna zatytuowanego Edytowanie relacji zaznaczamy opcj Wymuszaj wizy integralnoci. Zwrmy uwag na to,
e w tym przypadku domylnym typem zczenia jest jeden do jednego. Zatwierdzamy
utworzenie zczenia, klikajc przycisk OK (rysunek 14.2).

Rysunek 14.2.

Wane jest ustanowienie unikalnego indeksu na kolumnie 0  przed


zdefiniowaniem zczenia.
Naley rwnie zdawa sobie spraw z tego, e pomimo istnienia zwizku pomidzy
dwoma kluczami gwnymi, zwizek ten nie jest symetryczny. W tabeli zawierajcej
klucz gwny zczenia (na przykad  ), mog istnie elementy, ktre nie
bd wystpowa w tabeli definiujcej klucz obcy (na przykad 0). Niedopuszczalna jest jednak sytuacja odwrotna (istnienie wartoci klucza obcego, nie wystpujcych w kluczu gwnym zczenia).

Zwizki typu wiele do wielu


Zwizki typu wiele do wielu s stosunkowo powszechne. Ich reprezentacja w bazie
danych moe pocztkowo wyda si skomplikowana, lecz z chwil, gdy opanujemy
zasady, tworzenie tego typu zwizkw okae si bardzo atwe.
Rozwamy zwizki pomidzy klientami a pracownikami. Kady klient moe by obsugiwany przez rnych pracownikw, kady z pracownikw natomiast ma do czynienia
z wieloma klientami. Dlatego wanie zwizki pomidzy pracownikami a klientami s typu
wiele do wielu. Kolejnym pytaniem, na ktre naley sobie odpowiedzie, jest: przez co
warunkowane s powizania pomidzy klientami a pracownikami?. Moliwe jest nawizywanie kontaktw klientw z pracownikami bez dokonywania jakichkolwiek zakupw,
lecz najprawdopodobniej tego typu kontakty nie maj znaczenia, przynajmniej z punktu

104 (03-07-17)

C:\Andrzej\PDF\Relacyjne bazy danych\r14-07.doc

Rozdzia 14. Modelowanie zwizkw

105

widzenia naszej bazy danych. Jedynym wanym rodzajem kontaktw klientw z naszymi
pracownikami jest kontakt zwizany z realizacj zamwie. Za kadym razem, gdy kupowany jest towar, zostaje zoone zamwienie. Zatem moemy stwierdzi, e powizania
pomidzy klientami a pracownikami warunkowane s przez te zamwienia.
Zastanwmy si teraz nad powizaniami pomidzy klientami a zamwieniami. S to
zwizki typu jeden do wielu. Tego samego typu zwizki istniej pomidzy pracownikami a zamwieniami.




 

 

 


 

  

 



 

 



  

     



 

 

 !"##  

 $%& 

 '"## 

 

'(!"## )

  % %

!#"## *+,

 $%& 

 '"## 

  % %

!#"## *+,

 

 !"##  



  


 

        

 

  

( (-..

#(+ (---

 &

/

(+(-00

#(###

 1+

1

#(+ (-00

#( ##

 12

  

#  (-..

#( ##

 2

3 

( (-..

#( ##

 4

&

#(+ (-.0

#(+ ##'

By moe wyda si to nieprawdopodobne, lecz dla utworzenia pary zwizkw typu jeden
do wielu w taki sposb, jaki opisalimy powyej, wystarczy, aby powsta zwizek
typu wiele do wielu. W naszym przypadku, niejako samoistnie, powsta zwizek typu
wiele do wielu pomidzy tabelami  oraz  . Tak naprawd nie istnieje w systemach relacyjnych baz danych aden dodatkowy mechanizm, definiujcy
zwizki wiele do wielu. Zawsze w przypadku koniecznoci utworzenia takiego zwizku
posugujemy si dwoma zwizkami typu jeden do wielu.
Istnieje jednak wymg utworzenia tych powiza w taki sposb, jak zostao to przedstawione na rysunku 14.3.

Cz II Jednouytkownikowa baza danych, zbudowana z wielu tabel

106
Rysunek 14.3.

Dowolne dwa zwizki typu jeden do wielu, obejmujce trzy tabele, nie oznaczaj
jeszcze zwizku wiele do wielu, czego przykadem moe by sytuacja przedstawiona
na rysunku 14.4.
Rysunek 14.4.

Z mojego dowiadczenia wynika, e do czsto mona znale tabel, ktra bdzie


pomocna w celu utworzenia zwizku typu wiele do wielu. W naszym przykadzie
staa si ni tabela 
. Bywaj jednak sytuacje, gdy taka tabela nie istnieje.
Warto o tym wspomnie, aby przybliy czytelnikowi problemy, ktre do czsto
mog wystpi w pracach nad rzeczywistymi bazami danych. W celu ilustracji posuymy si ponownie nasz baz danych. Dokonamy na niej kolejnych modyfikacji,
zwikszajc nieco poziom jej realizmu. Nasz przykad wyjani rwnie, w jakich sytuacjach niezbdny moe okaza si klucz gwny zbudowany na dwch kolumnach.

Konieczno zastosowania kluczy gwnych


zbudowanych na kilku kolumnach
Rozpatrzmy nasz przykad z rozdziau 12. Zidentyfikowalimy w nim sze klas
obiektw:
 klienci,
 towary,
 zamwienia,
 pracownicy,
 budynki,
 pokoje.

Skoncentrowalimy si wwczas na trzech tabelach:

106 (03-07-17)

C:\Andrzej\PDF\Relacyjne bazy danych\r14-07.doc

Rozdzia 14. Modelowanie zwizkw

107

 
 

 

Pocztkowo struktura tabeli 


 bya stosunkowo prosta, poniewa wykorzystywalimy j w celach demonstracyjnych. Teraz musimy przyjrze si bliej strukturze tej tabeli, aby dostosowa j do naszych potrzeb. Przez chwil bdziemy posugiwa si przykadami z pliku R14B.MDB, nastpnie wykorzystamy zawarto
pliku R14C.MDB.


  

   

 



  


 

        

 

  

( (-..

#(+ (---

 &

/

(+(-00

#(###

 1+

1

#(+ (-00

#( ##

 12

  

#  (-..

#( ##

 2

3 

( (-..

#( ##

 4

&

#(+ (-.0

#(+ ##'





 

 

 


 

  

 



 

 


 
 

 

 



 

 !"##  

  % %

!#"## *+,

 $%& 

 '"## 

 

'(!"## )

Cz II Jednouytkownikowa baza danych, zbudowana z wielu tabel

108

Jak wida, tabela 


 skada si z kolumny 
#&$  , ktra
stanowi klucz gwny, oraz trzech kluczy obcych, odwoujcych si do innych tabel.
Po przeanalizowaniu tej struktury mona doj do wniosku, e pozwala ona na realizowanie zamwie jednej tylko sztuki towaru. Na przykad zamwienie nr 3 zostao zoone przez Henryka Bezbonyego i dotyczy zakupu stou. Co moglibymy zrobi, gdyby
pan Henryk zayczy sobie do kompletu na przykad czterech krzese? W obecnej
strukturze tabel nie ma moliwoci zapisania kilku pozycji w ramach jednego zamwienia; nie ma nawet moliwoci zapisania kilku sztuk jednego towaru. Z tego powodu
kada sztuka towaru musi by zapisywana na osobnym zamwieniu, zatem zakup stou
i czterech krzese wymaga wpisania do bazy piciu osobnych zamwie.
Istnieje kilka rozwiza tego problemu. Dwa z nich wydaj si logiczne i proste w implementacji, lecz mog spowodowa powane problemy w bazie danych. Najlepszym
rozwizaniem bdzie wic omwienie obu niebezpiecznych rozwiza, aby zapobiec
ich nieopatrznemu zastosowaniu.
Pierwsze, atwe ale bdne rozwizanie wyglda nastpujco:


  

   

'

 

 

'

 

 

 

'
'

'

'


Wyglda niele, nieprawda? Zamiast pojedynczej kolumny przechowujcej odwoania


do towarw, mamy ich pi. Henryk ma swoje cztery krzesa i st, pozostali klienci
mog rwnie kupowa wiksze iloci sztuk poszczeglnych towarw.
Mogoby si wydawa, e to rozwizanie jest cakiem dobre, lecz w praktyce jest zupenie bezuyteczne. Po pierwsze, co stanie si, gdy liczba pozycji na zamwieniu bdzie
wiksza ni pi? Moemy oczywicie doda odpowiedni liczb kolumn.
Zamy, e w ramach pojedynczego zamwienia maksymalna ilo sztuk wszystkich
towarw bdzie rwna 30. W tym celu potrzebujemy 30 kolumn w tabeli. Problem polega
na tym, e przecitnie na zamwieniu wystpuj trzy pozycje, wic rednio w kadym
wierszu danych w tabeli marnujemy okoo 27 kolumn. To jest rzeczywiste marnotrawstwo miejsca na dysku i moe znacznie spowolni dziaanie bazy danych.
Dodatkowy problem moe polega na rozproszeniu informacji w ramach rekordu danych.
Nie wiemy, ktra z kolumn zawiera informacje o krzesach, wic w celu odnalezienia
liczby krzese na zamwieniu musimy przeszuka zawarto caego wiersza danych.
To jest stanowczo ze rozwizanie.

108 (03-07-17)

C:\Andrzej\PDF\Relacyjne bazy danych\r14-07.doc

Rozdzia 14. Modelowanie zwizkw

109

Nieco lepszym, cho rwnie niewystarczajco dobrym pomysem, jest utworzenie nastpujcej struktury:


  

   

'

" 

# $  

(
(
'

'

%

(
(

'

W tym podejciu kady typ towaru jest reprezentowany przez jedn kolumn w tabeli,
a liczba, zapisana w polu kolumny okrela ilo sztuk danego towaru, znajdujc si
na zamwieniu. Henryk moe kupi cztery krzesa i st, a my wiemy dokadnie, gdzie
szuka informacji na temat krzese. Nie musimy rwnie martwi si o najwiksz ilo
sztuk towarw na zamwieniu, poniewa w kolumnach odpowiadajcych danemu typowi
towaru, moemy wpisa dowoln liczb naturaln. Doskonale. Co jednak stanie si,
gdy dodamy nowy typ towaru do naszego asortymentu? Bdziemy musieli doda now
kolumn do tabeli 
. Wiele z firm posiada asortyment znacznie przekraczajcy
dopuszczaln liczb kolumn w wikszoci systemw baz danych (najczciej 255).
Z tego wzgldu takie rozwizanie stanowczo nie nadaje si do zastosowania.
Nadszed w kocu czas na zademonstrowanie waciwego rozwizania. Wszystkie umieszczone poniej tabele (a do koca rozdziau) pochodz z pliku R14C.MDB.
Najlepsze rozwizanie naszego problemu okae si bardzo proste, szczeglnie dla osb
przywykych ju do wykorzystywania wielu tabel. W przypadku zamwie i towarw
mamy ponownie do czynienia ze zwizkiem typu wiele do wielu. Skonstruujmy
zatem zwizek wiele do wielu za pomoc dwch zwizkw jeden do wielu pomidzy tabelami 
,  a dodatkow, trzeci tabel. Tabela ta powinna
znale si w strukturze zwizku pomidzy tabelami 
 oraz  . Rozsdn
dla niej nazw moe by 
. Odpowiednie tabele bd wyglday
nastpujco:


  

   

 

Cz II Jednouytkownikowa baza danych, zbudowana z wielu tabel

110





  

 

# & %  


 
 

 

 



 

 !"##  

  % %

!#"## *+,

 $%& 

 '"## 

 

'(!"## )

Tabele te zawieraj wszystkie informacje, ktre prbowalimy przechowa za pomoc


innych dwch kiepskich rozwiza. Oprcz tego ostatnie rozwizanie nie jest obcione
problemami, ktre stanowiy integralny element w przypadku rozwiza wczeniejszych.
Nie marnujemy miejsca w bazie danych, poniewa wszystkie pola we wszystkich kolumnach s wypenione.
Nie istnieje jakiekolwiek ograniczenie dotyczce liczby pozycji na zamwieniu czy te
liczby rnych typw towarw w asortymencie. Dodanie nowej pozycji do zamwienia
polega na dodaniu wiersza w tabeli 
.
Jeli wystpi potrzeba dodania nowego typu towarw do bazy danych, wystarczy dopisa wiersz w tabeli  . Nie ma adnej potrzeby ingerencji w struktury tabel.
Udao nam si w kocu udoskonali struktur naszej bazy danych. Jaki jednak ma to
zwizek z wielokolumnowymi kluczami gwnymi?
Kluczem gwnym tabeli zamwie jest 
#&$  . Podobnie  
&$' jest kluczem gwnym tabeli towarw. Jednake ani kolumna #&$  ,
ani te &$' nie moe by kluczem gwnym tabeli 
, poniewa w kadej z nich zupenie poprawne bd wielokrotne wystpienia tych samych
wartoci. Klucz gwny mona natomiast zbudowa w oparciu o obie te kolumny.
Dziki temu nie ma problemu z powtarzaniem si wartoci w polach kadej z tych
kolumn z osobna.

110 (03-07-17)

C:\Andrzej\PDF\Relacyjne bazy danych\r14-07.doc

Rozdzia 14. Modelowanie zwizkw

111





  

 

# & %  

'

(
'

%

%

%

Niedopuszczalne jest jednak powtrzenie si par wartoci w obydwu kolumnach, poniewa stanowi to naruszenie zasady funkcjonowania klucza gwnego.




  

 

# & %  

'

'

(
'

%

%

%

Taka sytuacja stanowi do dobre odzwierciedlenie rzeczywistoci, poniewa z reguy


na zamwieniu nie powinien pojawia si kilka razy ten sam typ towaru. Do zapisu
liczby sztuk jednego typu towaru w ramach zamwienia suy kolumna  ()2'%
w tabeli 
.

Oglne informacje na temat zcze


Omwienie zcze w zwizkach typu wiele do wielu zawierao do sporo dodatkowych informacji. Warto wic zrobi ma przerw i podsumowa informacje, ktre
pojawiy si do tej pory.

Wykorzystywanie wierszy zamiast kolumn zwiksza elastyczno


Omwione powyej rozwizanie problemu umieszczania kilku pozycji na zamwieniu
jest bardzo elastyczne. Moemy swobodnie dodawa do zamwie pozycje, obejmujce dowoln liczb sztuk danego towaru. Moemy rwnie dodawa nowe towary do
bazy danych. Obie te moliwoci s dostpne bez koniecznoci wprowadzania jakichkolwiek dalszych modyfikacji w samej strukturze bazy danych.
Kilkakrotnie wspominaem ju, e nowoczesne systemy zarzdzania bazami danych
(do ktrych naley take MS Access) umoliwiaj modyfikacj struktury baz danych
w sposb do swobodny i nieskomplikowany. Moliwo taka jest bardzo wana w procesie definicji struktury bazy danych, lecz w okresie wykorzystania bazy do codziennej
pracy zmiany jej struktury powinny by ograniczone do naprawd wyjtkowych sytuacji.
Pamitajmy, e w oparciu o tabele zbudowalimy formularze, zapytania i raporty.
Kada zmiana struktury tabel wymaga sprawdzenia poprawnoci dziaania pozostaych

Cz II Jednouytkownikowa baza danych, zbudowana z wielu tabel

112

elementw bazy. Sytuacja, w ktrej zmiana w strukturze tabel pociga za sob konieczno wprowadzenia zmian w ktrym z pozostaych elementw bazy, jest bardzo
prawdopodobna. Mona wic wysnu wniosek, e kada konstrukcja bazy danych, ktra
wymusza czste dokonywanie zmian w strukturze tabel, jest bardzo mao funkcjonalna.
Problem nie tylko w tym, e aplikacja taka jest do kopotliwa w utrzymaniu, lecz
nasuwa bardzo prawdopodobne przypuszczenie, e popeniono jaki bd lub przeoczenie w trakcie definicji struktury bazy danych.

Wykorzystanie interfejsu graficznego


Zczenia wykorzystuj liczby, zarwno w kluczach gwnych, jak i w kluczach obcych.
Liczby s wykorzystywane gwnie z powodw praktycznych (bo tak jest po prostu
najwygodniej), lecz bez problemu mona wykorzystywa w tym celu napisy, czyli dane
typu tekstowego. Naley jednak zdawa sobie spraw z tego, e nie powinno mie
miejsca rczne wypenianie kolumn kluczy obcych w tabelach.
Wemy ponownie nasz tabel 
. W celu wypenienia zamwie
wykorzystamy wygodny i estetyczny GUI Graphic User Interface (Graficzny interfejs
uytkownika). Dziki temu bdziemy mieli moliwo wyboru klienta z jednej listy
rozwijalnej, pracownika z drugiej, natomiast towaru z trzeciej listy (rysunek 14.5).
Rysunek 14.5.

W ramach formularza uytkownik wprowadza wycznie niezbdne informacje. Caa


praca zwizana z uzupenianiem kluczy obcych, wykonywana jest przez system zarzdzania baz danych.
Omwienie sposobw tworzenia takich aplikacji lub wrcz serwisw WWW, wykorzystywanych w charakterze formularzy, obsugujcych bazy danych, wykracza znacznie
poza zakres tej ksiki. Ksika niniejsza omawia bowiem zagadnienia relacyjnych
baz danych, nie za sposoby wykorzystania aplikacji MS Access do tworzenia aplikacji
wykorzystujcych bazy danych. Osoby zainteresowane pewnymi standardowymi mechanizmami, dostpnymi w programie MS Access, mog sprbowa przeanalizowa

112 (03-07-17)

C:\Andrzej\PDF\Relacyjne bazy danych\r14-07.doc

Rozdzia 14. Modelowanie zwizkw

113

przykadowy formularz o nazwie #&$   w pliku R14C.MDB. Formularz ten demonstruje podstawowy sposb tworzenia interfejsu uytkownika, zbudowanego w oparciu
o kilka tabel, powizanych pomidzy sob za pomoc rnych zcze.
Nastpny rozdzia zawiera jednak kilka oglnych porad dotyczcych tworzenia takich
interfejsw, ktrych gwnym zadaniem jest odseparowanie uytkownika kocowego
od abstrakcji relacyjnego modelu danych.

Mniej oczywiste klasy obiektw


Zasada projektowania tabel, przedstawiona przez nas we wczeniejszych rozdziaach,
polegaa na identyfikacji klas obiektw wiata rzeczywistego. W tym rozdziale zdecydowaem si jednak na wprowadzenie tabeli 
, ktr raczej trudno
wydedukowa na podstawie analizy wiata rzeczywistego. Na swoj obron mam to,
e uprzedzaem, i jest to zaledwie oglna zasada, od ktrej mog istnie wyjtki. List
tych wyjtkw da si jednak przedstawi w sposb opisowy: ot wyjtek mog stanowi sytuacje wystpowania zwizkw typu wiele do wielu. W przypadku istnienia
takiego zwizku przy jednoczesnym braku tabeli, ktra nadawaaby si do wykorzystania w charakterze cznika tworzcego zwizek typu wiele do wielu, najprawdopodobniej zaistnieje konieczno utworzenia mniej intuicyjnej tabeli, takiej, jak s
wanie 
.

Terminologia
Jak mielimy okazj si przekona, zczenia i klucze s proste w uyciu oraz niezwykle
uyteczne. Udao si nam zatem postawi kolejny krok w stron wiata specjalistw
baz danych. W tym wiecie bardzo wana jest umiejtno posugiwania si skomplikowan terminologi, akceptowan przez innych specjalistw baz danych. Jeli nie
zastosujemy si do tych zasad, zamiast nalenego nam szacunku napotkamy mur niechci
jako intruzi. Dlatego wana jest znajomo nastpujcych poj: rodzic, potomek, posiadanie, nadrzdny, podrzdny, zaleno czy te klucz obcy.
Na przykad tabela 
 jest w posiadaniu tabela  , dlatego jest jej potomkiem. Tabela 
 jest podrzdna wobec tabeli , ktra jest jej rodzicem i rwnie posiada tabel 
, wic jest nadrzdna w stosunku do niej.
Wszystkie tabele potomne posiadaj przynajmniej jeden klucz obcy. Poniewa tabela

 posiada dwie tabele rodzicw, zawiera dwa klucze obce (&$ %
oraz  . Klucze obce ustalaj zaleno pomidzy rodzicem a potomkiem.
W tym przypadku mamy do czynienia z dwoma kluczami obcymi, wic istniej dwie
zalenoci.
Zwrmy uwag na to, e klucze obce tabeli 
 tworz zwizki z kluczami
gwnymi swoich rodzicw. Jest to wany wymg, poniewa tabele rodzicw zawsze
znajduj si po stronie jeden zwizku typu jeden do wielu.
Rysunek 14.6 prezentuje zwizki pomidzy tabelami z biecej wersji omawianej przez
nas bazy danych.

Cz II Jednouytkownikowa baza danych, zbudowana z wielu tabel

114

Rysunek 14.6.

A oto zawarto wszystkich szeciu tabel bazy danych:




  


 

        

 

  

( (-..

#(+ (---

 &

/

(+(-00

#(###

 1+

1

#(+ (-00

#( ##

 12

  

#  (-..

#( ##

 2

3 

( (-..

#( ##

 4

&

#(+ (-.0

#(+ ##'





 

 

 


 

  

 



 

 



  

114 (03-07-17)

   

C:\Andrzej\PDF\Relacyjne bazy danych\r14-07.doc

Rozdzia 14. Modelowanie zwizkw

115





  

 

# & %  

'


 
 

 



 

 

 !"##  

  % %

!#"## *+,

 $%& 

 '"## 

 

'(!"## )




!

  







Czytelnikowi naley si mae wyjanienie. Nie powinienem robi sobie artw z terminologii stosowanej przez specjalistw baz danych. W wikszoci dziedzin ycia konieczna jest jaka forma werbalnego skrtu mylowego, uywanego w celu usprawnienia
komunikacji. Naley jednak zdawa sobie spraw z tego, e terminologia taka powinna by stosowana wycznie w celu usprawnienia komunikacji, nie za w celu zabawy
(z nowicjuszami) w kotka i myszk, polegajcej na niepotrzebnej komplikacji podstawowych zagadnie, ktre w gruncie rzeczy s proste i zrozumiae. Zrozumienie
podstaw jest tutaj kluczowe; po pokonaniu tego etapu caa skomplikowana terminologia jest wchaniana przez nowego adepta w sposb nieomale naturalny.
Zademonstrowane powyej tabele nadal nie stanowi idealnego rozwizania problemu, poniewa tabela  wci zawiera nadmiarowe, powtarzajce si dane
(na przykad dotyczce dostawcw). Jest to zabieg celowy, poniewa te niedoskonaoci posu jako ilustracja zabiegu usuwania nadmiarowych danych, ktrym
zajmiemy si w rozdziale 15.

You might also like