You are on page 1of 42

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

Microsoft Access.
Podrcznik administratora
Autor: Helen Feddema
Tumaczenie: Rafa Joca
ISBN: 83-246-0279-8
Tytu oryginau: Expert One-on-One
Microsoft Access Application Development
Format: B5, stron: 588

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Program Microsoft Access cieszy si spor popularnoci wrd uytkownikw.


Nie wszyscy jednak wiedz, e aby prawidowo zarzdza bazami danych Accessa,
naley uywa specjalnych aplikacji. Ich napisane to skomplikowany proces trzeba
zaprojektowa interfejs uytkownika, dobra komponenty, stworzy kwerendy,
opracowa procedury, a przede wszystkim umiejtnie poczy to wszystko w cao.
W ksice Microsoft Access. Podrcznik administratora znajdziesz kompletny zbir
informacji na temat budowania aplikacji w Accessie. Nauczysz si projektowa
i tworzy tabele oraz wykorzystywa gotowe komponenty interfejsu uytkownika.
Dowiesz si, jak napisa wydajne i szybkie kwerendy oraz przedstawi dane w postaci
wykresw, tabel i raportw. Poznasz elementy jzyka VBA i moliwoci wymiany
danych midzy rnymi aplikacjami pakietu MS Office.
Typy danych w tabelach MS Access
Normalizacja danych
Projektowanie formularzy
Zastosowanie kwerend do przetwarzania danych
Prezentacja danych na wykresach
Drukowanie danych z zastosowaniem raportw
Pisanie kodu moduw aplikacji
Modyfikowanie i aktualizowanie aplikacji
Konwersja baz danych ze starszych wersji Accessa
czenie aplikacji z innymi skadnikami pakietu MS Office
Jeli chcesz stworzy wydajn i sprawnie dziaajc aplikacj, signij po t ksik
znajdziesz w niej wszystkie niezbdne informacje.

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

1 O autorce ...................................................................................................................................................11
1 Wprowadzenie .........................................................................................................................................13

Cz I Tworzenie aplikacji w Accessie

17

Rozdzia 1. Tworzenie bazy danych dla aplikacji .....................................................................................19


Uzyskiwanie informacji ................................................................................................. 20
Rozpoznanie zada i obiektw biznesowych ................................................................... 21
Okrelenie encji ........................................................................................................... 22
Tworzenie tabel dla aplikacji ......................................................................................... 24
Sposoby tworzenia tabel ......................................................................................... 25
Tworzenie tabel ...................................................................................................... 28
Typy danych pl tabeli .................................................................................................. 33
Normalizacja ................................................................................................................ 46
Pierwsza posta normalna eliminacja powtarzajcych si grup ................................ 46
Druga posta normalna eliminacja redundancji danych ........................................... 47
Trzecia posta normalna eliminacja kolumn, ktre nie zale od klucza ................... 48
Czwarta posta normalna izolacja niezalenych zwizkw wielokrotnych ................... 48
Pita posta normalna izolacja semantycznie powizanych zwizkw wielokrotnych ..... 48
Okrelenie zwizkw .................................................................................................... 49
Zwizek jeden do wielu ........................................................................................... 50
Zwizek jeden do jednego ....................................................................................... 52
Zwizek wiele do wielu ............................................................................................ 53
Podsumowanie ............................................................................................................ 54

Rozdzia 2. Zastosowanie formularzy do pracy z danymi .................................................................... 55


Typy formularzy ............................................................................................................ 55
Tworzenie formularzy .................................................................................................... 60
Korzystanie z dodatku Design Schemes ................................................................... 60
Tworzenie standardowego formularza gwnego ......................................................... 61
Tworzenie i osadzanie podformularzy typu pojedynczego i arkusza danych ...................... 74
Tworzenie formularzy cigych .................................................................................. 91
Tworzenie formularza dla zwizku wiele do wielu ....................................................... 93
Podsumowanie ............................................................................................................ 94

Rozdzia 3. Wybr odpowiednich formantw dla formularza .............................................................. 97


Formanty standardowe ................................................................................................. 97
Przydatne formanty standardowe .............................................................................. 97
Mniej uyteczne formanty standardowe ................................................................... 129

Microsoft Access. Podrcznik administratora


Formanty specjalne .................................................................................................... 130
Formant Karta (zakadki) ....................................................................................... 131
Formant Kalendarz ................................................................................................ 131
Formant TreeView (widok drzewa) ........................................................................... 132
Formanty ActiveX ....................................................................................................... 135
Formant DateTimePicker ....................................................................................... 136
Formant MonthView .............................................................................................. 136
Podsumowanie .......................................................................................................... 137

Rozdzia 4. Sortowanie i filtrowanie danych za pomoc kwerend ......................................................139


Kwerendy wybierajce ................................................................................................ 139
Proste kwerendy wybierajce ................................................................................. 139
Kwerendy podsumowujce ..................................................................................... 145
Kwerendy krzyowe .................................................................................................... 150
Kwerendy modyfikujce .............................................................................................. 155
Kwerenda doczajca ........................................................................................... 155
Kwerenda aktualizujca ......................................................................................... 158
Kwerendy tworzce tabele ..................................................................................... 163
Kwerenda usuwajca ............................................................................................ 164
Kwerendy specyficzne dla jzyka SQL .......................................................................... 166
Kwerendy skadajce ............................................................................................ 166
Kwerendy definicji danych ...................................................................................... 168
Podkwerendy ........................................................................................................ 170
Podsumowanie .......................................................................................................... 172

Rozdzia 5. Zastosowanie tabel i wykresw przestawnych do interakcji z danymi .........................173


Utworzenie kwerendy bdcej rdem danych .............................................................. 174
Tabele przestawne ..................................................................................................... 175
Pasek narzdziowy tabeli przestawnej .................................................................... 182
Okno waciwoci tabeli przestawnej ...................................................................... 185
Wykresy przestawne ................................................................................................... 186
Pasek narzdziowy wykresu przestawnego .............................................................. 190
Osadzony wykres przestawny ................................................................................. 192
Podsumowanie .......................................................................................................... 193

Rozdzia 6. Drukowanie danych przy uyciu raportw .......................................................................195


Zasady projektowania raportw ................................................................................... 195
Kreator raportw ................................................................................................... 196
Korzystanie z szablonw raportw .......................................................................... 200
Raporty tabelaryczne .................................................................................................. 201
Raporty grupujce ...................................................................................................... 203
Raporty etykietowe ..................................................................................................... 208
Raporty kolumnowe .................................................................................................... 209
Raporty z podraportami .............................................................................................. 214
Raporty filtrowane przez formularz ............................................................................... 215
Raporty podsumowujce ............................................................................................. 218
Specjalne formatowanie raportw ................................................................................ 218
Formatowanie warunkowe dla formantw i sekcji raportu ......................................... 219
Umieszczenie na raporcie znaku wodnego .............................................................. 222

Spis treci

Tworzenie gwnego menu za pomoc dodatku Menu Manager ...................................... 226


Instalacja .................................................................................................................. 226
Przygotowania ...................................................................................................... 227
Uruchomienie dodatku .......................................................................................... 228
Podsumowanie .......................................................................................................... 232

Rozdzia 7. Pisanie kodu VBA w moduach ............................................................................................233


Eksplorator projektu .............................................................................................. 234
Okienko waciwoci ............................................................................................. 234
Okno Immediate ................................................................................................... 235
Okno moduu ........................................................................................................ 235
Uzyskiwanie pomocy ............................................................................................. 236
Typy moduw ............................................................................................................ 236
Instrukcje uywane w moduach .................................................................................. 237
Instrukcja Call ...................................................................................................... 237
Ptla Do While Loop ......................................................................................... 238
Ptla Do Until Loop ........................................................................................... 238
Ptla For Next .................................................................................................. 239
Ptla For Each Next .......................................................................................... 240
Instrukcja GoTo .................................................................................................... 240
Instrukcja If Then Else .................................................................................. 240
Instrukcja Select Case End Select ..................................................................... 241
Instrukcja With End With ................................................................................... 243
Przykady kodu z moduw standardowych .................................................................... 244
Wykorzystanie danych z tabeli tblInfo ...................................................................... 244
Kod zakresu dat dla menu gwnego ...................................................................... 246
Przykadowy kod kryjcy si za formularzami ................................................................. 248
Formularz nowego rekordu ..................................................................................... 251
Formularze sortowania i filtracji .............................................................................. 256
Zdarzenie dwukrotnego kliknicia dla podformularza arkusza danych ........................ 261
Podsumowanie .......................................................................................................... 263

Cz II Modyfikacja, uaktualnianie i konserwacja aplikacji w Accessie

265

Rozdzia 8. Zarzdzanie cyklem ycia aplikacji ...................................................................................267


Modyfikacja aplikacji .................................................................................................. 267
Aktualizacja do nowej wersji pakietu Office ................................................................... 268
Aktualizacja aplikacji do nowego formatu bazy danych ............................................. 270
Ustawienie osobnych partycji systemowych dla rnych wersji pakietu Office ............. 270
Korzystanie z baz danych Accessa 2000 w nowszych wersjach Accessa .................... 271
Praca z klientami ....................................................................................................... 278
Relacje z klientami ..................................................................................................... 279
Dokonywanie modyfikacji danych przez klienta .......................................................... 280
Zmiany zwizane z aplikacj .................................................................................. 280
Modyfikacje standardowe ...................................................................................... 293
Dostosowanie komponentu listw Worda z gwnego menu ...................................... 296
Podsumowanie .......................................................................................................... 305

Rozdzia 9. Modyfikacja istniejcej aplikacji ........................................................................................307


Stosowanie konwencji nazewnictwa ............................................................................. 307
Konwencja nazewnictwa Leszynskiego .................................................................... 309
Zastosowanie notacji LNC w bazie danych .............................................................. 315

Microsoft Access. Podrcznik administratora


Tworzenie menu ......................................................................................................... 321
Normalizacja tabel i relacji .......................................................................................... 322
Modyfikacja formularzy, by byo moliwe wywietlanie i edytowanie danych
ze zwizkw wiele do wielu ....................................................................................... 328
Modyfikacja formularza fpriEBookNotes .................................................................. 329
Modyfikacja formularza frmTreeViewEBookNotes ..................................................... 333
Utworzenie nowego formularza frmAuthors .............................................................. 338
Modyfikacja raportw, by uwzgldniay zwizek wiele do wielu ........................................ 340
Podsumowanie .......................................................................................................... 346

Rozdzia 10. Przenoszenie starych danych do nowej bazy danych ....................................................347


Pobieranie starych danych .......................................................................................... 347
Wykorzystanie kwerend z wyliczanymi polami do przenoszenia danych z tabel
nieznormalizowanych do znormalizowanych ................................................................ 350
Wykorzystanie kodu VBA do przenoszenia danych z nieznormalizowanej tabeli
do powizanych tabel znormalizowanych ................................................................... 358
Denormalizacja tabel .................................................................................................. 368
Podsumowanie .......................................................................................................... 375

Cz III Korzystanie z innych komponentw pakietu Office (i nie tylko)

377

Rozdzia 11. Korzystanie z Worda ..........................................................................................................379


Pisanie kodu automatyzacji ......................................................................................... 380
Przydatne przyciski paska narzdziowego ................................................................ 381
Model obiektu Worda ................................................................................................. 382
Diagram modelu obiektu Worda ............................................................................. 382
Uwaga na temat wylicze ...................................................................................... 384
Podstawowe polecenia automatyzacji ..................................................................... 386
Skrtowe tworzenie kodu VBA dla Worda ................................................................ 387
Eksport danych Accessa do dokumentw Worda ........................................................... 388
Typy scalania ....................................................................................................... 389
Przykady wykonywania scalenia ............................................................................. 390
Import danych z tabel Worda do Accessa ..................................................................... 426
Problemy automatyzacji i sposoby ich unikania ............................................................. 432
Referencje ........................................................................................................... 433
Pobranie katalogu dokumentw z Worda ................................................................. 434
Podsumowanie .......................................................................................................... 438

Rozdzia 12. Korzystanie z Outlooka ......................................................................................................439


Tworzenie kodu automatyzacji ..................................................................................... 439
Model obiektu Outlooka .............................................................................................. 440
Diagram modelu obiektu Outlooka ......................................................................... 440
Podstawowe polecenia automatyzacji ..................................................................... 444
Obiekt NameSpace i inne obiekty o nietypowych nazwach ........................................ 445
Skadnia dotyczca referencji do obiektw Outlooka ................................................ 445
Odniesienia do elementw Outlooka w kodzie i interfejsie ........................................ 447
Kreator wymiany danych z Outlookiem .................................................................... 447
Eksport danych Accessa do elementw Outlooka ......................................................... 448
Tworzenie wiadomoci e-mail z poziomu menu gwnego .......................................... 451
Formularz z list umoliwiajc wybr wielu elementw ............................................ 453
Formularz z arkuszem danych ................................................................................ 464
Wysanie e-maila z raportem .................................................................................. 483

Spis treci

Import danych z elementw Outlooka do Accessa ......................................................... 495


Wykorzystanie biblioteki Redemption
w celu uniknicia komunikatu ochrony modelu obiektu ............................................... 504
Podsumowanie .......................................................................................................... 506

Rozdzia 13. Korzystanie z Excela ..........................................................................................................507


Pisanie kodu automatyzacji ......................................................................................... 510
Model obiektu Excela ................................................................................................. 511
Diagram modelu obiektu Excela ............................................................................. 511
Podstawowe polecenia automatyzacji ..................................................................... 513
Zeszyty, arkusze kalkulacyjne i zakresy ................................................................... 515
Skrtowe tworzenie kodu VBA dla Excela ................................................................ 516
Eksport danych z Accessa do Excela ........................................................................... 516
Formularz z list umoliwiajc wybr wielu elementw ............................................ 517
Formularz z arkuszem danych ................................................................................ 532
Import danych z Excela ............................................................................................... 537
Import z arkuszy i zakresw ................................................................................... 538
cze do arkuszy i zakresw danych Excela ............................................................ 540
Podsumowanie .......................................................................................................... 542

Rozdzia 14. Korzystanie z elementw spoza pakietu Office ...............................................................543


Wysyanie faksw za pomoc WinFax ........................................................................... 543
Wysanie pojedynczego faksu za pomoc DDE ......................................................... 543
Faksowanie raportu za pomoc DDE ...................................................................... 554
Wysyanie wielu faksw przy uyciu kodu automatyzacji ............................................ 561
Zapis danych do pliku tekstowego ............................................................................... 566
Eksport kontaktw do Outlooka ............................................................................. 567
Podsumowanie .......................................................................................................... 572

Skorowidz ...............................................................................................................................................573

Aplikacja to co znacznie wicej ni tylko baza danych. Kada osoba znajca cho troch
Accessa moe utworzy baz danych, ale baza danych ze zbiorem niepowizanych ze sob
tabel, kwerend, formularzy i raportw to nie aplikacja. Aplikacja skada si z bazy danych
lub prawdopodobnie kilku baz danych zawierajcych znormalizowane tabele z odpowiednimi zwizkami midzy nimi, kwerend filtrujcych i sortujcych dane, formularzy
dodajcych i edytujcych dane, raportw wywietlajcych dane i prawdopodobnie tabeli lub
wykresw przestawnych analizujcych dane. Poczenie wszystkich tych elementw odbywa si dziki inteligentnie napisanemu kodowi VBA (ang. Visual Basic for Applications). Niniejszy rozdzia skupia si na przygotowaniach do wykonania aplikacji (pobranie i analiza
informacji od klienta) i wykonaniu tabel przechowujcych dane aplikacji.
Wikszo ksiek na temat Accessa przekazuje mnstwo informacji na temat tabel bazy danych (lub innych obiektw bazodanowych), ale rzadko informuje o sprawach najwaniejszych:
w jaki sposb podzieli surowe dane uzyskane od klienta na odpowiednie tabele, z jakiego
typu danych skorzysta dla poszczeglnych pl i jakie zwizki midzy tabelami utworzy,
by powstaa wydajna i dobrze zintegrowana aplikacja. Dziki kilku sesjom z klientem na
zasadzie zadawania pyta i odpowiadania na nie przedstawi, w jaki sposb wydoby
najistotniejsze informacje pomocne przy kreowaniu odpowiednich tabel i zwizkw.
Zawsze atwiej mi byo zrozumie pewien proces, gdy przygldaam si, jak robi to kto
inny. Prba wykonania zadania po przeczytaniu tylko i wycznie suchej dokumentacji
technicznej jest czsto znacznie trudniejsza. Z tego powodu w tym rozdziale wyjani, co
robi, gdy przygotowuj si do utworzenia aplikacji i jej tabel. Kolejne rozdziay powicone
bd wykonywaniu formularzy, kwerend i raportw. Oczywicie pewnych informacji technicznych nie da si unikn, ale zostan one przedstawione naprzemiennie z opisami zada do
wykonania. Wyjanienia znajd si na og po zadaniach do wykonania, a nie na odwrt.
Czasem wystarczy zobaczy, jak kto poprawnie wykonuje pewne zadanie, by mc samemu
wykonywa je prawidowo. Wywody czysto teoretyczne rzadko prowadz do poprawnego
wykonania zada.

D:\ROBOCZ~1\MAKIET~1\MICROS~1.POD\11DRUK~1\r01_r.doc

19

20

Cz I n Tworzenie aplikacji w Accessie


Nie bd w ksice przedstawia wielu zada krok po kroku, by zilustrowa proces tworzenia
bazy danych. Nie pojawi si te dugie listy waciwoci lub innych atrybutw. Zakadam,
i Czytelnik jest zaznajomiony z zasadami tworzenia tabel, formularzy i innych obiektw
bazodanowych (a jeli nawet ich nie zna, to potrafi skorzysta z systemu pomocy programu), ale potrzebuje pomocy w podjciu decyzji zwizanych z umieszczeniem w tabelach
odpowiednich danych, wzajemnym ich powizaniu i okreleniu, jakie formularze, kwerendy i raporty najlepiej nadadz si do poprawnego korzystania z bazy danych.
Cho kod jest niezbdnym elementem umoliwiajcym poczenie elementw aplikacji w jedn, spjn cao, w tym rozdziale nie pojawi si nawet jeden fragment kodu. Wynika to z faktu,
i Access wykonuje kod z procedur obsugi zdarze, a tabele nie posiadaj takich procedur.
Przed napisaniem procedur trzeba utworzy tabele przechowujce dane. Jest to podstawowy
cel niniejszego rozdziau.

Aby zacz tworzy aplikacj w Accessie, trzeba speni dwa warunki: naley uwiadomi
sobie, jakie zadania ma wykonywa aplikacja i jakie wyniki zwraca; trzeba mie te odpowiedni ilo rzeczywistych danych. Zamiast po prostu poprosi klienta o list zada, jakie
aplikacja musi przeprowadzi, na og sama zadaj serie pyta, dziki ktrym potrafi wydoby najwaniejsze dla mnie informacje. Typowa sesja pyta i odpowiedzi zostaa przedstawiona w kolejnym podrozdziale. Jeli jednak istnieje aktualnie wykorzystywana baza
danych i dostpne s wydruki raportw oraz zrzuty ekranowe formularzy, znacznie atwiej
zorientowa si, jakie zadania naley obecnie wykona.
Aby mc osign najlepsze wyniki, trzeba mie dostp do duych iloci rzeczywistych
danych, na przykad informacji o elektronicznych ksikach zawartych w bazie danych wykorzystywanej w rozdziale 9 Modyfikacja istniejcej aplikacji. Jeeli ma si dostp do wystarczajco duej liczby reprezentatywnych danych i klienta, ktry chtnie odpowiada na
pytania, okrelenie potrzebnych tabel i ich pl nie powinno nastrcza duych problemw.
Po uzyskaniu tych informacji wykonanie w Accessie tabel i zwizkw midzy nimi, a take
kwerend, formularzy, raportw i kodu VBA powinno doprowadzi do powstania aplikacji,
ktrej oczekiwa klient.
Co ciekawe, czsto jestem proszona o rozpoczcie pracy nad aplikacj dla klienta, cho nie
otrzymaam adnych danych. Czasem trudno przekona klienta do przedstawionej wczeniej
koncepcji, ale uzyskanie rzeczywistych danych (w formie elektronicznej lub papierowej)
jest wane, by mc poprawnie wykona tabele i ich pola. Jeli sami (jako programici) musimy
wymyli dane, by co zaczo dziaa po utworzeniu tabel i innych obiektw, prawdopodobnie na pniejszym etapie bdziemy zmuszeni dokona z pewnoci bardzo gbokich
zmian w tabelach. Aby tego wszystkiego unikn, najlepiej dysponowa reprezentatywnymi danymi wprost od klienta.
Istniej sytuacje, w ktrych uzyskanie danych od klienta jest po prostu niemoliwe. Pierwsza
sytuacja dotyczy firmy dopiero rozkrcajcej biznes, ktra nie ma adnych danych historycznych.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

21

Druga dotyczy firm, ktrych dane s poufne. W takich sytuacjach warto postara si, by
wymylone dane testowe byy zgodne z informacjami od klienta uzyskanymi w trakcie rozmw. Minimalizuje si wtedy ryzyko dokonywania poprawek w przyszoci.
Gdy uzyskao si dane w postaci elektronicznej lub papierowej, najlepiej uy ich jako surowego materiau, ktry pomaga w okreleniu pl potrzebnych w trakcie projektowania tabel i innych komponentw. Nie warto stosowa tych danych jako gotowych komponentw i ywcem
kopiowa ich struktury do aplikacji. Przygldajc si rzeczywistym danym, nietrudno zauway, czy zawieraj unikatowe identyfikatory produktw czy nie. Jeli istnieje taki unikatowy numer produktu, powinien sta si on kluczem gwnym tabeli produktw w przeciwnym
razie warto utworzy pole z automatyczn numeracj. Jeli klienci maj wiele adresw,
trzeba wykona powizan tabel z danymi adresowymi (jedno z zaoe normalizacji). Jeeli
klienci zawsze maj tylko jeden adres, jego dane mona w sposb bezporedni zapamita
w tabeli klientw. W wikszoci sytuacji, nawet jeli otrzymao si baz danych z tabelami
Accessa, trzeba dokona pewnych modyfikacji ze wzgldu na normalizacj, utworzy tabele pomocnicze i sowniki wykorzystywane jako rda danych dla list rozwijanych.

W trakcie projektowania aplikacji dla klienta (ju po otrzymaniu reprezentatywnych danych)


naley omwi modelowane przez ni procesy nie tylko sposb, w jaki wykonuje si je
obecnie, ale te ewentualne sposoby ich optymalizacji lub rozbudowania. Przykadowo
uytkownicy mog wpisywa dane do pl tekstowych; jeli dane ze swej natury s mao
rnorodne (na przykad regiony sprzeday lub rodzaje numerw telefonw), lista rozwijana z tabel powizan (statycznie) jako rdem danych powinna zapewni zmniejszenie
bdw i uatwi sortowanie oraz filtracj danych.
Klient moe przekaza cae sterty dokumentacji papierowej opisujcej procesy biznesowe,
ktra moe by pomocna lub nie w zalenoci od sposobu opisu tych procesw. Czsto
praktyki biznesowe powstaj przez lata w sposb przyrostowy wraz ze wzrostem dowiadczenia wtedy pewne nowe procedury mog nie integrowa si ze starymi tak dobrze, jak
bymy chcieli. W momencie projektowania aplikacji warto przejrze istniejce procedury
i zastanowi si, czy naley je zmodyfikowa w celu zwikszenia wydajnoci.
Nie warto prbowa wiernie odwzorowywa procesw biznesowych w bazie danych a przynajmniej nie bez ich wnikliwej analizy. Dokadne przyjrzenie si procedurom czsto prowadzi do zauwaenia pewnych luk, ktrymi naley zaj si na poziomie bazy danych. To,
e uytkownicy rcznie pisali listy do klientw w programie Word i spisywali na kartk ich
adresy z innej bazy danych, nie oznacza od razu, i nie naley przeanalizowa moliwoci
automatycznego generowania listw dla Worda. (Wicej informacji na temat generowania
listw dla Worda znajduje si w rozdziale 11, Korzystanie z Worda.).
Czasem zauwaa si, e aplikacja powinna zapewnia procesy, ktre w ogle nie s wykonywane, a byyby bardzo wskazane, na przykad generowanie listw e-mail do klientw lub
analiza danych za pomoc tabel i wykresw przestawnych. Wicej informacji na temat wysyania listw e-mail do klientw z Accessa znajduje si w rozdziale 12, Korzystanie z Outlooka.
Poniewa aplikacja musi mie gdzie przechowywa te wszystkie dane, jednym z pierwszych
zada projektanta jest okrelenie wymaganych tabel bazy danych.

22

Cz I n Tworzenie aplikacji w Accessie

Pierwszym zadaniem w trakcie opracowywania bazy danych jest okrelenie jej elementw i zasad ich wzajemnej wsppracy. (W literaturze bazodanowej czsto stosuje si termin techniczny encja, ale my moemy pozosta przy mniej technicznym okreleniu element).
By moe klient korzysta obecnie z innej bazy danych. W zalenoci od osoby, ktra tworzya oryginaln baz danych, moe si to okaza wiksz przeszkod ni pomoc.
Jako przykad sposobu okrelania elementw, z ktrymi aplikacja musi sobie radzi, przeledzimy spotkanie z hipotetycznym klientem dajcym dostarczenia aplikacji pomocnej w jego
biznesie (firmie zabawkarskiej). Oto kilka podstawowych pyta zadawanych klientowi.
P:

Czym si zajmujecie?

O:

Sprzedajemy zabawki.
Potrzebujemy tabeli z zabawkami.

P:

Czy dla kadej zabawki macie numer lub identyfikator produktu?

O:

Tak, kombinacj liter i cyfr.


Potrzebujemy pola tekstowego ToyID jako klucza gwnego dla tabeli tblToys.

P:

Czy produkujecie zabawki, czy moe kupujecie je od dostawcw, a nastpnie sprzedajecie?

O:

Produkujemy wasne i sprzedajemy zabawki innych producentw.


Potrzebujemy tabeli materiaw potrzebnych do produkcji zabawek. By moe
konieczne oka si dwie tabele jedna dla zabawek zakupionych w celu
odsprzeday i jedna dla zabawek wasnej produkcji. Trzeba okreli, czy te dwa typy
zabawek na tyle rni si od siebie, by tworzy rne tabele, czy te mog znale
si w tej samej tabeli, ale z rnymi wartociami w kilku polach i z zastosowaniem
osobnej tabeli materiaw dla zabawek wasnej produkcji.

P:

Jakie s rnice midzy zabawkami wasnej produkcji a kupowanymi?

O:

Dla zakupionych zabawek musimy przechowywa nazw dostawcy, numer produktu


stosowany przez dostawc, cen i dat zakupu. Dla produkowanych zabawek musimy
wiedzie, ile potrzeba materiau do jego produkcji, jakie s koszty produkcji i kiedy
dochodzi do wykonania danego rodzaju zabawek.
Wyglda na to, e wystarczy jedna tabela zabawek z polem okrelajcym, czy dana
zabawka zostaa zakupiona, czy moe wyprodukowana. Pole suyoby pniej do
wczania lub wyczania rnych formantw formularza. Potrzebujemy te tabeli
dostawcw uywanej do okrelania zawartoci pola nazwy dostawcy i tabeli
materiaw w celu okrelania materiaw, z ktrych powstaje zabawka.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

23

P:

Czy materiay kupujecie od innych dostawcw ni zabawki do odsprzeday, czy moe jeden dostawca sprzedaje wam materiay i gotowe zabawki?

O:

Wikszo naszych dostawcw sprzedaje nam wycznie gotowe zabawki. Cz sprzedaje tylko materiay. Jedynie kilku sprzedaje zarwno zabawki, jak i materiay.
Wszystkich dostawcw mona przechowywa w jednej tabeli z odpowiednimi
polami typu Tak/Nie, wskazujcymi, czy sprzedaj gotowe zabawki, czy materiay,
czy oba te elementy.

P:

Wasne zabawki tworzycie w warsztacie lub fabryce, czy te zlecacie ich wytwarzanie
innej firmie?

O:

Wykonujemy je we wasnym warsztacie.


Nie jest potrzebna tabela zleceniobiorcw.

P:

Czy macie jeden, czy moe kilka warsztatw?

O:

Tylko jeden.
Nie jest potrzebna tabela powizana dla warsztatw.

P:

Czy wykonujecie inne prace poza sprzeda zabawek?

O:

Tak, naprawiamy zepsute zabawki.


Potrzebujemy tabeli napraw.

P:

Naprawiacie tylko wasne zabawki? Czy moe reperujecie take te wyprodukowane


przez firmy trzecie?

O:

Naprawiamy wasne zabawki i podobne innych producentw.


Nie moemy identyfikowa naprawianych zabawek po prostu po polu ToyID.
Potrzebujemy automatycznie numerowanego pola, ktre jednoznacznie zidentyfikuje
zabawki zakupione lub wyprodukowane w innym miejscu, a nastpnie oddane do
naprawy.

P:

Czy naprawy wykonujecie we wasnym zakresie, czy zlecacie je innym firmom?

O:

Wykonujemy we wasnym zakresie.


Potrzebujemy tabeli pracownikw z moliwoci okrelenia, ktrzy z nich zajmuj
si naprawami.

P:

Czy wysyacie katalogi lub inne materiay promocyjne?

O:

Tak.
Potrzebujemy tabeli klientw oraz tabeli potencjalnych klientw.

P:

Wysyacie reklamy poczt zwyk czy elektroniczn, a moe oboma sposobami?

O:

Oboma.
Tabela listy mailingowej powinna zawiera adresy korespondencyjne i adresy e-mail.

24

Cz I n Tworzenie aplikacji w Accessie


P:

Czy sprzedajecie zabawki w sklepie, w sposb wysykowy, czy przez internet?

O:

W sklepie firmowym i w sposb wysykowy (zamwienia listowne lub telefoniczne).


Na razie nie sprzedajemy przez internet, ale planujemy tak moliwo w przyszoci.
Potrzebujemy tabeli zamwie z polem okrelajcym sposb sprzeday. Klienci
powinni by wybierani z tabeli klientw z moliwoci wprowadzenia nowego
klienta w locie w trakcie skadania zamwienia. Poniewa zamwienia listowne
i telefoniczne bd wymagay adresu dostawy i kupujcego, potrzebujemy osobnej
tabeli z adresami dostawy.

Po tej prostej serii pyta i odpowiedzi wiemy ju, e aplikacja potrzebuje tabel dla nastpujcych elementw (s to encje aplikacji):
n

zabawki,

kategorie,

dostawcy,

klienci,

adresy dostaw,

lista mailingowa,

materiay,

naprawy,

pracownicy,

zamwienia.

Dodatkowo potrzebnych bdzie kilka powizanych tabel przechowujcych dane zwizane z gwnymi tabelami. Co wicej, pojawi si tak zwane sowniki (tabele powizane)
wymagane do zapewnienia spjnoci danych. Stosuje si je do wypeniania rozwijanych list
wyboru.

Gdy ma si cz informacji od klienta, mona rozpocz tworzenie tabel i okrelanie


zwizkw midzy nimi, zamieniajc zbir chaotycznych danych w znormalizowane tabele
reprezentujce elementy bazy danych. Korzystajc z listy tabel uzyskanej dziki sesjom
pyta i odpowiedzi od klienta, zacznijmy tworzy aplikacj dla sklepu z zabawkami. Zastosowanie jednej konwencji nazewnictwa od samego pocztku znaczco uatwi pniejsze
prace nad aplikacj. Uywam konwencji nazewnictwa Leszynskiego (LNC), ktra zostaa
dokadniej opisana w rozdziale 9, Modyfikacja istniejcej aplikacji. Dla tabel przedrostkiem LNC jest tbl, wic zaczynaj si od niego wszystkie nazwy tabel.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

25

Sposoby tworzenia tabel


Aby utworzy now tabel, kliknij przycisk Nowy z okna Baza danych, gdy na pasku obiektw
po lewej stronie wybrany jest obiekt Tabele. Okno dialogowe Nowa tabela, przedstawione
na rysunku 1.1, zawiera kilka propozycji.

Rysunek 1.1.

W wikszoci przypadkw najlepiej jest wybra opcj Widok projektu i zacz tworzy
pola tabeli. Pozostae opcje przydaj si w pewnych szczeglnych sytuacjach. Warto rozway,
czy tabela jest jedn z tabel standardowych (wtedy przydatnym skrtem staje si opcja
Kreator tabel), czy raczej nie (wtedy najlepszy wybr to Widok projektu). Wszystkie opcje
zostay dokadniej omwione w kolejnych podrozdziaach.
n

Opcja Widok arkusza danych ten wybr nie ma zbyt wiele do zaoferowania.
Nowa tabela zostaje otwarta w widoku arkusza danych i mona rozpocz wpisywanie
danych do pierwszego wiersza. Aby nada nazwy polom w tym widoku, trzeba
klikn je kilka razy (pocztkowo zawieraj nazwy Polen) a do jego zaznaczenia,
a nastpnie wpisa now nazw. Jest to znacznie mniej wygodne rozwizanie od
podawania nazw pl w widoku projektu. Access zgaduje typ danych na podstawie
informacji wpisanych w pierwszym wierszu. Czasem si myli, wic i tak trzeba
poprawia typy pl w widoku projektu. Na przykadowej tabeli przedstawionej
na rysunkach 1.2 i 1.3 po przejciu do widoku projektu nietrudno zauway, i pole
ToyID nie zostao rozpoznane jako pole klucza, natomiast pola przechowujce ceny
s typu Liczba zamiast Walutowy.

Rysunek 1.2.

Gdy tworzy si now tabel w widoku arkusza danych, wpisanie tekstu w polu
powoduje utworzenie pola typu Tekst; wpisanie liczby powoduje utworzenie pola
typu Liczba; wpisanie liczby ze znakiem dolara lub dopisanie tekstu z (w zalenoci
od ustawie regionalnych) powoduje powstanie pola typu Walutowy; wpisanie
daty w rozpoznawalnym formacie spowoduje powstanie pola typu Data/Godzina.
Jeli trzeba utworzy pole innego typu (na przykad Tak/Nie, Nota lub Obiekt
OLE), trzeba sign do widoku projektu.

26

Cz I n Tworzenie aplikacji w Accessie

Rysunek 1.3.
n

Rysunek 1.4.

Opcja Widok projektu najlepszy wybr dla niestandardowych tabel,


ktre trzeba tworzy od podstaw. Tabela zostaje otwarta w widoku projektu,
co umoliwia wprowadzenie nazwy kadego pola w osobnym wierszu i wybranie
odpowiedniego typu z rozwijanej listy Typ danych (patrz rysunek 1.4).

Rozdzia 1. n Tworzenie bazy danych dla aplikacji


n

Opcja Kreator tabel przydatna jako skrt przy tworzeniu standardowych tabel,
na przykad tabeli nazw klientw i danych adresowych. Do tabel tych naley
podchodzi z rezerw, gdy czsto nie s one znormalizowane. Przykadowo
tabela Kontakty przedstawiona na rysunku 1.5 zawiera kilka pl z numerami
telefonw (prawdopodobnie w celu dopasowania jej do listy kontaktw programu
Outlook), co w zalenoci od kontaktu moe prowadzi do utworzenia zbyt wielu
lub zbyt maej liczby pl z numerami telefonw. Poza pewnymi rzadkimi wyjtkami
numery telefonw i identyfikatory powinny znale si w powizanej tabeli, ktra
pozwala utworzy dokadnie tyle elementw, ile jest aktualnie potrzebnych.

Rysunek 1.5.
n

Opcja Tabela importu umoliwia zaimportowane danych z zewntrznego


rda do tabeli Accessa. Po dokonaniu importu warto sprawdzi pola pod ktem
poprawnoci typw i, by moe, podzieli dane na kilka powizanych
i znormalizowanych tabel.

Opcja Tabela czy wie tabel Accessa z danymi z innego programu, na


przykad Excela. Tabele czy nie s tak przydatne jak inne tabele, poniewa nie
mona zmieni ich struktury. Warto je stosowa tylko wtedy, gdy potrzebuje si
szybkiego widoku aktualnych danych przechowywanych w innym programie.
W oknie Baza danych tabele czy maj strzak po lewej stronie nazwy tabeli
i odpowiedni ikon dla kadego typu danych. Rysunek 1.6 przedstawia trzy
tabele czy jedn jest plik tekstowy z danymi rozdzielonymi przecinkami,
drug jest plik dBASE, a trzeci plik arkusza programu Excel. Uyam znacznika
tcsv dla pliku tekstowego, tdbf dla pliku dBASE i txls dla pliku Excela. Dziki
temu wiem, z jakim rodzajem pliku mam do czynienia, gdy nie widz ikon
z okna Baza danych.

Tabela macierzysta to tabela zawierajca dane w Accessie; zdecydowana wikszo


tabel, z ktrymi ma si do czynienia, to tabele macierzyste. Gdy tworzy si now tabel
w Accessie, jest to tabela macierzysta. Podobnie dane importowane z zewntrznego
programu do Accessa rwnie zostaj umieszczone w tabeli macierzystej. Poza tymi
tabelami istniej rwnie tabele czy, ktre pozwalaj pracowa z danymi z innych programw, na przykad Excela lub dBASE.

27

28

Cz I n Tworzenie aplikacji w Accessie

Rysunek 1.6.

Tworzenie tabel
Zaczn od tabeli tblToys, ktra bdzie gwn tabel przechowujc informacje o zabawkach
sprzedawanych klientom (oraz dla nich produkowanych). Poniewa kreator tabel oferuje
tabel Produkty, zacznijmy od niej i zmodyfikujmy j wedug wasnych potrzeb. Rysunek
1.7 przedstawia tabel Produkty w kreatorze tabel. Wybraam wikszo standardowych pl,
aby uatwi sobie wykonanie tabeli zabawek.

Rysunek 1.7.

Okno Kreator tabel zawiera przycisk umoliwiajcy zmian nazwy pola. Zmian nazwy
mona rwnie przeprowadzi na pniejszym etapie, otwierajc widok projektu i modyfikujc zawarte tam pola. Po wybraniu pl (i ewentualnej zmianie ich nazw) kliknij przycisk
Dalej, aby przej do nastpnego etapu kreatora, w ktrym podaje si nazw tabeli (w tym
przypadku tblToys) i okrela, czy klucz podstawowy ma zosta wybrany przez Accessa,
czy sami go okrelimy. Wybierz opcj Nie, samodzielnie ustawi klucz podstawowy, poniewa chcemy mie pen kontrol nad wyborem pola klucza.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

29

Ponowne kliknicie przycisku Dalej powoduje wywietlenie informacji, i kreator poprawnie


zakada, e pole ToyID powinno by polem klucza. Dodatkowo daje do wyboru trzy moliwe
rozwizania dotyczce klucza (patrz rysunek 1.8). Naley zaznaczy trzeci opcj, poniewa
pole identyfikatora zabawki bdzie zawiera kombinacj cyfr i liter. (Pierwsza opcja oznacza
pole numerowane automatycznie, druga opcja dotyczy identyfikatora liczbowego).

Rysunek 1.8.

Ponowne kliknicie przycisku Dalej powoduje wywietlenie zapytania, czy chce si doczy
now tabel do innych tabel bazy danych. Poniewa jest to nowa tabela, po prostu jeszcze
raz kliknij przycisk Dalej. Z ostatniego ekranu kreatora wybierz opcj Modyfikuj projekt
tabeli, aby otworzy now tabel w widoku projektu, dziki ktremu mona uszczegowi
jej struktur.
Jeli nie ustawi si relacji midzy tabelami w kreatorze tabel, zawsze mona zrobi
to pniej w oknie relacji w zasadzie wiele osb preferuje wykonywanie tego
zadania wanie w tym oknie, poniewa dostarcza ono znacznie bardziej intuicyjny
interfejs.
Pierwszy krok polega na ustaleniu maski wprowadzania dla pola ToyID, aby
zapewni wpisywanie w nim danych zgodnych ze specyfikacj uzyskan od klienta.
Aby utworzy mask wprowadzania, mona klikn przycisk z wielokropkiem po
prawej stronie pola tekstowego maski (otworzy si wtedy kreator maski) lub te
od razu wpisa szablon maski. Poniewa kreator masek nie zawiera standardowo
odpowiedniej opcji, musimy wpisa mask w sposb bezporedni. Ponisza tabela
przedstawia znaki, z jakich mona skorzysta w celu ograniczenia wartoci
moliwych do wpisania w polu tekstowym.
Przypumy, e dla przykadowej tabeli zabawek klient poinformowa o stosowaniu dwch
wielkich liter i trzech cyfr do identyfikacji poszczeglnych zabawek. Potrzebujemy wic
znaku >, by zamieni wpisywane litery na wielkie, nastpnie dwa znaki L i trzy zera. Pole maski
wprowadzania powinno zatem zawiera poniszy tekst:
>LL000

30

Cz I n Tworzenie aplikacji w Accessie


Znak maski

Dopuszczalne znaki wejciowe

Wymagana cyfra od 0 do 9; znaki plus i minus nie s dozwolone.

Opcjonalna cyfra od 0 do 9 lub spacja; znaki plus i minus nie s dozwolone.

Opcjonalna cyfra lub spacja; puste miejsca zostaj skonwertowane na spacje;


znaki plus i minus s dozwolone.

Wymagana litera od A do Z lub od a do z.

Opcjonalna litera od A do Z lub od a do z.

Wymagana litera lub cyfra.

Opcjonalna litera lub cyfra.

&

Wymagany znak lub spacja.

Opcjonalny znak lub spacja.

.,:;- /

Znaki uamka, separatora tysicy, wartoci daty i czasu uywane znaki


zale od ustawie regionalnych z panelu sterowania.

<

Konwertuje nastpny znak na ma liter.

>

Konwertuje nastpny znak na wielk liter.

Powoduje wywietlanie maski wprowadzania od prawej do lewej zamiast od


lewej do prawej. W pewnych wersjach pakietu Office ten przecznik nie dziaa
poprawnie. Warto zajrze do bazy wiedzy firmy Microsoft (KB) do artykuu
o numerze 209049 (Input Mask Character (!) Does Not Work as Expected),
ktry zawiera wyjanienie problemu dla Accessa 2000. Artyku mona przejrze,
odwiedzajc witryn http://support.microsoft.com.

Informuje, e nastpny znak naley traktowa dosownie.

PASSWORD

Tworzy pole tekstowe do wpisywania hasa wpisany tekst jest


zapamitywany poprawnie, ale w ramach bezpieczestwa zamiast znakw
zostaj wywietlone gwiazdki.

Poza standardowymi polami z kreatora tabel potrzebujemy kilku dodatkowych pl przechowujcych dane zwizane z produkowanymi zabawkami. Rysunek 1.9 przedstawia tabel z dodatkowymi polami. W tabeli pojawia si kolejny identyfikator, VendorProductID, ale nie stosujemy dla niego maski, gdy rni dostawcy stosuj odmienne formaty identyfikatorw.
Informacje na temat materiaw nie s przechowywane w tej tabeli, ale w innej, ktra dopiero zostanie utworzona.
Kolejny krok to utworzenie tabel tblVendors i tblCategories, ktre zostan powizane z tabel tblToys. Po wybraniu standardowej tabeli kategorii z kreatora tabel kliknij przycisk
Relacje, aby powiza t tabel z polem CategoryID tabeli tblToys (patrz rysunek 1.10).
Wybierz rodkow opcj w oknie kolejnego kreatora (patrz rysunek 1.11), poniewa jedna
kategoria zabawek bdzie dotyczya wielu rekordw z tabeli tblToys.
Teraz okno kreatora tabeli informuje, e tabela tblCategories jest powizana relacj z tabel tblToys (patrz rysunek 1.12).

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

31

Rysunek 1.9.

Rysunek 1.10.

Istnieje relacja midzy tabelami tblCategories i tblToys, ktr mona zobaczy w oknie
relacji (patrz rysunek 1.13).
Cho w oknie relacji kreatora tabel zostaa wybrana opcja Jeden rekord w tabeli tblCategories bdzie pasowa do wielu rekordw tabeli tblToys, tak naprawd nie powsta zwizek
jeden do wielu midzy tymi tabelami, mimo e tak wanie powinno si sta. Jest to jeden

32

Cz I n Tworzenie aplikacji w Accessie

Rysunek 1.11.

Rysunek 1.12.

Rysunek 1.13.

z powodw, dla ktrych relacje warto okrela w oknie relacji, a nie w kreatorze. W dalszej
czci rozdziau dokadnie przedstawi, w jaki sposb zmodyfikowa typy relacji ustawione
przez kreatora tabel.
Powrmy do tworzenia tabel. Tabel tblVendors mona utworzy, korzystajc z kreatora
i predefiniowanej tabeli dostawcy. Nastpnie naley poczy t tabel z polem VendorID tabeli
tblToys. Kreator nie wykonuje wszystkich zada wymaganych do poprawnego powizania tabel. Jeli chce si ustawi tabele tblCategories i tblVendors jako surowe rda sownikowe,
aby wartoci byy wybierane tylko z powizanych tabel, trzeba to zrobi samemu. Wicej informacji na ten temat znajduje si w kolejnym podrozdziale.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

33

W trakcie tworzenia pl tabeli naley okreli odpowiedni typ danych dla kadego pola, aby
zapewni wprowadzanie w danym polu jedynie poprawnych informacji (nie uda si wpisa tekstu do pola numerycznego!) i uatwi sortowanie oraz filtracj. Ponisza tabela wymienia typy
danych dostpne w Accessie wraz z krtkim komentarzem. Gwny typ danych to typ, ktry
wida na licie rozwijanej w trakcie tworzenia lub edycji pola; niektre typy (na przykad Liczba
i Autonumerowanie) maj podtypy, ktre ustawia si za pomoc waciwoci Rozmiar pola.
Gwny
typ pola

Opis

Komentarz

Tekst

Dane tekstowe do 255 znakw

Uywany dla danych tekstowych


i liczb (na przykad identyfikatorw),
ktre nie s uywane
w obliczeniach.

Nota

Blok tekstu zawierajcy


do 65 535 znakw

Uywany dla dugich tekstw; pole


to udostpnia jedynie ograniczone
sortowanie (uywanych jest w nim
tylko 255 pierwszych znakw).

Bajt

Liczba cakowita w zakresie


od 0 do 255

Niewielkie liczby cakowite.

Liczba
cakowita

Liczba cakowita w zakresie


od 32 768 do 32 767

redniej wielkoci liczby


cakowite.

Liczba
cakowita
duga

Liczba cakowita w zakresie


od 2 147 483 648
do2 147 483 647

Dugie liczby cakowite. Jest to


domylny typ. Odpowiada polu
autonumerowania przy
powizanych tabelach.

Pojedyncza
precyzja

Wartoci od 3,402823E38
do 1,401298E45 dla liczb
ujemnych i od 1,401298E45
do 3,402823E38 dla liczb
dodatnich

Dokadny do 7 miejsc
po przecinku.

Podwjna
precyzja

Wartoci od
1,79769313486231E308
do 4,94065645841247E324
dla liczb ujemnych i od
4,94065645841247E324
do 1,79769313486231E308
dla liczb dodatnich

Dokadny do 15 miejsc
po przecinku.

Liczba

Podtypy

Identyfikator Globalnie unikatowy


replikacji
identyfikator (GUID).
Szesnastobajtowe pole
uywane jako unikatowy
identyfikator przy replikacji
baz danych

Uywany jedynie
w zreplikowanych bazach danych.

34

Cz I n Tworzenie aplikacji w Accessie


Gwny
typ pola

Podtypy

Opis

Komentarz

Dziesitne

Wartoci od 10^281
do 10^281

Dokadny do 28 miejsc
po przecinku.

Data/Godzina

Data lub czas

Daty zawsze warto przechowywa


w polu tego typu, poniewa
umoliwia to wykonywanie
na nich oblicze.

Walutowy

Wartoci walutowe lub liczby Pole to pozwala pozby si efektu


wymagajce duej dokadnoci zaokrgle w trakcie oblicze. Pole
w obliczeniach
jest dokadne do 15 miejsc przed
przecinkiem i do 4 miejsc po przecinku.

AutoLiczba
numerowanie cakowita
duga

Automatycznie zwikszana
Taki sam typ danych jak Liczba
warto uywana jako unikatowy cakowita duga. Uywany
identyfikator rekordu
w tworzeniu relacji. Mog pojawi
si w dziury w numeracji, jeli rekord
zosta utworzony, a pniej usunity.

Identyfikator Losowe wartoci uywane jako Jest to bardzo dugi i dziwnie


replikacji
unikatowy identyfikator
wygldajcy tekst.
rekordu
Tak/Nie

Dane, ktre mog przyjmowa


warto prawda lub fasz

Nie s dopuszczalne wartoci puste.

Obiekt OLE

Dokumenty utworzone
w programach wspierajcych
mechanizm OLE (na przykad
Word lub Excel)

Obiekt nie bdzie widoczny w tabeli.


Aby go wywietli, trzeba uy
formularza lub raportu. Po tym polu
nie mona sortowa. Nie da si
utworzy dla niego indeksu.

Hipercze

cieki URL lub UNC

Kliknicie wartoci tego pola


powoduje otwarcie strony WWW
(jeli cze jest poprawne).

Kreator
odnonikw

Nie jest to osobny typ danych,


ale kreator umoliwiajcy
okrelenie tabeli lub listy
wartoci, z ktrych bdzie
pobierana warto pola

Gdy pole zostanie ustawione na ten


typ, w widoku arkusza danych nie
bdzie widoczna jego warto.

Niezalenie, czy korzystam z kreatora, czy widoku projektu, nie stosuj pl stworzonych
kreatorem odnonikw. Zamiast tego uywam tabeli powizanej w listach rozwijanych, ustawiajc odpowiedni waciwo dla tych formantw na formularzu. Powd takiego postpowania wynika z faktu, i zastosowanie kreatora odnonikw (na przykad dla VendorID)
uniemoliwia wywietlenie wartoci tego pola w widoku arkusza danych zostanie wywietlona nazwa dostawcy z tabeli powizanej. Aby zobaczy identyfikator dostawcy, trzeba
zmieni typ pola. Co wicej, typ danych kreatora odnonikw zawsze powoduje zastosowanie
listy rozwijanej na formularzu, cho czasem sytuacja wymaga zastosowania pola tekstowego,
poniewa warto jest tylko odczytywana.
Rysunek 1.14 przedstawia tabel tblVendors wykonan przy uyciu kreatora tabel.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

35

Rysunek 1.14.
Mona uy klawisza F6 jako skrtu do przechodzenia midzy polem tabeli w widoku
projektu a zbiorem waciwoci. Ten klawisz jest szczeglnie przydatny, gdy ustawia
si waciwo rozmiaru pola dla pl numerycznych.

Poniewa klient powiedzia, e dostawcy mog sprzedawa zarwno gotowe zabawki, jak
i materiay do ich produkcji, tabela potrzebuje dwch pl typu Tak/Nie, aby mc wskaza, czy
dostawca sprzedaje zabawki, materiay, czy obie te rzeczy naraz. Dodaam wic te pola, ustawiam domyln warto pola SellsToys na Tak (poniewa klient poinformowa, i wikszo
dostawcw sprzedaje zabawki) i domyln warto pola SellsMaterials na Nie.
Cho Access umoliwia stosowanie spacji (i wikszoci znakw przestankowych)
w nazwach pl (zauwa ukonik w nazwie pola Country/Region z tabeli tblVendors),
osobicie staram si unika spacji i innych nietypowych znakw (poza podkreleniem),
aby unikn problemw z okrelaniem pl w kodzie i poleceniach SQL, a take
w celu zapewnienia zgodnoci w trakcie eksportu danych z tabel do innych
programw, ktre mog nie dopuszcza spacji w nazwach pl.
Czsto w trakcie tworzenia tabel zdaj sobie spraw, i musz klientom zada
dodatkowe pytania. Bardzo rzadko zna si wszystkie potrzebne informacje po
pierwszym spotkaniu. Warto spotyka si z klientem od czasu do czasu, by rozwia
wtpliwoci co do przyszej struktury aplikacji. Na tym etapie pojawio si pytanie,
czy wszyscy dostawcy maj swoje siedziby w Stanach Zjednoczonych. Gdyby tak
byo, mona by pozby si pola Country/Region i naoy odpowiednie maski na
skrty nazw stanw i kody pocztowe. Jeli jednak dostawcy pochodziliby z wielu
krajw, pole krajw musiaoby pozosta (ale usuwam z niego ukonik). Poza tym

36

Cz I n Tworzenie aplikacji w Accessie


pola PostalCode i StateOrProvince pozostaj bez masek wprowadzania lub te
stosuj dla nich maski na poziomie formularzy (albo stosuj odpowiednie
procedury zdarze, by uniemoliwi wpisanie bdnych danych).
P:

Czy wszyscy dostawcy znajduj si w Stanach Zjednoczonych? Czy niektrzy znajduj si w innych krajach?

O:

Niektrzy dostawcy pochodz spoza USA.


Naley pozostawi pola w oryginalnej postaci.

Pojawiaj si rwnie kolejne pytania.


P:

Czy potrzebujecie tylko jednego numeru telefonu i jednego numeru faksu? Czy dostawcy mog mie wicej ni jeden numer telefonu? Jak wyglda sprawa z adresami
e-mail?

O:

Niektrzy dostawcy maj numery telefonw komrkowych i wiele adresw e-mail.


Trzeba usun pola telefonu i adresu e-mail z tabeli tblVendors i utworzy osobne
tabele powizane przechowujce te informacje.

P:

Czy wysyacie listy w formacie Worda do przedstawicieli dostawcw?

O:

Nie. Nazwiska przedstawicieli przechowujemy tylko po to, by wiedzie, o kogo prosi,


gdy dzwonimy do dostawcy.
Nie musimy wic umieszcza imienia i nazwiska przedstawiciela w osobnych
polach, co byoby konieczne, gdyby wysyao si do niego listy.

Rysunek 1.15 przedstawia ostateczn wersj tabeli tblVendors.

Rysunek 1.15.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

37

Powizane tabele wymagaj jedynie pola VendorID oraz odpowiednio pl opisu telefonu
i numeru telefonu oraz adresu e-mail. Pole VendorID powinno by typu Liczba cakowita
duga, aby pasowao do typu pola VendorID z tabeli tblVendors. W momencie zapisu nie
naley tworzy pola klucza; VendorID jest kluczem obcym w tabelach tblVendorPhones
i tblVendorEMails (definicja klucza obcego znajduje si w dalszej czci rozdziau). Poniewa dostawcy mog znajdowa si poza Stanami Zjednoczonymi, nie trzeba tworzy maski
wprowadzania dla numerw telefonw. Rysunek 1.16 przedstawia widok projektu obu tabel.
Zostan one powizane relacj z tabel tblVendors w oknie Relacje w dalszej czci rozdziau.
Tabela tblVendorPhones zawiera pole numeru telefonu i dodatkowe pole okrelajce typ numeru (subowy, domowy, faks itp.). Dla kadego dostawcy bdzie mona okreli dowoln
liczb numerw telefonw.

Rysunek 1.16.

Kontynuujemy prace nad tabelami aplikacji dla firmy zabawkarskiej. Tabel tblCustomers
mona utworzy na podstawie przykadowej tabeli Kontrahenci z kreatora tabel. Wystarczy
jedynie zmieni nazwy poszczeglnych pl w sposb przedstawiony na rysunku 1.17.
Podobnie jak w przypadku tabeli dostawcw, take teraz mamy kilka dodatkowych pyta do
klienta.
P:

Czy potrzebujecie tylko jednego numeru telefonu i jednego numeru faksu? Czy dostawcy
mog mie wicej ni jeden numer telefonu? Jak wyglda sprawa z adresami e-mail?

O:

Niektrzy dostawcy maj numery telefonw komrkowych i wiele adresw e-mail. W zasadzie niektrzy klienci maj nawet wasne witryny internetowe.
Trzeba usun pola telefonu i adresu e-mail z tabeli tblVendors i utworzy osobne
powizane tabele przechowujce te informacje. Musimy te doda pole WebSite
typu Hipercze.

38

Cz I n Tworzenie aplikacji w Accessie

Rysunek 1.17.

P:

Czy wszyscy klienci s z USA, czy moe klientami s rwnie obywatele innych
pastw?

O:

Wszyscy klienci s obywatelami Stanw Zjednoczonych.


Moemy usun pole Country/Region, a take zastosowa odpowiednie maski
dla pl StateOrProvince i PostalCode.

Kocow wersj tabeli tblCustomers przedstawia rysunek 1.18.


Tabele tblCustomerPhones i tblCustomerEMails s bardzo podobne do tabel tblVendorPhones
i tblVendorEMails. Potrzebujemy jeszcze jednej tabeli, ktra bdzie przechowywaa adresy
dostaw (potrzeba takiej tabeli zostaa wskazana ju na pierwszym spotkaniu z klientem).
Adres kupujcego mona przechowywa bezporednio w tabeli tblCustomers, poniewa istnieje tylko jeden taki adres dla kadego klienta. Z drugiej strony moe istnie wiele adresw
dostaw. Tabela tblShippingAddresses zawiera automatycznie numerowane pole ShipAddressID,
pole czce CustomerID, pole identyfikatora adresu (w celu uatwienia wyboru adresu z listy rozwijanej na formularzu) i zbir pl adresowych. Cho pola adresowe mogyby mie
dokadnie takie same nazwy jak podobne pola z tabeli tblCustomers, stosuj przed nimi
przedrostek Ship, aby mc je w atwy sposb odrni w poleceniach SQL. Uzyskan tabel
przedstawia rysunek 1.19.
Kolejn tabel do wykonania jest tblMailingList (lista adresowa i lista mailingowa), ktr
najlepiej utworzy na podstawie szablonu Lista adresowa z kreatora tabel. Naley pomin
wszystkie pola poza nazwiskiem, adresem, adresem e-mail, dat aktualizacji i notatkami.
Rysunek 1.20 przedstawia utworzon w ten sposb tabel.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

Rysunek 1.18.

Rysunek 1.19.

39

40

Cz I n Tworzenie aplikacji w Accessie

Rysunek 1.20.

Po przyjrzeniu si pocztkowej wersji tabeli doszam do wniosku, e na licie moe si znajdowa kilka osb z tej samej firmy, wic informacje o firmie warto umieci w osobnej tabeli
i poczy obie tabele za pomoc pola CompanyID. Z drugiej strony pewne osoby na licie adresowej mog nie by powizane z adn firm, wic warto pozostawi dane adresowe i doda
pole CompanyID wskazujce w razie potrzeby na odpowiedni rekord tabeli tblMailingListCompanies. Rysunek 1.21 przedstawia zmodyfikowan tabel tblMailingList oraz now tabel
tblMailingListCompanies. W trakcie wprowadzania nowego wpisu do listy adresowej pola
adresowe z tabeli tblMailingList bd dostpne tylko wtedy, gdy nie zostanie wybrana adna
firma z pola CompanyID. W przypadku wybrania firmy uyjemy jej adresu do wysyania reklam.
Klienci zapewne te bd otrzymywa katalogi i reklamy, ale nie oznacza to, i caa lista adresowa musi znajdowa si w tabeli tblCustomers moemy zastosowa uni, by poczy
dane z tabel tblCustomers i tblMailingList w momencie wysyania listw. (Wicej informacji na temat unii znajduje si w rozdziale 4, Sortowanie i filtrowanie danych za pomoc
kwerend.).
Dla pl daty zalecam wybranie takiego formatu, ktry wywietla wszystkie cztery cyfry roku,
aby unikn problemw z okrelaniem, czy dany rok dotyczy XX lub XXI wieku. Dla poszczeglnych pl mona wybra jeden ze standardowych formatw, uywajc waciwoci
formatu lub wpisa format bezporednio, na przykad d/m/rrrr. Wicej informacji na temat
formatu daty mona znale w pomocy programu Access. Ewentualnie mona wczy
wywietlanie czterocyfrowego roku w sposb globalny (przesania to wszystkie ustawienia
z waciwoci formatu), uywajc okna dialogowego Opcje wywoywanego z menu Narzdzia.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

41

Rysunek 1.21.

Naley przej do zakadki Oglne i wczy odpowiedni opcj z sekcji Uywanie czterocyfrowego formatu roku (patrz rysunek 1.22). Gdy ju znajdujesz si na tej stronie, wycz
opcje zwizane z autokorekt nazw. Autokorekta to nic wicej jak tylko problemy, poniewa
nie dokonuje wszystkich potrzebnych modyfikacji, a czasem zmienia co wtedy, gdy nie powinna tego robi. W rozdziale 9, Modyfikacja istniejcej aplikacji. przedstawiam lepszy
sposb zmiany nazw obiektw bazy danych, ktry korzysta z mojego dodatku LNC Rename.

Rysunek 1.22.

42

Cz I n Tworzenie aplikacji w Accessie


Wykonajmy kolejn tabel o nazwie tblMaterials, ktra zawiera list materiaw uywanych do produkcji zabawek. Warto skorzysta z szablonu Produkty kreatora tabel, pomijajc
zbyteczne pola i modyfikujc nazwy pl. Tabela jest powizana z tabel tblVendors dziki
polu VendorID. Rysunek 1.23 przedstawia okno projektu tabeli tblMaterials.

Rysunek 1.23.

Poniewa materia moe by wykorzystywany do produkcji wielu zabawek, za zabawka


najczciej skada si z wielu materiaw, potrzebujemy zwizku wiele do wielu midzy tabelami tblToys i tblMaterials. Oznacza to konieczno wprowadzenia tabeli czcej, ktra
zawiera tylko pola kluczy. Rysunek 1.24 przedstawia tabel o nazwie tblToyMaterials.

Rysunek 1.24.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

43

Access nie zawiera adnego szablonu dla tabeli napraw (tblRepairs), wic utworzyam now
tabel bezporednio w widoku projektu, dodajc pola przedstawione na rysunku 1.25.

Rysunek 1.25.
Jest kilka wyrazw, ktrych nie warto stosowa jako nazwy pl. S to m.in.: Data, Rok,
Liczba, Numer itp. Naley bowiem unika wszelkich wyrazw, ktre s wbudowanymi
funkcjami Accessa, waciwociami lub sowami kluczowymi, aby uchroni si przed
potencjalnymi problemami w kodzie VBA lub innych miejscach. Warto wtedy rozszerzy
nazw pola, piszc na przykad RokWydania lub DataZamwienia.

Poniewa w trakcie napraw zuywa si materiay, potrzebujemy kolejnej tabeli (tblRepairMaterials), ktra zawiera list materiaw uywanych w trakcie napraw wraz z iloci kadego materiau. Tabel t przedstawia rysunek 1.26.
Tabela tblEmployees bazuje na domylnej tabeli Pracownicy z kreatora tabel, z ktrej zostay
usunite zbyteczne pola. Firma klienta stosuje numeryczn identyfikacj pracownikw. Poniewa pracownicy maj ju przydzielone identyfikatory, nie moemy zastosowa pola z automatycznym numerowaniem. Pole EmployeeID bdzie wic polem tekstowym wypenianym istniejcymi numerami pracownikw. Identyfikatory dla nowych pracownikw bdzie wyliczaa
odpowiednia procedura formularza. Rysunek 1.27 przedstawia tabel tblEmployees.
Ostatni z gwnych tabel jest tblOrders; ona take bazuje na szablonie (Zamwienia) z kreatora tabel. Zostay z niej jednak usunite dane adresowe. Zamiast nich pojawio si pole
ShipAddressID wskazujce odpowiedni adres z tabeli tblShippingAddresses. Potrzebujemy
te pola ToyID, aby zidentyfikowa zakupion zabawk, i pola ToyQuantity okrelajcego
liczb sztuk (co ciekawe, tego elementu brakuje w oryginalnym szablonie). Tworzon tabel
przedstawia rysunek 1.28.

44

Cz I n Tworzenie aplikacji w Accessie

Rysunek 1.26.

Rysunek 1.27.

Pole SupervisorID (okrelajce przeoonego) przyjmuje warto EmployeeID innego rekordu,


wybieran z listy rozwijanej na formularzu.
Niektre informacje na temat pracownikw powinny by poufne, wic informacje takie jak
numer SSN (numer ubezpieczenia spoecznego stosowany w USA) i kwota zarobkw powinny
znale si w osobnej tabeli (tblEmployeesConfidential), ktra zostaa przedstawiona

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

45

Rysunek 1.28.

na rysunku 1.29. (Dla numeru SSN zostaa okrelona maska wprowadzania). Umieszczajc
te informacje w osobnej tabeli, mona zapewni dostp do nich jedynie wybranym pracownikom, uywajc uprawnie na poziomie obiektu dla zabezpieczonej bazy danych. Nawet
jeli nie chce si zabezpiecza bazy danych, warto poufne informacje umieci w innej tabeli, by nie byy widoczne w trakcie typowych prac nad gwn tabel pracownikw.

Rysunek 1.29.

Jedno z pl tabeli zamwie (pole ShippingMethodID) wymaga tabeli powizanej odnoszcej si do sposobw przesyki zamwionego towaru. Tabel tblShippingMethods utworzyam rcznie. Jej struktur przedstawia rysunek 1.30.

46

Cz I n Tworzenie aplikacji w Accessie

Rysunek 1.30.

Zastosowanie typu Autonumerowanie dla pola ShippingMethodID umoliwia wybr sposobu dostawy z grupy opcji formularza (w Accessie przyciski grupy opcji stosuj wartoci cakowite).
Wybrana warto jest cile powizana z nazw sposobu dostawy z tabeli tblShippingMethods.

A do tego miejsca zajmowalimy si normalizacj tabel, cho w ogle nie wspomniaam


o tym terminie. Normalizacj baz danych mona (i czsto tak wanie si robi) opisywa
w bardzo zoony i przewrotny sposb, posugujc si wieloma fachowymi terminami, cho
nie jest to konieczne. W trakcie tworzenia baz danych w Accessie normalizacja sprowadza si
do eliminacji duplikacji danych w rnych tabelach i do stosowania pl kluczy do tworzenia pocze midzy tabelami. Istnieje pi poziomw normalizacji baz danych (od pierwszej postaci normalnej do pitej postaci normalnej). W Accessie najczciej stosuje si
tylko trzy pierwsze. Poniej definiuj wszystkie pi postaci, najpierw w argonie technicznym, a nastpnie w sposb bardziej przystpny.

Pierwsza posta normalna

eliminacja powtarzajcych si grup

Oznacza to, e tabela nie powinna zawiera wielu pl dotyczcych podobnych informacji,
na przykad wielu numerw telefonw lub wielu adresw. W pewnych sytuacjach (na og
po zaimportowaniu tabel z plikw tekstowych) powtarzajce si dane mog znajdowa si
w jednym polu i by oddzielone przecinkami (na przykad wszystkie stopnie naukowe).
Problemy pojawiajce si po umieszczeniu rnych informacji w jednym polu s raczej
oczywiste: gdy wszystkie stopnie przechowuje si w jednym polu, a chce si wywietli tylko
osoby ze stopniem doktora, trzeba si bdzie sporo natrudzi, piszc zapytanie wydobywajce
odpowiednie informacje. Co wicej, moliwe jest, e zwrcone dane nie bd tymi, ktrych
si oczekiwao, z powodu le postawionych znakw przestankowych w danych rdowych.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

47

Kilka szablonw tabel z kreatora tabel amie pierwsz posta normaln, na przykad tabela
Kontrahenci zawiera wiele pl z numerami telefonw. Zamiast przechowywa wiele pl
dotyczcych telefonw w tabelach tblVendors i tblCustomers, utworzyam osobne tabele
zawierajce numery telefonw i adresy e-mail dostawcw i klientw: tblCustomerPhones,
tblCustomerEMails, tblVendorPhones, tblVendorEMails. Rozbicie informacji na kilka tabel
ma dwa aspekty praktyczne: gwarantuje moliwo dodania kolejnego numeru telefonu lub
adresu e-mail (jeli istniayby tylko pola numeru telefonu stacjonarnego i faksu, gdzie wpisaoby si numer telefonu komrkowego?) i uatwia korzystanie z zebranych informacji w innych
miejscach bazy danych (aby pobra wszystkie numery wybranego klienta, wystarczy ograniczy pobieranie danych z tabeli tblCustomerPhones do konkretnej wartoci pola CustomerID).
Powtarzajce si dane z jednego pola (jak we wczeniejszym przykadzie ze stopniami naukowymi) powinny zosta przeniesione do osobnej tabeli, by zwikszy dokadno wprowadzania danych (uytkownicy powinni wybiera stopnie naukowe z tabeli pogldowej,
zamiast je wpisywa) i zapewni moliwo okrelenia dowolnie duej liczby stopni naukowych dla jednej osoby.

Druga posta normalna

eliminacja redundancji danych

Istniej dwa sposoby pojawiania si redundancji danych w bazie danych: pierwszy polega
na wpisaniu tych samych danych w rnych rekordach tabeli. Taka sytuacja wystpiaby,
gdyby uy oryginalnego szablonu tabeli zamwie z adresami dostaw i wpisa kilka zamwie
dotyczcych tego samego uytkownika. Jeli dane tego samego klienta wpisze si w trzech rnych rekordach, zachodzi duplikacja danych. Uniknam takiej sytuacji, umieszczajc adresy
dostaw w osobnej tabeli (tblShippingAddresses) i stosujc pole ShipAddressID w tabeli
tblOrders. Pole to powizane jest z polem o takiej samej nazwie z tabeli tblShippingAddresses, wic unika si wielokrotnego wpisywania tych samych danych do wielu rekordw. Co
wicej, daje to gwarancj, e zmiana adresu dostaw przez klienta bdzie wymagaa modyfikacji bazy danych tylko w jednym miejscu zamiast we wszystkich rekordach zamwie
zawierajcych adres klienta.
Redundancja danych pojawia si te wtedy, gdy te same informacje znajduj si w dwch
rnych tabelach. Na przykad dla tabel klientw i zamwie informacje na temat adresu
osoby kupujcej nie powinny znale si w obu tych tabelach. Naley albo umieci dane
adresowe kupujcego w osobnej tabeli i poczy je zwizkiem jeden do jednego z tabel
tblCustomers za pomoc pola CustomerID, albo umieci je w tabeli klientw i usun z tabeli
zamwie. Podobna sytuacja dotyczy adresw dostaw (nie powinna nastpi ich duplikacja
w obu tabelach). W przedstawionej aplikacji umieszczenie danych dostaw w osobnej tabeli
jest szczeglnie istotne, gdy jeden klient moe stosowa wiele takich adresw.
W pewnych sytuacjach w celach archiwalnych mona zapamita rekord z danymi
dostawy uywanymi w trakcie skadania zamwienia nawet jeli ten adres
ulegnie potem zmianie. W takiej sytuacji tabela tblOrders powinna zawiera dane
adresowe dostawy oraz pole ShipAddressID. Gdy adres dostawy zostaje wybrany
na formularzu, dotyczce go szczegowe dane adresowe naley pobra z tabeli
tblShippingAddresses i zapisa do pl adresowych tabeli tblOrders. Metoda ta
eliminuje potrzeb wpisywania adresu dostaw w kadym rekordzie, ale zachowuje
stary adres nawet wtedy, gdy klient zmieni go w terminie pniejszym.

48

Cz I n Tworzenie aplikacji w Accessie

Trzecia posta normalna

eliminacja kolumn, ktre nie zale od klucza

W skrcie mona powiedzie, i oznacza to przeniesienie do osobnej tabeli wszystkich


pl, ktre w sposb cisy nie nale do rekordu. Przykadowo pocztkowa wersja tabeli
tblMailingList utworzona z szablonu kreatora tabeli zawiera informacje na temat osoby
otrzymujcej listy (imi, nazwisko, stanowisko itp.) oraz informacje na temat firmy (nazwa
firmy i jej adres). Poniewa dane firmy nie nale do osoby, utworzyam osobn tabel
tblMailingListCompanies poczon polem CompanyID z list adresow klientw. W tabeli
tblMailingList pozostawiam jednak pola adresowe, by uywa ich dla osb, ktre preferuj otrzymywa listy na adres domowy zamiast na adres firmowy.

Czwarta posta normalna


izolacja niezalenych zwizkw wielokrotnych
W bazie danych ze zwizkami wiele do wielu nie naley dodawa nieistotnych pl do tabel,
ktre cz dwie tabele wielu. Przykadowo baza danych studentw moe zawiera
zwizek wiele do wielu midzy studentami i zajciami, ktry wykorzystuje tabel tblStudentClasses do poczeniu obu wspomnianych tabel. Tabela czca moe zawiera pola semestru i roku, ktre wskazuj, kiedy student uczestniczy w danych zajciach. Takie rozwizanie
jest poprawne. Gdyby jednak doda do tabeli czcej numer telefonu, zostaaby zamana
zasada czwartej postaci normalnej, poniewa pole to nie naley do poczenia rekordw studenta z zajciami, ale do rekordu studenta, a zatem powinno znale si w tabeli studentw.
Przykadowa baza danych dla firmy zabawkarskiej zawiera zwizek wiele do wielu midzy
zabawkami i materiaami. Zabawka wyprodukowana jest z wielu materiaw, a jeden materia
czsto suy do produkcji wielu zabawek. Tabel czc dla tego zwizku jest tblToyMaterials. Jako typowy przedstawiciel tego rodzaju tabel zawiera tylko pola kluczy obcych
dwch czonych ze sob tabel. Aby nie zama zasady czwartej postaci normalnej, do tej
tabeli mona by doda tylko pola powizane z kombinacj dwch czonych rekordw.
Jest mao prawdopodobne, e trzeba si bdzie martwi o zamanie tej postaci
normalnej (w odrnieniu od pierwszych trzech). Rzadko zdarzaj si tabele czce
amice t zasad, a jeszcze rzadziej pojawia si konieczno ich modyfikacji.

Pita posta normalna


izolacja semantycznie powizanych zwizkw wielokrotnych
Zamanie tej postaci wymaga bardzo zoonego i mao prawdopodobnego scenariusza, wic
prawdopodobnie nigdy nie trzeba bdzie przejmowa si t zasad. W pewnych sytuacjach
ta posta normalna wymaga podzielenia nawet powizanych ze sob pl na osobne tabele,
na przykad dla zwizku wiele do wielu midzy studentami i zajciami. Cho informacje na
temat roku studiw i semestru mogyby zosta dodane do tabeli czcej, w pewnych sytuacjach trzeba je umieci w osobnej tabeli zapewniajcej uzyskanie odpowiednich kombinacji
semestr-rok.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

49

Kreator tabel umoliwia wstpne okrelenie zwizkw (relacji) midzy tabelami, ale nie wykonuje wszystkich wymaganych zada. Nawet jeli okreli si, e jeden rekord z pierwszej
tabeli moe dopasowywa si do wielu rekordw drugiej tabeli, nie jest to jeszcze zwizek
typu jeden do wielu. Okrelenia odpowiedniego zwizku trzeba dokona rcznie w oknie Relacje. Omwi trzy rodzaje zwizkw lub relacji, jakie mog zosta wykonane w bazie danych
Access, a nastpnie przedstawi sposoby ich ustawiania w oknie Relacje.
Zacznijmy od zdefiniowania kilku terminw uywanych przy okrelaniu zwizkw midzy
tabelami.
n

Klucz gwny (podstawowy) pole (czasem zbir pl) z rnymi wartociami


(lub kombinacj wartoci) dla kadego rekordu tabeli. Pole klucza musi by
unikatowe i nie moe by puste.

Klucz obcy nieunikatowe pole w tabeli, ktra jest powizana z kluczem


gwnym innej tabeli. W zwizkach jeden do wielu klucz gwny znajduje si
w tabeli jeden, natomiast klucz obcy w tabeli wielu.

Aktualizacja kaskadowa gdy wymusza si integralno referencyjn, zmiana


wartoci klucza gwnego rekordu z tabeli podstawowej (na przykad zmiana
zawartoci pola EmployeeID z tabeli tblEmployees) spowoduje przeniesienie tej
zmiany na wszystkie pola kluczy obcych powizanych z tym rekordem. Na og
warto stosowa to rozwizanie.

Usuwanie kaskadowe gdy wymusza si integralno referencyjn, usunicie


rekordu z tabeli podstawowej powoduje usunicie wszystkich rekordw powizanych
z rekordem gwnym, a nalecych do innych tabel. Nie jest to bezpieczne
rozwizanie i w wikszoci sytuacji lepiej go unika.

Zczenie wewntrzne musi istnie wsplna warto w czonych polach


z obu tabel. Przykadowo zczenie wewntrzne tabel tblCustomers i tblOrders
spowoduje wywietlenie jedynie rekordw zwizanych z klientami, ktrzy zoyli
zamwienia.

Lewostronne zczenie zewntrzne wszystkie rekordy z lewej strony operacji


LEFT JOIL polecenia SQL zostaj doczone do wyniku, nawet jeli nie udao si
znale dla nich dopasowania w drugiej tabeli. Lewostronne zczenie zewntrzne
tabel tblCustomers i tblOrders spowoduje wywietlenie wszystkich klientw,
take tych, ktrzy nie zoyli adnego zamwienia.

Prawostronne zczenie zewntrzne wszystkie rekordy z prawej strony


operacji RIGHT JOIL polecenia SQL zostaj doczone do wyniku, nawet jeli nie
udao si znale dla nich dopasowania w drugiej tabeli. Prawostronne zczenie
zewntrzne tabel tblMailingListCompanies i tblMailingList spowoduje wywietlenie
wszystkich odbiorcw listw, take tych, ktrzy nie maj przypisanej firmy
(nie istnieje dla nich dopasowanie w tabeli tblMailingListCompanies).

50

Cz I n Tworzenie aplikacji w Accessie


n

Integralno referencyjna zbir zasad zapewniajcych poprawno relacji


midzy rekordami powizanych tabel i zabezpieczajcych przed niewaciw
zmian lub usuniciem danych. Wczenie integralnoci referencyjnej dla
powizania midzy tabelami tblCustomers i tblOrders (na podstawie pola
CustomerID) bdzie oznaczao, e nie uda si wstawi nowego zamwienia bez
wybrania klienta. Co wicej, dla domylnej integralnoci referencyjnej nie uda si
usun rekordu z tabeli podstawowej, do ktrego odwouj si rekordy w innych
tabelach (usunicie nastpi, jeli wczy si usuwanie kaskadowe), ani zmieni
wartoci klucza gwnego, gdy pojawia si on jako klucz obcy w innych tabelach
(chyba e wczy si aktualizacj kaskadow).

Zwizek jeden do wielu


Cho Access nie wymaga, by powizane pola miay identyczne nazwy (musz mie
jedynie ten sam typ), zalecam stosowanie tych samych nazw dla klucza gwnego
(podstawowego) i klucza obcego. Uatwia to odnalezienie odpowiednich pl
w trakcie tworzenia relacji.
Zwizku jeden do wielu (jest to najpopularniejszy typ zwizku) potrzebujemy wtedy, gdy
jeden rekord z jednej tabeli moe dopasowa si do wielu rekordw innej tabeli. Baza danych
dla firmy zabawkarskiej potrzebuje wielu tego typu zwizkw. Zostay one wymienione poniej. Po lewej stronie znajduje si tabela podstawowa (jeden), a po prawej stronie tabela
powizana (wielu). Niektre z tych zwizkw stanowi cz zwizkw wiele do wielu
omwionych w dalszej czci rozdziau.
n tblCategories

tblToys

n tblCustomers

tblCustomerEMails

n tblCustomers

tblCustomerPhones

n tblCustomers

tblOrders

n tblEmployees

tblRepairs

n tblMailingListCompanies

tblMailingList

n tblMaterials

tblRepairMaterials

n tblMaterials

tblToyMaterials

n tblRepairs

tblRepairMaterials

n tblShippingAddresses
n tblShippingMethods
n tblToys

tblOrders

tblOrders

tblToyMaterials

n tblVendors

tblMaterials

n tblVendors

tblToys

n tblVendors

tblVendorEMails

n tblVendors

tblVendorPhones

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

51

Jeli w trakcie prby utworzenia relacji pojawi si komunikat bdu o treci: Microsoft
Access nie moe utworzy tej relacji i wymusi wizw integralnoci, oznacza to, e
dane w jednej z tabel ami zasady integralnoci referencyjnej (na przykad rekord z tabeli
tblOrders moe nie zawiera wartoci w polu CustomerID). Naley wtedy poprawi dane
i ponownie sprbowa utworzy relacj.
Podobnie komunikat o bdzie: Relacja musi dotyczy takiej samej liczby pl o takich samych
typach danych wskazuje, e zapewne doszo do prby powizania pl rnych typw.
Naley wic zmieni typ danych jednego z pl (warto pamita, i automatyczne numerowanie wymaga w drugim polu typu dugiej liczby cakowitej) i ponownie sprbowa utworzy
relacj.
Jako przykad sposobu tworzenia zwizku jeden do wielu w oknie Relacje (pozostae typy
zwizkw tworzy si bardzo podobnie) dokonajmy powizania tabel tblCustomers i tblOrders. Zacznijmy od otwarcia okna Relacje i przecignicia do niego tabel tblCustomers
i tblOrders z okna bazy danych (ewentualnie mona je wybra, uywajc okna dialogowego
Pokazywanie tabeli wywoywanego z menu podrcznego). Zwr uwag na to, e pole CustomerID z tabeli tblCustomers zostao pogrubione, poniewa jest kluczem gwnym tej tabeli. Odpowiadajce mu pole CustomerID z tabeli tblOrders nie zostao pogrubione, poniewa jest
jedynie kluczem obcym. Aby utworzy zwizek, przecignij pole CustomerID z tabeli tblCustomers do pola o tej samej nazwie z tabeli tblOrders (patrz rysunek 1.31).

Rysunek 1.31.

Po zwolnieniu przycisku myszy pojawi si okno dialogowe Edytowanie relacji. Na dole okna
znajduje si ramka, w ktrej Access wywietla typ relacji; na og wykrywa j poprawnie.
Jeli w ramce na dole okna nie pojawi si poprawny typ relacji na przykad
zamiast jeden do wielu pojawi si inny tekst (np. Nieokrelona) prawdopodobnie
prbowao si poczy ze pola lub poczyo si poprawne pola, ale
o nieodpowiednich typach. Po naprawieniu bdu Access powinien wywietli
poprawny typ zwizku.
Gdy relacja zostaa wykryta poprawnie jako jeden do wielu, wystarczy tylko wczy opcje
Wymuszaj wizy integralnoci i Kaskadowo aktualizuj pola pokrewne i klikn przycisk
Utwrz (patrz rysunek 1.32).

52

Cz I n Tworzenie aplikacji w Accessie

Rysunek 1.32.

Pojawia si linia czca pole CustomerID z tabeli tblCustomers z polem klucza obcego
z tabeli tblOrders (patrz rysunek 1.33). Warto zauway, e po lewej stronie linii znajduje
si liczba 1 (wskazujca, i tabela tblCustomers jest tabel podstawow), a po prawej stronie
znak (oznaczajcy tabel powizan).

Rysunek 1.33.

Zwizek jeden do jednego


Zwizek jeden do jednego (wystpuje stosunkowo rzadko) wymagany jest tylko wtedy, gdy
rekord z jednej tabeli moe dopasowa si tylko do jednego rekordu z innej tabeli. Pole czce jest kluczem gwnym obu tabel. Na og zwizek tego typu suy do ograniczenia
dostpu do pewnych danych, na przykad poufnych danych pracownikw. W przykadowej
bazie danych wystpuje tylko jeden tego rodzaju zwizek midzy tabelami tblEmployees
i tblEmployeesConfidential. Aby utworzy zwizek, przecignij pole EmployeeID z tabeli
tblEmployees nad to samo pole tabeli tblEmployeesConfidential. Na dole okna dialogowego jako typ zwizku pojawi si Jeden-do-jednego (patrz rysunek 1.34).
Jeli na dole okna dialogowego znajduje si informacja o zwizku jeden do wielu, oznacza
to, e poczyo si pola, ktre nie s kluczami gwnymi tabel. Naley ustawi oba pola na
klucze gwne i ponownie sprbowa utworzy zwizek.
W oknie Relacje linia reprezentujca zwizek jeden do jednego ma na obu kocach liczb 1.

Rozdzia 1. n Tworzenie bazy danych dla aplikacji

53

Rysunek 1.34.

Zwizek wiele do wielu


Zwizek wiele do wielu to tak naprawd poczenie dwch zwizkw jeden do wielu. Istniej
dwie tabele podstawowe i tabela czca. Tabela czca zawiera dwa pola kluczy obcych
po jednym dla kadego pola klucza gwnego tabel podstawowych. Moe rwnie zawiera (cho nie zdarza si to czsto) kilka innych pl przechowujcych informacje zwizane
z konkretn kombinacj rekordw tabel podstawowych. W przykadowej bazie danych wystpuj dwa tego typu zwizki (tabela czca znajduje si w rodku):
n tblToys

tblToyMaterials tblMaterials,

n tblRepairs

tblRepairMaterials tblMaterials.

Gdy utworzy si dwa zwizki typu jeden do wielu, uzyska si jeden zwizek wiele do wielu.
Rysunek 1.35 przedstawia oba wymienione powyej zwizki wiele do wielu w oknie Relacje.
atwo zauway dwa zestawy tabel podstawowych, midzy ktrymi znajduje si tabela czca; tabela tblMaterials jest tabel podstawow w obu zwizkach wiele do wielu.

Rysunek 1.35.

Jeli stosuje si konwencj, w ktrej nazwy pl kluczy gwnych i obcych


zawieraj przyrostek ID, bardzo atwo rozpozna, ktre pola naley ze sob
poczy w oknie Relacje. Pewne pola kluczy nie musz by powizane z innymi
tabelami na przykad pole MailingListID z tabeli tblMailingList nie potrzebuje
adnych pocze, poniewa nie istnieje tabela, ktrej wiele rekordw pasowaoby
do jednego rekordu z tblMailingList.

54

Cz I n Tworzenie aplikacji w Accessie

Skoro powstay odpowiednie tabele i zwizki midzy nimi dla bazy danych sklepu z zabawkami, moemy przystpi do tworzenia formularzy sucych do wpisywania i edycji danych
oraz kwerend do sortowania i filtracji.

You might also like