Microsoft Access Πrelacyjna baza danych

Transkrypt

Microsoft Access Πrelacyjna baza danych
Microsoft Access – relacyjna (?) baza danych
1. Informacje ogólne
Microsoft Access jest prawdziwie zaawansowanym i profesjonalnym programem baz danych, dostępny
równieŜ dla niedoświadczonych uŜytkowników. Microsoft Access nie jest, jak często się mylnie uwaŜa,
bazą danych, lecz systemem zarządzającym bazą danych (DBMS – Database Managment System), za
pomocą którego moŜna tworzyć i administrować bazy danych. Access naleŜy przy tym do systemów
zarządzania relacyjnymi bazami danych. Oznacza to, Ŝe poszczególne tabele mogą być ze sobą
powiązane.
Za pomocą programu Microsoft Access moŜna zarządzać wszystkimi niezbędnymi informacjami
uŜywając jednego pliku bazy danych. W pliku takim moŜna dzielić dane na odrębne części zwane
tabelami. Za pomocą formularzy elektronicznych moŜna oglądać, dodawać i aktualizować dane w
tabelach; za pomocą kwerend moŜna znajdować i pobierać tylko te dane, które są rzeczywiście aktualnie
niezbędne; za pomocą raportów moŜna analizować i drukować dane w określonym przez siebie
układzie. Pomimo tego Ŝe wszystkie obiekty bazy danych znajdują się w jednym pliku istnieje moŜliwość
importowania/eksportowania pojedynczych tabel.
Najlepiej jest przechowywać dane tworząc po jednej tabeli dla kaŜdego typu informacji, które mają być
analizowane. Dane z róŜnych tabel moŜna później łączyć razem w kwerendach, formularzach lub
raportach – naleŜy w tym celu zdefiniować relacje między tabelami.
Architektura pakietu
•
•
Access - program główny: łączy funkcje:
o programu dla projektanta
o interakcyjnego narzędzia do operowania danymi
o interpretera wykonującego gotowe aplikacje
runtime i generator dyskietek instalacyjnych (w pakiecie Access Developer's Kit)
W MS Access istnieje moŜliwość korzystania z serwerów SQL przez ODBC (Open Database
Connectivity) oraz moŜliwość udostępniania własnych danych przez ODBC ( np. dla Visual Basica,
Visual C++).
Programowanie w Visual Basic for Application jest niezwykle proste co nierzadko zachęca
projektantów do tworzenia za pomocą Accessa małych systemów baz danych: do uŜytku prywatnego lub
dla małych biur.
Strona 1 z 52
2. Obiekty bazy danych MS Access
1.Tabele
Tabela jest zbiorem danych
dotyczących określonego tematu,
jak produkty i dostawcy.
UŜywanie oddzielnych tabel dla
kaŜdego
tematu
eliminuje
duplikowanie danych co czyni
przechowywanie danych bardziej
efektywnym i eliminuje błędy
wprowadzania danych. Tabele
organizują dane w kolumnach
(zwanych polami) i w wierszach
(zwanych rekordami).
2. Formularze
Formularzy moŜna uŜywać w wielu zastosowaniach. Większość informacji zawartych pochodzi z
odpowiedniego źródła rekordów. Pozostałe informacje przechowywane są w projekcie formularza.
Za pomocą formularzy moŜna wpisywać dane, przeglądać wpisane informacje, drukować zawartość bazy
i sterować działaniem programu. NiezaleŜnie od wyglądu i przeznaczenia formularze maja wspólna cechę
- słuŜą uporządkowaniu i ujednoliceniu danych wprowadzanych przez wypełniającego formularz. Z
drugiej strony osoba wypełniająca formularz równieŜ ma ułatwioną pracę - nie musi bowiem wprowadzać
informacji bezpośrednio do tabeli i obserwować gęstwiny kolumn i rekordów.
Strona 2 z 52
3. Kwerendy
Termin ten powstał z angielskiego słowa query. Jego polskim odpowiednikiem jest zapytanie.
Za pomocą kwerend moŜna wydawać Accessowi polecenia przeszukania bazy danych i udzielenia
odpowiedzi na zadane pytanie. Kwerend moŜna uŜywać do wyświetlania, zmiany i analizy danych.
MoŜna ich teŜ uŜywać jako źródła rekordów dla formularzy i raportów. Większość informacji zawartych
w raporcie pochodzi z odpowiedniego źródła rekordów: tabeli, kwerendy lub wyraŜenia SQL. Pozostałe
informacje są przechowywane w projekcie raportu.
4.Raporty
Raport jest wygodnym sposobem prezentacji danych w postaci wydrukowanej. UŜytkownik ma pełną
kontrolę nad rozmiarem i wyglądem wszystkich elementów raportu, dzięki czemu moŜe wyświetlać dane
w Ŝądany sposób.
Strona 3 z 52
5. Makra
Makro jest akcją lub zestawem akcji, z których kaŜda wykonuje określoną operację, taką jak otwarcie
formularza lub wydrukowanie raportu. Makra pomagają zautomatyzować często wykonywane zadania.
MoŜna na przykład uruchamiać makro drukujące raport, gdy uŜytkownik klika przycisk polecenia.
Makropolecenia umoŜliwiają pisanie prostych programów, pozwalających na uproszczenie i
zautomatyzowanie pracy z bazą danych.
6. Moduły
Moduł jest zbiorem deklaracji i procedur języka Visual Basic for Applications przechowywanych razem
jako jedna całość. Moduły maja takie samo przeznaczenie, jak Makropolecenia, cechują je jednak duŜo
większe moŜliwości. Są stosowane tam, gdzie makropolecenia nie wystarczają.
Istnieją dwa podstawowe typy modułów: moduły klasy i moduły standardowe. KaŜda procedura w
module moŜe być procedurą typu Function lub procedurą typu Sub.
•
Moduły klasy
Moduły formularzy i moduły raportów są modułami klasy związanymi z określonym formularzem
lub raportem. Moduły formularza i raportu często zawierają procedury zdarzeń, które są
uruchamiane w odpowiedzi na zdarzenie formularza lub raportu. Procedur zdarzeń moŜna uŜywać
do sterowania działaniem formularzy i raportów oraz ich odpowiedziami na akcje uŜytkownika,
takie jak np. kliknięcie przycisku polecenia.
•
Moduły standardowe
Moduły standardowe zawierają ogólne procedury, które nie są związane z Ŝadnym innym
obiektem, oraz często uŜywane procedury, które moŜna uruchamiać z dowolnego miejsca w bazie
danych
Strona 4 z 52
3. Projektowanie bazy danych
Zanim wykorzystamy programu Microsoft Access do budowania tabel, formularzy i innych obiektów,
które złoŜą się na bazę danych, naleŜy poświęć trochę czasu na zaprojektowanie bazy danych. Dobry
projekt jest podstawą utworzenia bazy danych, która pozwoli na szybkie, dokładne i skuteczne
wykonywanie zamierzonych celów.
Oto podstawowe kroki w projektowaniu bazy danych:
1. Określenie celu, któremu ma słuŜyć baza danych
Pierwszym krokiem projektowania bazy danych programu Microsoft Access jest określenie celu,
któremu ma słuŜyć baza i sposobu jej uŜywania. Konieczne jest określenie jakich informacji ma
dostarczyć baza danych. Na tej podstawie moŜna określić, jakie zagadnienia będą analizowane w
bazie danych (tabele) i jakie informacje mają określać kaŜde zagadnienie (pola w tabelach).
2. Określenie tabel, które znajdą się w bazie danych
Określenie tabel moŜe być najtrudniejszym etapem procesu projektowania bazy danych.
Powodem tego jest fakt, Ŝe wyniki, których ma dostarczyć baza danych - raporty gotowe do
wydrukowania, formularze przeznaczone do wykorzystania, pytania, na które trzeba
odpowiedzieć - nie zawsze zawierają bezpośrednie wskazówki o strukturze tworzących je tabel.
Projektując tabele naleŜy mieć na uwadze przedstawione poniŜej podstawowe zasady
projektowania:
-
Ta sama informacja nie powinna być wielokrotnie wprowadzona do jednej lub kilku tabel.
JeŜeli informacja jest przechowywana tylko w jednej tabeli, moŜna ją uaktualnić zmieniając
dane tylko w jednym miejscu. Tak jest łatwiej, a ponadto unika się wystąpienia niezgodności
danych zapisanych w róŜnych miejscach. Na przykład, dobrze jest zapisać numer telefonu i
adres klienta tylko raz, w jednej tabeli.
-
KaŜda tabela powinna zawierać informacje tylko na jeden temat.
JeŜeli tabela zawiera dane na temat jednego zagadnienia moŜna przetwarzać je niezaleŜnie od
danych dotyczących innych zagadnień. Na przykład, adresy klientów będą przechowywane w
innej tabeli niŜ zamówienia. W ten sposób moŜna usunąć jakieś zamówienie, zachowując dane
o kliencie.
3. Określenie pól, które znajdą się w tabelach
KaŜda tabela zawiera informacje na temat jednego zagadnienia, a kaŜde pole w tabeli zawiera
jedną daną dotyczącą tego zagadnienia, któremu poświęcona jest tabela. Na przykład, tabela
poświęcona klientom moŜe zawierać pola z nazwą firmy, adresem, miastem, krajem i numerem
telefonu. Zabierając się do projektowania pól w tabelach dobrze jest pamiętać o następujących
wskazówkach:
- NaleŜy powiązać kaŜde pole bezpośrednio z zagadnieniem, którego dotyczy tabela.
- Nie naleŜy wprowadzać danych pośrednich lub obliczonych (danych, które są wynikiem
wyraŜenia).
Strona 5 z 52
-
NaleŜy uwzględnić wszystkie potrzebne informacje.
Informacje naleŜy przechowywać w moŜliwie najmniejszych jednostkach logicznych (na
przykład Imię oraz Nazwisko, a nie Dane personalne).
4. Przypisanie polom jednoznacznych wartości
Aby program Microsoft Access mógł powiązać informacje przechowywane w róŜnych tabelach
na przykład, aby powiązać klienta ze wszystkimi jego zamówieniami kaŜda tabela w bazie
danych musi zawierać pole lub zbiór pól, które jednoznacznie określają kaŜdy rekord. Takie pole
lub zbiór pól nazywany jest kluczem podstawowym.
5. Określenie relacji między tabelami
Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do
programu Microsoft Access informacje na temat sposobu poprawnego łączenia powiązanych
danych w logiczną całość. W tym celu definiuje się relacje między tabelami.
6. Wprowadzenie danych i utworzenie innych obiektów bazy danych
Kiedy okaŜe się, Ŝe struktura tabel spełnia opisane powyŜej kryteria, moŜna wprowadzić
wszystkie dane do tabel i utworzyć dowolne kwerendy, formularze, raporty, makra i moduły.
7. Zastosowanie narzędzi analizy programu Microsoft Access
Program Microsoft Access jest wyposaŜony w dwa narzędzia, które pomagają udoskonalić projekt
bazy danych. Kreator analizy tabel potrafi sprawdzić projekt przeglądając jednorazowo jedną
tabelę, zaproponować nową strukturę tabeli i - jeśli to ma sens - zamienić tabelę w kilka tabel
połączonych relacjami.
Analizator wydajności potrafi przeprowadzić analizę całej bazy danych, sformułować zalecenia i
propozycje dotyczące wprowadzenia ulepszeń. Analizator wydajności moŜe teŜ wprowadzić te
zalecenia i propozycje.
Strona 6 z 52
4. Projekt bazy danych i normalizacja
W trakcie tworzenia aplikacji w Accessie powinieneś przez cały czas pamiętać, Ŝe kaŜda z tworzonych
przez Ciebie aplikacji jest bazą danych. Aby tworzyć szybsze i bardziej wydajne aplikacje, musisz poznać
i zrozumieć pojęcie normalizacji baz danych .
4.1. Relacyjne systemy zarządzania bazami danych (RDBMS)
W ksiąŜkach i czasopismach wielokrotnie moŜna spotkać się z pojęciem – relacyjne systemy
zarządzania bazami danych (ang. Relational Database Management Systems – RDBMS). Co Access ma
wspólnego z modelem RDBMS. Model ten został stworzony w 1970 roku przez pracownika firmy IBM,
dr E.F. Codda. Celem ustalonych w modelu RDBMS zasad było uniezaleŜnienie funkcjonowania interfejsów od zmian dokonywanych w modelu danych. Produkty RDBMS uŜywają wspólnych elementów
danych, takich jak np. ID , aby połączyć wiersze w dwóch róŜnych tabelach, między którymi zachodziła
relacja, a takŜe uŜywają tych pól w sprzęŜeniu. Istnieje 13 zasad, które produkt musi spełnić, aby moŜna
go było nazwać Relacyjnym Systemem Zarządzania Bazami Danych. Niektórzy z krytyków Accessa
twierdzą, Ŝe nie spełnia on tych wymagań, jednakŜe nie jest błędem zaliczenie Accessa do grupy
projektów RDBMS. Oto 13 zasad relacyjnych i ich zastosowanie w Accessie.
Zasada
Nazwa zasady
dr Codda
1
Opis
Komentarz dotyczący Accessa
Zasada 0.
Zasada tworzenia KaŜdy program typu RDBMS musi być w stanie
zarządzać bazami danych jedynie za pomocą swoich
zdolności relacyjnych. Jeśli system działa na
zasadach operowania danymi rekord-po-rekordzie,
nie moŜemy go nazywać systemem w pełni
relacyjnym
Access był pierwszą na rynku, działającą
w systemie Windows bazą danych, która
przestrzegała
tej
zasady.
Access,
w przeciwieństwie do niektórych systemów, nie
stosuje numeracji rekordów
Zasada 1.
Informacja
Wszystkie dane w relacyjnej bazie przedstawiane są Access przechowuje dane jako tabele, w
jako wartości w tabelach. Dane nie mogą być aparacie baz danych Jet1
przechowywane w Ŝaden inny sposób
Zasada 2.
Gwarantowany
dostęp
Poprzez uŜycie kombinacji wartości klucza Access przestrzega tej zasady poprzez uŜycie
podstawowego, nazwy tabeli i nazwy kolumny, musi kluczy głównych. Jeśli sam nie utworzysz w
istnieć dostęp do dowolnej partii danych
tabeli klucza głównego, Access zaŜąda, abyś to
zrobił
Zasada 3.
Brakujące
informacje
Program musi obsługiwać wartości Null. Wartości Access obsługuje wartości Null dla brakujących
te przedstawiają brakujące lub bezuŜyteczne informacji. Jednocześnie pozwala uniknąć
informacje
wprowadzania wartości Null poprzez uŜycie pól
wymaganych.
Zasada 4.
Katalog systemu
Opis bazy danych lub „katalog” na poziomie
logicznym jako wartości tabelaryczne. Język
relacyjny (SQL) powinien móc działać na projekcie
bazy danych w taki sam sposób, w jaki działa na
danych przechowywanych w strukturze
Katalog ten umieszczony jest w aparacie bazy
danych Microsoft Jet. Do stworzenia zapytania
dotyczącego katalogu systemu moŜesz uŜyć
obiektu Active Data o nazwie OpenSchema.
SQL DDL daje Ci moŜliwość tworzenia tabel,
indeksów itp.
Zasada 5.
Kompletny język Program typu RDBMS musi obsługiwać jasno
określony język do operowania danymi (SQL), który
w pełni obsługuje definiowanie i operowanie
danymi,
określanie
widoku,
ograniczenia
integralności,
ograniczenia
transakcyjne
i autoryzację
Access (Jet) w pełni obsługuje SQL dla
operowania danymi, określania widoków
(kwerendy
wybierające)
i ograniczeń
integralności
(Okno
Relacje
i komenda
UTWÓRZ OGRANICZENIE)
„Silnik” Jet zarządza bazą danych zawartą w pliku MDB (Accessa). Gdy uruchamiamy plik typu MDB poprzez obiekty
DAO lub ADO, równieŜ uŜywamy do tego silnika Microsoft Jet. Przechowuje on tabele, indeksy i kwerendy, które
uruchamia poprzez wbudowany mechanizm zapytań. Jet jest rozbudowaną, wyposaŜoną w kompletny zestaw funkcji,
wielowątkową, relacyjną bazą danych.
Strona 7 z 52
Zasada
Nazwa zasady
dr Codda
Opis
Komentarz dotyczący Accessa
Zasada 6.
Uaktualnianie
widoków
Wszystkie
widoki
mogą
być
systemowo Access
był
pierwszą
bazą
danych,
uaktualnione. W prawdziwym programie typu umoŜliwiającą uŜycie kwerend aktualizujących
RDBMS, większość (ale nie wszystkie) widoków
moŜe być uaktualniana
Zasada 7.
Ustawianie
poziomu
uaktualnień
Program typu RDBMS musi nie tylko potrafić Access spełnia to wymaganie poprzez uŜycie
pobierać zestawy danych. Musi takŜe potrafić kwerend funkcjonalnych
wstawiać, aktualizować i usuwać dane jako zestaw
relacyjny
Zasada 8.
Fizyczna
niezaleŜność
danych
Dane i aplikacja muszą być od siebie fizycznie
niezaleŜne. Odpowiedni program typu RDBMS lub
„optymalizator” powinny móc śledzić fizyczne
zmiany w danych. Przykładowo, aplikacje RDBMS
nie powinny ulegać modyfikacji na skutek dodania
bądź usunięcia z tabeli indeksu
Zasada 9.
Logiczna
niezaleŜność
danych
Gdy to tylko moŜliwe, aplikacja powinna być Gdy tworzysz w Accessie kwerendę, moŜesz ją
niezaleŜna od zmian dokonywanych w tabelach z łatwością połączyć z formularzem lub
podstawowych. Przykładowo, gdy tabele są łączone raportem, jakby to była tabela
w widok, nie powinny następować zmiany w kodzie
Zasada 10.
NiezaleŜność
integralności
Integralność danych musi być definiowalna w
języku relacyjnym i przechowywana w katalogu.
Ograniczenia w integralności danych mogą być
wbudowane w aplikację, jednakŜe podejście to jest
obce dla modelu relacyjnego. W modelu relacyjnym
integralność powinna być naturalną cechą projektu
bazy danych.
Zasada 11.
NiezaleŜność
podziału
Zdolności programu typu RDBMS nie będą PoniewaŜ silnik Jet przechowuje swoje zasady
ograniczone dzięki umieszczeniu jego komponentów integralności danych na poziomie aparatu,
w osobnych bazach danych.
pozostałe jego komponenty nie mają wpływu na
zasady integralności.
Zasada 12.
Brak podwersji
Jeśli program RDBMS posiada język typu „jeden
rekord jednocześnie”, język ten nie moŜe być
uŜywany do omijania zasad integralności lub
ograniczeń języka relacyjnego. Dlatego teŜ nie
wystarczy, by zasady relacyjne zarządzały
programem typu RDBMS, ale muszą być prawami
nadrzędnymi.
Access umoŜliwia Ci modyfikowanie obiektów
bazy danych, bez konieczności dokonywania
zmian w reszcie aplikacji. Jet zawiera takŜe
logiczny aparat przechowywania
Mimo iŜ Microsoft nie umieścił w dokumentacji
informacji
na
temat
przechowywania
integralności przez aparat Jet, moŜesz tworzyć
zasady
integralności
poprzez
SQL.
Jet przechowuje te informacje w projekcie bazy
danych jako część katalogu.
Access umoŜliwia Ci uŜycie obiektów DAO2
i ADO3, aby operować jednym rekordem
jednocześnie poprzez aktualizowalne zestawy
rekordów. Dzięki tym narzędziom do
operowania danymi nie moŜesz naruszyć zasad
integralności.
Relacyjne systemy zarządzania bazami danych przewaŜają w kilku punktach nad innymi systemami, w
szczególności w procesie projektowania. Programy typu RDBMS korzystają z teorii projektowania
relacyjnego, aby tworzyć własne modele projektowe baz danych.
2
3
Obiekty Data Access (DAO) dostarczają standardowego sposobu dostępu do danych dla Jet. – szczegóły w rozdziale
„Historia dostępu do baz danych”
Obiekty ActiveX Data (ADO) to model obiektowy, którego moŜna uŜywać w celu pobierania danych z baz OLE.
Strona 8 z 52
4.2. Teoria projektowania relacyjnego
Teoria projektowania relacyjnego, opracowana przez dr Codda w celu rozbudowania zasad relacyjnych,
składa się z następujących kategorii:
1 Tabele i niepowtarzalność.
2 Klucze obce i domeny.
3 Relacje.
4 Normalizacja danych.
5 Zasady integralności.
Korzystając z teorii projektowania relacyjnego uzyskujesz zalety płynące z lat poszukiwań najlepszego
sposobu zarządzania danymi. Niektóre z nich, jakie otrzymasz w wyniku normalizacji bazy danych, to:
• Pewność integralności danych.
• Skuteczność przechowywania danych.
• MoŜliwość rozwoju bazy danych.
• Zachowanie bazy danych jest przewidywalne, gdyŜ jest ona zgodna z wielokrotnie
przetestowanymi zasadami.
• PoniewaŜ przestrzegasz tych zasad, inni projektanci baz danych mogą duŜo łatwiej zrozumieć
Twój projekt.
• Okno Relacje staje się samo w sobie dokumentem.
• Zmiany w schemacie bazy danych są łatwe we wdroŜeniu.
4.2.1. Tabele i niepowtarzalność
Kiedy tworzymy aplikacje bazy danych, kaŜda tabela przedstawia odrębną jednostkę lub proces
występujący w rzeczywistym świecie. Tworzymy tabele kontrolujące ludzi, wydarzenia, transakcje
finansowe i przedmioty (np. produkty). Zgodnie z teorią relacyjną, musimy przechowywać wszystkie
dane w tabelach (zasada 1.) oraz, Ŝe tabela składa się z unikatowych wierszy i kolumn (zasada 2.).
Sposobem na zapewnienie unikalności kaŜdej z zasad jest ustawienie klucza głównego dla kaŜdego
wiersza.
Klucz główny to pole lub grupa pól (mówimy wtedy o wielopolowym kluczu głównym), które jest
unikatowym identyfikatorem tego wiersza. Klucz główny musi być unikatowy. W przeciwnym bowiem
wypadku dochodziłoby do naruszenia zasady 2. Access pozwala uczynić pole kluczem głównym, poprzez
nadanie mu wartości Klucz w widoku Projekt tabeli. Access sprawdzi wówczas, czy dane w tym polu są
unikatowe i nie występują w nim duplikaty. Czasami, gdy przestrzegamy reguł handlowych, podanie
unikatowej wartości dla kaŜdego wiersza moŜe być trudne.
Przykładowo, moŜemy utworzyć system zarządzający kontaktami. Podczas projektowania systemu
zarządzającego kontaktami, jako klucz moŜemy wybrać Nazwisko, Telefon lub e-mail (pola takie
powszechnie nazywane są „polami-kandydatami”). Ogólna zasada projektowania baz danych głosi, Ŝe klucz
powinien być jak najprostszy, unikatowy i jak najrzadziej zmieniany. Nazwisko moŜe się zmieniać na skutek
zawarcia małŜeństwa, rozwodu itp. Numery telefonów i adresy e-mail zmieniają się ciągle. Dobrym kluczem
byłby numer PESEL, ale co, gdy dana osoba nie jest obywatelem polskim? W tej sytuacji Access umoŜliwia
Ci utworzenie pola autonumerowanie, które stanie się polem klucza podstawowego.
Strona 9 z 52
4.2.2. Klucze obce i domeny
Klucz główny staje się bardzo waŜny, gdy chcesz go uŜyć w innej tabeli. Wartość klucza głównego jednej
tabeli, aby przedstawiać rekordy w innej tabeli. Wówczas mówimy o kluczu obcym, który będzie
podstawą opisanych w następnej części relacji. Przedstawiona na rysunku poniŜej tabela przechowuje dwa
obce klucze: ContactID i ContactTypeID. ContactID to klucz główny jednej tabeli, a ContactTypeID to
klucz główny drugiej tabeli .
Gdy uŜywasz kluczy obcych, będą się one zawsze znajdować w tej samej domenie. Domeny są to zbiory
wartości, z których pobierane są kolumny. Dobrym przykładem jest StudentID. Jego domeną są
wszystkie dostępne w systemie numery PESEL.
4.2.3. Relacje w bazie danych
Po zaprojektowaniu róŜnych tabel dla poszczególnych tematów bazy danych, potrzebny jest
sposób na powiązanie zawartych w nich informacji. Pierwszym krokiem w tym procesie jest
zdefiniowanie relacji pomiędzy tabelami. Gdy się to zrobi, moŜna tworzyć kwerendy, formularze i
raporty pozwalające wyświetlać za jednym razem informacje z róŜnych tabel.
Gdy definiujemy klucze główne i klucze obce, mamy do czynienia z relacjami. Przez relacje
rozumiemy zasady obsługiwane na poziomie silnika bazy danych (patrz: Zasada 4. dr Codda). Dzięki
relacjom bazę danych moŜna podzielić na małe tabele. Istnienie logicznego związku pomiędzy nimi
zapewnia, Ŝe po podziale moŜna uzyskać te same informacje, które znajdowały się w bazie złoŜonej z
jednej tabeli.
Access wyróŜnia trzy róŜne typy relacji:
• relacja jeden-do-jednego;
• relacja jeden-do-wielu;
• relacja wiele-do-wielu.
Aby tworzyć relacje w Accessie, naciskamy znajdujący się w na pasku narzędzi przycisk Relacje lub
wybieramy Narzędzia⇒Relacje, aby otworzyć okno Relacje.
Zanim jednak omówimy typy relacji naleŜy wprowadzić sobie pojęcie encji.
Encja to model, reprezentacja wyobraŜonego lub rzeczywistego obiektu stosowana przy modelowaniu
danych podczas analizy informatycznej. MoŜe posiadać atrybuty i operacje. Powinna mieć nazwę w
liczbie pojedynczej.
Przykłady:
Strona 10 z 52
•
•
OSOBA (atrybuty: imię - ciąg znaków, nazwisko - ciąg znaków)
POJAZD (atrybuty: liczba kół - liczba całkowita, czy moŜe latać - wartość logiczna)
Encja moŜe być równie dobrze obiektem fizycznym jak czytelnik lub ksiąŜka, jak teŜ zdarzeniem lub
pojęciem, jak wypoŜyczenie ksiąŜki czy tez zamówienie na jej wypoŜyczenie.
Relacja jeden-do-jednego
Charakteryzuje się tym ,Ŝe dla kaŜdej instancji jednej z dwóch encji istnieje dokładnie jedna instancja
drugiej encji pozostająca z nią w równowaŜnym związku np. czek i opłata ( opłata jest realizowana za
pomocą jednego czeku i za pomocą jednego czeku moŜna zrealizować tylko jedną opłatę).Ten typ relacji
spotyka się rzadko, poniewaŜ większość informacji powiązanych w ten sposób byłoby zawartych w
jednej tabeli. Relacji jeden-do-jednego moŜna uŜywać do podziału tabeli z wieloma polami, do
odizolowania części tabeli ze względów bezpieczeństwa, albo do przechowania informacji odnoszącej się
tylko do podzbioru tabeli głównej. Na przykład, moŜna by utworzyć tabelę do wyszukiwania
pracowników uczestniczących w rozgrywkach piłkarskich.
Dwie tabele łączy relacja jeden-do-jednego, gdy kaŜdemu wierszowi z jednej tabeli przyporządkowany
jest co najwyŜej jeden wiersz z drugiej tabeli.
Relacja jeden-do-wielu
Charakteryzuje się tym ,Ŝe dla kaŜdej instancji jednej encji istnieje wiele instancji drugiej encji
pozostającej z nią w rozwaŜanym związku. Relacja jeden-do-wielu jest realizowana poprzez utworzenie
atrybutu w encji po stronie wiele aby umieścić w nim klucz encji znajdującej się po stronie jeden. Tak
utworzony atrybut encji po stronie wiele nosi nazwę klucza obcego poniewaŜ jest on głównym kluczem w
innej tabeli. Relacja jeden-do-wielu jest najbardziej powszechnym typem relacji.
Najpopularniejszy typ relacji, relacja jeden-do-wielu, występuje wtedy, gdy tabela ma wiele (lub nie ma
w ogóle) powiązanych rekordów w drugiej tabeli.
Czasami tabela po stronie „jeden” nazywana jest tabelą odnośnika. Zazwyczaj, tabele odnośnika
zawierają informacje, które będą przekazywane do innych tabel (na przykład, nazwy województw lub
kody pocztowe).
Relacja wiele-do-wielu
W relacji wiele-do-wielu, rekord w tabeli A moŜe mieć wiele dopasowanych do niego rekordów z tabeli
B i tak samo rekord w tabeli B moŜe mieć wiele dopasowanych do niego rekordów z tabeli A. Jest to
moŜliwe tylko przez zdefiniowanie trzeciej tabeli (nazywanej tabelą łącza), której klucz podstawowy
składa się z dwóch pól - kluczy obcych z tabel A i B. Relacja wiele-do-wielu jest definiowana jako dwie
relacje jeden-do-wielu z trzecią tabelą. Na przykład, tabele "Zamówienia" i "Produkty" są powiązane
relacją wiele-do-wielu zdefiniowaną przez utworzenie dwóch relacji jeden-do-wielu z tabelą "Opisy
zamówień".
Strona 11 z 52
O relacji wiele-do-wielu mówimy wówczas, gdy kaŜdemu wierszowi z jednej tabeli odpowiada wiele
wierszy w drugiej tabeli, a kaŜdemu wierszowi z drugiej tabeli odpowiada wiele wierszy w pierwszej.
Jedynym sposobem na przedstawienie w Accessie relacji wiele-do-wielu jest uŜycie tabeli „łączącej”, w
której jako klucze obce znajdują się klucze główne obu tabel.
4.2.4. Normalizacja danych
Zgodnie z zestawem zasad dr Codda proces projektowania bazy danych nazywany jest normalizacją
danych. Dr Codd wyróŜnia sześć poziomów normalizacji. Skoncentrujemy się tutaj na trzech z nich, gdyŜ
mają one największy wpływ na decyzje dotyczące projektu bazy:
1. Pierwsza postać normalna.
2. Druga postać normalna.
3. Trzecia postać normalna.
Pierwsza postać normalna
W pierwszej postaci normalnej wszystkie kolumny w tabeli muszą posiadać wartości atomowe.
Innymi słowy, kaŜde pole moŜe zawierać tylko jedną wartość, a nie listę wartości lub powtarzającą się
grupę danych. Wiele kartotekowych baz danych przechowuje dane w ten sposób, co znacznie utrudnia ich
przeszukiwanie.
Rysunek 1 (poniŜej) przedstawia przykład tabeli, która nie jest w pierwszej postaci normalnej, poniewaŜ
w kolumnie ContactInfo przechowywana jest tablica wartości (telefon, fax, e-mail).
Strona 12 z 52
Rys 1.
Natomiast rysunek 2 jest przykładem tabeli w pierwszej postaci normalnej.
Rys 2.
Druga postać normalna
Mimo iŜ tabela przedstawiona na rysunku powyŜej jest w pierwszej postaci normalnej, nie jest
jednak w drugiej postaci normalnej.
Mówimy, Ŝe tabela jest w drugiej postaci normalnej, gdy jest w pierwszej postaci normalnej i
jednocześnie kaŜde z jej pól nie będących polem klucza głównego jest w pełni zaleŜne od całego klucza
głównego.
Innymi słowy, część informacji moŜe być przechowywana w innej tabeli i pobierana z niej poprzez
odnośnik. Spójrz na tabelę na rysunku powyŜej. Klucz główny składa się z ContactID, ContactInfoID i
ContactInfo. Czy kolumna ContactName zaleŜy od części klucza: ContactInfoID i ContactInfo? Nie, gdyŜ
jest zaleŜna od pola ContactID. Aby przekształcić tę tabelę do drugiej postaci normalnej, naleŜy
informacje o kliencie umieścić w osobnej tabeli odnośnika i utworzyć pomiędzy tabelami przedstawioną
na rysunku poniŜej relację jeden-do-wielu. Tabele te są teraz w drugiej postaci normalnej.
Strona 13 z 52
Rys 3.
Trzecia postać normalna
Mimo iŜ tabele na rysunku powyŜej są w pierwszej i drugiej postaci normalnej, nie są jednak w
trzeciej postaci normalnej.
Z tabelą w trzeciej postaci normalnej mamy do czynienia, gdy wszystkie pola, nie będące polami
klucza głównego, są wzajemnie zaleŜne.
Dobrym przykładem zaleŜności jest pole obliczeniowe (korzystniej jest nie przechowywać pól
obliczeniowych, tylko wyświetlać wyniki obliczeń jako część kwerendy). Na rysunku powyŜej druga
tabela przechowuje pola ContactInfoID i ContactType (opis). Jeśli wartość pola ContactType poznajemy
dzięki polu ContactInfoID, tabela nie jest w trzeciej postaci normalnej.
Aby otrzymać trzecią postać normalną, naleŜy wyodrębnić z ContactInfo trzecią tabelę i utwórz
między tabelami ContactInfo i ContactDetails relację jeden-do-wielu, tak jak na rysunku poniŜej.
Strona 14 z 52
Rys 4.
Korzyści z normalizacji
W poprzednim przykładzie, wiele zyskaliśmy, normalizując początkową, przedstawioną na
rysunku 1 tabelę. Tabela początkowa zawierała sposoby porozumiewania się w tablicy wartości, co prawie
całkowicie uniemoŜliwiało przeszukiwanie zawartości pola Faks. Dodatkowo, gdy zmieniał się numer
telefonu kontaktu lub zachodziła potrzeba dodania nowego sposobu porozumiewania się, jak na przykład
adres e-mail, edycja danych była utrudniona i łatwo było o błędy. Pierwsza postać normalna znacznie
poprawiła sytuację i zwiększyła elastyczność w kontrolowaniu numerów telefonów, faksów i adresów
e-mail naszych kontaktów.
W przedstawionej na rysunku 2 tabeli, która jest w pierwszej, lecz nie jest w drugiej postaci
normalnej, zarządzanie danymi dotyczącymi kontaktów jest utrudnione, gdyŜ informacje wielokrotnie się
powtarzają. Jeśli masz w bazie 10 numerów telefonów i przechowujesz to samo nazwisko 10 razy, to jest
to nie tylko strata przestrzeni dyskowej, ale równieŜ problem, gdy zachodzi potrzeba uaktualnienia
wszystkich 10 wpisów, gdy dana osoba zmieniła nazwisko. Utrzymanie spójności w tym przypadku moŜe
kosztować duŜo wysiłku.
Strona 15 z 52
Tabele na rysunku 3, mimo iŜ są w pierwszej i drugiej postaci normalnej (wszystkie kolumny
zaleŜą od całego klucza), nie są w trzeciej postaci normalnej. Przenosząc dane i uzyskując trzecią postać
normalną, uzyskujesz większą elastyczność modelu danych, gdyŜ teraz moŜemy zarządzać typami
kontaktów w osobnej tabeli.
4.2.5. Zasady integralności danych
Podczas normalizowania danych powinniśmy równieŜ uwzględnić zasady integralności danych.
Większość z zastosowanych zasad będzie zaleŜeć od zdefiniowanych relacji. Podczas określania relacji
moŜemy dodatkowo ustawić kaskadowe aktualizowanie i usuwanie rekordów.
Ustawienie aktualizowania kaskadowego rekordów daje nam pewność, Ŝe gdy aktualizujemy
wartość klucza podstawowego tabeli „jeden”, zmiana ta odniesie skutek w tabelach „wielu”.
Przykładowo, powiedzmy, Ŝe mamy tabelę odnośnika dla Stanów Zjednoczonych. W tabeli tej
znajduje się miasto Nowy Jork, z kluczem podstawowym NY i opisem Nowego Jorku. Wyobraźmy
sobie, Ŝe miasto to odłączyło się i stworzyło swój własny stan (to nie jest fikcja, prawie do tego doszło w
roku 1789!). Gdy zmienimy wartości NY na NY1 (lub coś bardziej opisowego), wartości NY we
wszystkich podrzędnych tabelach zostaną zmienione na NY1. Jeśli aktualizowanie kaskadowe nie było
włączone, musielibyśmy dodać rekord NY1 do tabeli odnośnika, zaktualizować wszystkie rekordy w podrzędnej tabeli, a następnie usunąć z tabeli odnośnika rekord NY.
Włączenie usuwania kaskadowego daje nam pewność, Ŝe gdy usuwamy rekord z tabeli „jeden”,
usuwamy równieŜ wszystkie rekordy z tabeli „wielu”. Ma to swoje dobre i złe strony. Jeśli usuwamy
jednego z klientów, a usuwanie kaskadowe było włączone, usunięte zostaną wszystkie faktury po stronie
„wielu”. W przeciwnym wypadku, usunięcie rekordu z tabeli „jeden” nie będzie wykonane, dopóki nie
usuniemy wszystkich rekordów z tabeli „wielu”
Strona 16 z 52
5. Typy danych pól w tabeli
Komputer nie jest w stanie odczytać niczego z kontekstu. Gdy adresujemy list, napiszemy na kopercie
przecinek zamiast kropki; list i tak dotrze do adresata – listonosz domyśli się, kto ma być jego odbiorcą.
Gdyby komputery były listonoszami (tak, jak ma to miejsce w przypadku poczty elektronicznej),
wszystkie listy zaadresowane z błędem wracałyby do nadawcy.
KaŜda informacja ma określony typ. Opis wydatku jest tekstem. Konto, które obciąŜa wydatek, jest liczbą
itd. Aby zapoznać się z opisem pól, naleŜy otworzyć tabelę w trybie projektowania. W kolumnie Typ
danych właściwości pól.
TYP DANYCH
Autonumerowanie
Data/Godzina
Hiperłącze
Kreator odnośników
Liczba
Nota
Obiekt OLE
TAK / NIE
Tekst
Waluta
OPIS
Unikatowa liczba kolejna (zwiększana o l) lub liczba losowa, przypisywana
przez program Microsoft Access przy dodawaniu nowego rekordu do tabeli.
Pola Autonumerowanie nie moŜna aktualizować. Do zapisu uŜywane są 4
bajty
Pole moŜe zawierać wartości daty i godziny. Akceptowane są daty z
przedziału od 100 do 9 999. Do zapisu uŜywanych jest 8 bajtów
Pole maŜe zawierać tekst lub kombinacje tekstu i liczb. Przechowywane są
one jako tekst, a uŜywane jako adres hiperłącza .
Adres hiperłącza maŜe składać się z trzech części:
• tekstu - wyświetlanego w polu lub w formancie,
• adresu - ścieŜki dostępu do pliku (w formacie UNC) lub strony (adres
URL),
• podadresu – miejsca w pliku lub na stronie, etykietki ekranowej –
tekstu wyświetlanego jako etykietka.
KaŜda z trzech części hiperłącza moŜe zawierać do 2 048 znaków
Tworzy pole, które pozwala wybrać wartość z innej tabeli. Wybór tej opcji
powoduje uruchomienie Kreatora odnośników. Po zakończeniu pracy z
Kreatorem program Microsoft Access ustawia typ danych na podstawie
wartości określonych w Kreatorze. Do zapisu uŜywane są 4 bajty
Dane numeryczne uŜywane w obliczeniach matematycznych. Pole moŜe
zawierać liczbę zapisaną przy uŜyciu l, 2. 4 lub 8 bajtów
Pole moŜe zawierać długi tekst lub kombinacje tekstu i liczb. Długość ciągu
znaków - od 0 do 65 535
Obiekt (arkusz kalkulacyjny programu Microsoft Excel, dokument programu
Microsoft Word. grafika, dźwięk lub inne dane binarne) dołączony lub
osadzony w tabeli programu Microsoft Access. Rozmiar obiektu
ograniczony jest do l gigabajta. Ograniczeniem jest teŜ dostępne miejsce na
dysku.
Wartości Tak i Nie oraz pola zawierające tylko jedna z dwóch wartości (Tak
i Nie, Prawda/F olsz lub WI/Wy/). Do zapisu uŜywany jest l bit
Pole moŜe zawierać kombinacje tekstu i liczb lub liczby nie wymagające
obliczeń, np. numery telefonów. Długość ciągu znaków - od 0 do 255
Pole moŜe zawierać wartości walutowe i dane numeryczne. Są one uŜywane
w obliczeniach matematycznych dokonywanych na danych z dokładnością
do czterech miejsc po przecinku. Wyniki obliczeń mają dokładność do 15
cyfr po lewej stronie separatora dziesiętnego i do 4 cyfr po prawej stronie
separatora. Do zapisu uŜywanych jest 8 bajtów
Strona 17 z 52
Typ Liczba słuŜy do przechowywania liczb. Microsoft Access umoŜliwia wybranie jednej z kilku notacji.
MoŜna je wybierać z listy Rozmiar pola. Deklarując sposób zapisu liczb, trzeba wziąć pod uwagę zakres
ich wartości i dokładność zapisu. PoniŜej opisane zostały najczęściej uŜywane podtypy liczb.
Bajt
Liczby naturalne od 0 do 255
Liczba całkowita
liczby całkowite od -32 768 do 32 767
Liczba całkowita długa
Liczby całkowite od -2 147483648 do 2 147483647
Podwójna precyzja
Liczby rzeczywiste o 10 cyfrach znaczących.
Wartości od -1,79769313486232E308 do 1,79769313486232E308
Pojedyncza precyzja
Liczby rzeczywiste o 6 cyfrach znaczących.
Wartości od -3,402823E38 do 3,402823E38
Domyślnym podtypem jest Podwójna precyzja. JeŜeli wiemy, ze w danym polu będą występować tylko
liczby całkowite o wartości mniejszej niŜ 255, warto uŜyć podtypu Bajt. Zmniejszenie rozmiarów
deklarowanych podtypów powoduje zredukowanie rozmiarów bazy danych i zwiększenie szybkości
działania.
Wybrane podtypy daty i godziny
Data ogólna
Data długa
Dala średnia
Dala krótka
Godzina długa
Godzina średnia
Godzina krótka
Ustawienie domyślne. Jeśli wartością jest tylko data, nie jest wyświetlana godzina.
Jeśli wartością jest tylko godzina - nie jest wyświetlana data. Ustawienie jest
połączeniem ustawień Data krótka i Godzina długa
Odpowiada ustawieniu Dala długa w oknie dialogowym Właściwości ustawień
regionalnych w Panelu sterowania systemu Windows.
Data jest zapisywana w formacie ..dzien-miesiac-rok". np.: 19-cze-94
Odpowiada ustawieniu Data krótka w oknie dialogowym Właściwości ustawień
regionalnych w Panelu sterowania systemu Windows.
Odpowiada ustawieniu na karcie Godzina w oknie dialogowym Właściwości
ustawień regionalnych w Panelu sterowania systemu Windows.
Czas jest zapisywany w cyklu 12. godzinnym, np.: 05:34
Czas jest zapisywany w cyklu 24- godzinnym, np.: 17:34
Strona 18 z 52
6. Historia dostępu do danych
Access jest zaawansowanym interfejsem uŜytkownika dla silnika baz danych Microsoft Jet 4.0.
NiezaleŜnie od tego, czy jesteśmy tego świadomi, Jet zarządza bazą danych zawartą w pliku MDB. Gdy
uruchamiamy plik typu MDB poprzez obiekty DAO lub ADO, równieŜ uŜywamy do tego silnika
Microsoft Jet. Przechowuje on tabele, indeksy i kwerendy, które uruchamia poprzez wbudowany
mechanizm zapytań. Jet jest rozbudowaną, wyposaŜoną w kompletny zestaw funkcji, wielowątkową,
relacyjną bazą danych.
Dzisiaj Microsoft Jet uŜywany jest jako aparat bazy danych w ponad 30 produktach firmy Microsoft. MoŜna
wśród nich wymienić (oprócz, rzecz jasna, Accessa) takie programy, jak Project, Money, Team Manager, a
nawet edukacyjne gry dla dzieci. Jet całkowicie zdominował rynek domowych baz danych, gdyŜ kaŜda jego
edycja zawiera coraz nowocześniejsze technologie. Cofnijmy się teraz odrobinę, aby prześledzić historię
Microsoft Jet.
Jet 1.0
Historia Microsoft Jet rozpoczyna się ponad dziesięć lat temu, kiedy to w firmie Microsoft rozpoczęto
wdraŜanie projektu Access. Gdy w 1992 roku Access 1.0 trafił na półki sklepowe, razem z nim na rynek
domowych baz danych wszedł Jet 1.0. Zawierał on wiele bardzo potrzebnych opcji domowych baz
danych, jak definiowanie danych, kwerendy, zabezpieczenia i indeksowanie. Jet był jednocześnie
produktem pionierskim, gdyŜ zawierał wiele nowych opcji, jak na przykład: kwerendy aktualizujące,
heterogeniczne sprzęŜenia danych i moŜliwość tworzenia kwerendy w oparciu o inną kwerendę. Opcje te
umoŜliwiły programowi Microsoft Access osiągnąć pozycję najpopularniejszej domowej bazy danych.
Jet 1.1
Sukces Accessa był zaskoczeniem dla wszystkich, łącznie z firmą Microsoft. W maju 1993 roku wydano
Access 1.1 oraz Visual Basic 3.0, a razem z nimi Jet 1.1. Ta edycja umoŜliwiała programistom
korzystanie z wielu nowych opcji: poprawionej, zgodnej ze standardem ODBC komunikacji i nowych
sterowników ODBC. Od tej pory zaprzestano tworzenia kodu programu poprzez interfejs API ODBC, a
dostęp do danych ODBC stał się moŜliwy dla kaŜdego. Jet 1.1 umoŜliwił równieŜ swoim uŜytkownikom
łatwe dołączanie zewnętrznych danych, zwłaszcza w nowym formacie Microsoft FoxPro. Poprawiono
biblioteki obiektów DAO, a maksymalny rozmiar bazy Jet wzrósł ze 128 MB do 1,1 GB.
Jet 2.0
Jet 2.0 został wprowadzony na rynek w kwietniu 1994 roku wraz z bardzo popularnym Accessem 2.0.
Dzięki takim opcjom jak wymuszanie reguł poprawności na poziomie silnika bazy, czy integralności
referencyjnej Jet 2.0 stał się nowoczesnym aparatem baz danych. Aby zwiększyć jego wydajność, dodano
równieŜ zapoŜyczoną z FOX-a technologię Rushmore oraz poprawiono funkcjonowanie SQL i obiektów
DAO. Jet 2.0 był równieŜ, bardziej niŜ poprzednie wersje, zgodny z ANSI.
Jet 2.5
W październiku 1994 roku firma Microsoft wypuściła na rynek pakiet Service Pack do Accessa 2.0 oraz
pakiet sterowników ODBC Desktop Drivers Pack 2.0. Były to równieŜ narodziny Jet 2.5. W tej wersji do
konstruowania wyraŜeń Jet uŜywał juŜ VBA, a wsparcie dla źródeł danych ODBC uległo znacznej
poprawie. Ulepszono takŜe obsługę aplikacji przeznaczonych dla wielu uŜytkowników.
Jet 3.0
Gdy pod koniec 1995 roku Microsoft wypuścił na rynek Access 95, silnik Jet został wprowadzony w 32bitowe środowisko. Jet stał się zatem 32-bitowym silnikiem baz danych, posiadającym zdolność
Strona 19 z 52
replikacji danych, a takŜe ulepszone opcje ODBC i DAO. Jet 3.0 był bardzo szybkim silnikiem baz
danych.
Jet 3.5
Wraz z wprowadzeniem na rynek w styczniu 1997 roku pakietu Office 97 oddano do rąk uŜytkowników
Jet 3.5. Był on juŜ w pełni 32-bitowym silnikiem baz danych, którego największym ulepszeniem był
znaczny wzrost wydajności. Jet 3.5 zawierał takŜe nowe zdolności buforowania danych, poprawione
blokowanie stron, ulepszenia w pracy kwerend, ODBCDirect oraz programowe anulowanie poleceń
zapisu na dysk. Replikacja została rozszerzona o repliki częściowe, a wsparcie danych zewnętrznych o
obsługę danych HTML i Exchange.
Jet 3.51
Wypuszczenie na rynek w połowie 1997 roku Jet 3.51, będącego kontynuacją Jet 3.5, prawie nie zostało
zauwaŜone. Nowy Jet zawierał ulepszoną metodę defragmentowania i naprawiania plików typu MDB.
Opcja naprawiania została włączona w znacznie poprawiony proces defragmentowania. W Jet 3.51
poprawiono błędy dotyczące niskopoziomowej obsługi wielu uŜytkowników, jednakŜe najwaŜniejsze w
nim było narzędzie do defragmentowania i naprawy JetCOMP.exe, korzystające z nowej opcji defragmentującej.
Jet 4.0
W czerwcu 1999 roku, wraz z pakietem Office 2000, Microsoft wypuścił na rynek Jet 4.0. Edycja ta była
tym, na co czekali wszyscy programiści. Jet 4.0 zawiera więcej funkcji niŜ wszystkie poprzednie wersje
razem wzięte. Większość z nich została dodana dzięki uwzględnieniu zgromadzonych przez lata próśb i
uwag programistów. Wersja 4.0 to bardzo rozbudowany program, zawierający tak zaawansowane opcje,
jak:
• nowy wbudowany dostawca baz danych OLE;
• blokowanie na poziomie rekordów;
• pełna obsługa Unicode;
• ulepszone typy danych;
• poprawione funkcje Autonumerowania;
• przeszukiwalne pola typu Memo;
• poprawki trybu przeznaczonego dla wielu uŜytkowników;
• ulepszenia w replikacji;
• nowa składnia SQL (bardziej zgodna z ANSI 92).
Strona 20 z 52
7. Budowanie aplikacji
Etapy budowania aplikacji:
•
•
•
•
•
Definiowanie struktury danych:
o definiowanie tablic (struktura, typy danych, klucz główny, ograniczenia, indeksy);
o określenie relacji (więzów integralności);
o wprowadzenie danych testowych
Wykonanie formularzy:
o zaprojektowanie zapytania, na którym będzie oparty formularz;
o wykonanie graficznego układu formularza;
o dodatkowe oprogramowanie formularza.
Wykonanie raportów:
o zaprojektowanie zapytania dla raportu;
o wykonanie graficznego układu raportu;
o określenie sortowania i grupowania;
o dodatkowe oprogramowanie raportu.
Wykonanie formularzy i sekcji sterujących (przyciski).
Dodatkowe oprogramowanie aplikacji.
Większość etapów moŜna przyspieszyć wykorzystując kreatory, a potem dopracowując utworzone
obiekty.
7.1 Wykonanie formularza
Tworzenie formularza
•
zdefiniowanie zapytania
•
uŜycie kreatora formularzy
•
modyfikacja typów pól i wyglądu formularza
•
modyfikacja własności formularza i pól
•
utworzenie przycisków funkcyjnych (z uŜyciem kreatora formantów)
•
oprogramowanie zdarzeń formularza
Dostępne obiekty na formularzach:
• etykiety
• pola tekstowe
• linie itp.
• grupy opcji i przycisków
• pola kombi, listy, wyboru
• obiekty OLE stałe, powiązane
• podformularze
• wykresy
• Inne: kalendarz itp.
NajwaŜniejsze własności:
• formularza
o Dane: źródło rekordów
o Wygląd: widok domyślny
o Inne: edycja dozwolona, usuwanie dozwolone, dodawanie dozwolone, modalny
Strona 21 z 52
•
pól
o
o
o
Dane: źródło formantu (moŜe być wyraŜenie - obliczenia automatyczne), wartość
domyślna, reguła poprawności, komunikat o błędzie
Wygląd: widoczny ,kiedy wyświetlać, własności określające czcionkę, justowanie, kolory i
obramowanie
Inne: nazwa, indeks kolejności dostępu, zatrzymanie przechodzenia
7.2 Wykonanie raportu
Tworzenie raportu
•
zdefiniowanie zapytania
•
uŜycie kreatora raportów
•
utworzenie/modyfikacja grupowania i sortowania
•
modyfikacja wyglądu raportu
•
modyfikacja własności raportu i pól
•
oprogramowanie zdarzeń raportu
Części raportu:
• nagłówek i stopka raportu
• nagłówek i stopka strony
• nagłówek i stopka grupy
Grupy i sortowanie:
• dane podzielone wg hierarchii grup
• sortowanie określone w ramach kaŜdej grupy (nie obowiązuje sortowanie z zapytania!)
NajwaŜniejsze własności:
• raportu
o Dane: źródło rekordów
o Wygląd: stopka strony, nagłówek strony (określa, czy nagłówki na wszystkich stronach)
• sekcji
o Wygląd: wymuszaj nową stronę, nowy wiersz lub kolumna, trzymaj razem, moŜna
pomniejszać, moŜna zmniejszać
• pól
o Dane: źródło rekordów (moŜe być wyraŜenie - obliczenia automatyczne), format, suma
bieŜąca
o Wygląd: ukryj duplikaty, moŜna pomniejszać, moŜna powiększać, własności określające
czcionkę, justowanie, kolory i obramowanie
o Inne: nazwa
MoŜliwości formatowania raportu:
•
wydruk wielokolumnowy (np. etykiety)
•
zmiana strony/kolumny przed/po grupie, utrzymywanie grupy razem
•
pola sumacyjne (np. do numerowania pozycji)
•
pola bez powtórzeń
•
pola „rozciągliwe"
Inne moŜliwości raportów:
Strona 22 z 52
•
•
•
•
zastosowanie podraportów (subreports)
eksport w formacie RTF (tylko raporty bez podraportów)
przesyłanie pocztą MS Mail i faksem
umieszczanie grafiki na raportach i formularzach:
o elementy stałe
o rysunki z bazy
o wykresy MS Graph
8. Przykład bazy danych
8.1. Cel i wymagania systemu informatycznego
System wstępnie nazwany Układ Słoneczny. Głównym jego celem jest zebranie informacji dotyczących
Układu Słonecznego oraz szybkie i efektywne wyszukiwanie informacji.
8.2. Zadania stawiane przed systemem
1) UmoŜliwienie gromadzenia danych o planetach i ich księŜycach
System pozwoli na wprowadzanie nowych informacji oraz łatwe uzupełnianie, zmianę i
usuwanie tych danych.
2) Przeglądanie danych o planetach
3) Wyszukiwanie planet, księŜyców spełniających określone kryteria
System umoŜliwi wyszukiwanie planet według róŜnorodnych kryteriów:
- Masy
- Okresu obiegu wokół Słońca
- Okresu obrotu wokół własnej osi
- Przyspieszenia grawitacyjnego
- Promienia
- Ilości satelitów
- MoŜliwa jest dowolna kombinacja tych kryteriów.
4) Generowanie raportów dotyczących planet i ich księŜyców
Strona 23 z 52
8.3. Projekt implementacji systemu
8.3.1
Wybór narzędzia programowania
Baza danych zostanie stworzona za pomocą Accessa, narzędzia umoŜliwiającego w sposób
łatwy i szybki stworzenie aplikacji .
8.3.2
Dane wprowadzane do systemu
System umoŜliwi wprowadzanie następujących danych dotyczących planet i ich księŜyców :
dane dotyczące planet :
Nazwa planety
Średnia odległość od Słońca
Odległość planety w aphelium
Odległość planety w peryhelium
Promień planety : równikowy i biegunowy
Okres obiegu wokół Słońca w latach
Okres obrotu wokół własnej osi w godzinach
Masa
Przyspieszenie grawitacyjne
Prędkość ucieczki
Ilość satelitów
Charakterystyka planety
dane dotyczące księŜyców :
Nazwa księŜyca
Średnica
Odległość od planety w kilometrach
Okres obiegu wokół planety
Jasność (magnitudo)
Charakterystyka księŜyca
oraz biblioteki zdjęć planet i księŜyców:
Strona 24 z 52
8.3.3
Uwaga :
Określenie tabel, które znajdą się w bazie
Strukturę tabel oraz relacje między nimi moŜna wygenerować za pomocą narzędzia
Dokumentator ( Narzędzia -> Analizuj -> Dokumentator ).
Tabela Planety
Nazwa
ID
NAZWA
SREDNIA_ODLEGLOSC
ODLEGLOSC_PERYHELIUM
ODLEGLOSC_APHELIUM
PROMIEN_ROWNIKOWY
PROMIEN_BIEGUNOWY
OBROT_WOKOL_SLONCA
OBROT_WOKOL_OSI
MASA
PRZYSPIESZENIE_GRAW
PREDKOSC_UCIECZKI
LICZBA_SATELITOW
OPIS
Typ
Liczba całkowita długa (autonumerowanie)
Tekst
Pojedyncza precyzja
Pojedyncza precyzja
Pojedyncza precyzja
Pojedyncza precyzja
Pojedyncza precyzja
Pojedyncza precyzja
Data/Godzina
Pojedyncza precyzja
Pojedyncza precyzja
Pojedyncza precyzja
Liczba całkowita długa
Nota
Rozmiar
4
20
4
4
4
4
4
4
8
4
4
4
4
-
Typ
Liczba całkowita długa (autonumerowanie)
Liczba całkowita długa
Tekst
Pojedyncza precyzja
Pojedyncza precyzja
Pojedyncza precyzja
Pojedyncza precyzja
Nota
Rozmiar
4
4
20
4
4
4
4
-
Typ
Liczba całkowita długa (autonumerowanie)
Liczba całkowita długa
Obiekt OLE
Rozmiar
4
4
-
Tabela Ksiezyce
Nazwa
ID_KSIEZYCA
ID_PLANETY
NAZWA
SREDNICA
ODLEGLOSC
OKRES_OBIEGU
JASNOSC
OPIS
Tabela Zdjecia_planet
Nazwa
ID_ZDJECIA
ID_PLANETY
ZDJECIE
Strona 25 z 52
Tabela Zdjecia_ksiezycow
Nazwa
ID_ZDJECIA
ID_KSIEZYCA
ZDJECIE
8.3.4
Typ
Liczba całkowita długa (autonumerowanie)
Liczba całkowita długa
Obiekt OLE
Diagram encji przykładowej bazy danych
Strona 26 z 52
Rozmiar
4
4
-
8.3.5
Opis interfejsu uŜytkownika
Dodawanie, modyfikowanie planet i ich księŜyców umoŜliwiają poniŜsze formatki :
Strona 27 z 52
Wyszukiwanie w bazie danych kandydatów spełniających dowolną kombinację kryteriów wymienionych
w punkcie 8.2 niniejszego opracowania, moŜliwe jest dzięki poniŜej przedstawionej formatce:
Realizowane
jest
to
za
pomocą
dynamicznie
tworzonego
zapytania
SQL.
Dla przykładu, aby wyszukać wszystkie planety mające więcej niŜ trzy księŜyce naleŜy skierować
zapytanie SQL do bazy danych:
SELECT * FROM PLANETY WHERE [Ilosc_satelitow] > 3
Strona 28 z 52
9. Tworzenie bazy danych – krok po kroku ( prawie ☺ ) Access 2003
1. Klikamy w ikonkę „Nowy” , wybieramy „Pusta baza danych” i podajemy nazwę bazy danych.
Pojawi się okno jak na rysunku 1.
Rys. 1
2. Zaczynamy tworzyć tabele. W tym celu „klikamy” w „Utwórz tabelę w widoku projektu”. Pojawi
się okno, w którym wprowadzamy nazwy pól, ich typy, ewentualny opis zgodnie z naszym
projektem ( patrz punkt 8.3.3 ). Rysunek 2 przedstawia wypełnioną tabelę „Planety”.
Uwaga : podczas zapisu Access zapyta się czy chcemy zdefiniować klucz podstawowy. Na to
pytanie odpowiadamy „Nie” – klucze wprowadzimy sobie później , chociaŜ nic nie przeszkadza
abyśmy zrobili sobie to teraz.
Rys. 2
Strona 29 z 52
3. Podobnie postępujemy z następnymi tabelami : Ksiezyce, Zdjęcia.
Uwaga : proponuję zarówno w nazwach pól jak i nazwach tabel nie stosować polskich znaków oraz
znaków specjalnych na przykład spacji (zamiast niej stosujemy podkreślenie).
4. Teraz spoglądając na diagram encji musimy określić klucze w tabelach. W tym celu „klikamy” w
tabelę prawym przyciskiem myszy i z otworzonego w ten sposób menu wybieramy „Widok
projektu”. Otworzy się okno tabeli jak przy projektowaniu. Klikamy w pole, które ma być
kluczem podstawowym i prawym przyciskiem myszy otwieramy meny, z którego wybieramy
„Klucz podstawowy” – przy danym polu pojawi się symbol klucza. Ponowne załoŜenie klucza na
polu, które juŜ go posiada powoduje jego usunięcie.
Oczywiście mając juŜ pewne wyobraŜenie o relacjach między tabelami mogliśmy klucze
wprowadzić juŜ w momencie projektowania (zakładania) tabel.
5. Po określeniu kluczy z menu „Narzędzia” wybieramy „Relacje” – pojawi się okno, z którego
wybieramy wszystkie tabele. Efekt przedstawia rysunek 3.
Rys. 3.
6. Teraz wstawiamy relacje. Zilustruję to na przykładzie relacji pomiędzy tabelą „Planety” a tabelą
„Ksiezyce”.
a) klikamy w tabelę „Planety” (najlepiej w pole ID) i trzymając lewy przycisk myszy,
przesuwamy kursor do tabeli „Ksiezyce” (najlepiej na pole ID_Planety )
b) pojawi się okno (rys. 4), w którym moŜemy wybrać po jakich polach będziemy łączyli
tabele relacjami.
Strona 30 z 52
Rys. 4
c) dodatkowo zaznaczamy opcję „wymuszaj więzy integralności” , „kaskadowo aktualizuj
pola pokrewne” oraz „kaskadowo usuń rekordy pokrewne” i „klikamy” w przycisk
„Utwórz”
d) w analogiczny sposób łączymy inne tabele relacjami (patrz rozdział 8.3.4 )
Mając juŜ wprowadzone relacje przystępujemy do tworzenia formularzy. W tym celu moŜna skorzystać z
pomocy kreatorów lub utworzyć samodzielnie formularz. Tutaj pokaŜemy jak stworzyć samodzielnie
formularz. W tym celu „klikamy” w oknie bazy danych w Formularze i wybieramy „Utwórz formularz w
widoku projektu”.
Pojawi się okno pokazane na rysunku 5 , które musimy wypełnić danymi.
Rys. 5.
Strona 31 z 52
7. We właściwościach formularza przechodzimy do zakładki „Format” i w polu „Tytuł” wpisujemy
„Planety”
8. Przechodzimy do zakładki „Dane” wypełniając ją :
• W polu „Źródło rekordów” wybieramy tabelę „Planety” – pojawi się okno z polami tabeli,
które zaznaczamy ( z Shiftem ) i przeciągamy na pole formularza ( sekcja Szczegóły )
(rys.6). Białe pola są polami tabeli , natomiast pola po lewej stronie to etykiety pól baz
danych – ich nazwy moŜna dowolnie edytować ( prawy przycisk myszy na etykiecie –
właściwości )
Uwaga : do formularza nie dodajemy pola ID.
Rys. 6 .
•
Następnie ustawiamy kolor tła formularza, ustawiamy wielkość i kolor czcionki etykiet i
pól, ustawiamy w odpowiednich miejscach formularza pola i etykiety. Efekt przedstawia
rysunek poniŜej (rys. 7.)
Strona 32 z 52
Rys. 7.
9. Tworzymy teraz formularz do obsługi zdjęć planet (Zdjecia_Planet). W tym celu znowu
wybieramy z bazy danych „Utwórz formularz z widoku projektu”. Pojawi się okno jak na rysunku
5.
Uwaga : Jeśli nie pojawi nam się okno „Właściwości” to otwieramy je albo za pomocą paska
narzędzi albo za pomocą prawego przycisku myszy.
We własnościach formularza ustawiamy :
1. Zakładka Format
• Tytuł – Zdjęcia Planet
• Paski przewijania - Ŝaden
• Selektory rekordów – nie
• Styl obramowania – brak
• Linie podziału - nie
2. Zakładka Dane
Przy pozycji „Źródło rekordów” wybieramy tabelę „Zdjecia_Planet” i wprowadzamy pole
„ZDJECIE” na formularz
Uwaga : Jeśli takiego okna nie ma to w pasku narzędzi „klikamy” w ikonkę „Lista pól”
(lub z menu Widok -> Lista pól ) – patrz rys. 8.
Strona 33 z 52
Rys. 8.
3. Usuwamy etykietę i ustawiamy własności obiektu „ZDJECIE” (na formularzu)
• Tryb wymiarowania - Powiększ
• Styl obramowania - przezroczysty
4. Zapisujemy zmodyfikowany formularz
10. Z okna „Baza danych” wybieramy formularz „Planety” i otwieramy w trybie projektu.
11. Z paska narzędzi wybieramy „Podformularz/Podraport” (pasek narzędzi : „Projekt formularza”) i
w obszarze roboczym rysujemy obszar podformularza. Po narysowaniu pojawi się okno, z którego
wybieramy „UŜyj istniejącego ...” wybierając „Zdjecia” i „klikamy” w przycisk „Dalej”.
• W oknie „Kreator podformularzy”, w odpowiedzi na pytanie „Czy chcesz
samodzielnie zdefiniować, które pola łączą główny formularz z podformularzami ....”
zaznaczamy „Zdefiniuję samodzielnie”.
• Pojawi się tabela, w której w pierwszej kolumnie wstawiamy ID , a w drugiej
ID_Planety ( patrz rysunek 9 ) i „klikamy” w przycisk „Dalej”
• Podajemy nazwę podformularza i „klikamy” w przycisk „Zakończ”.
Strona 34 z 52
Rys. 9.
12. Rysunek 10 przedstawia formularz w trybie projektu, a rysunek 11 widok formularza.
Rys. 10.
Strona 35 z 52
Rys. 11
13. W podobny sposób jak formularz „Planety” tworzymy formularz do obsługi danych dotyczących
księŜyców (patrz punkt 9).
14. Następnie tworzymy formularz do obsługi zdjęć księŜyców (analogicznie jak w punkcie 9)
15. Teraz naleŜałoby połączyć nasze formularze w jeden. W tym celu w oknie Bazy danych tworzymy
formularz o nazwie np. „Main” i wypełniamy go według schematu podanego w podpunktach
poniŜej :
a) prawym przyciskiem myszy otwieramy okno właściwości formularza i tam wypełniamy :
zakładka Format : Tytuł - wpisujemy „Main”
zakładka Format : Selektory rekordów - wpisujemy „nie”
zakładka Format : Linie podziału - wpisujemy „nie”
zakładka Dane : Źródło danych – wybieramy tablicę „Planety”
b) zamykamy okno „Właściwości formularza” i zapisujemy nowy formularz
c) z paska „Przybornik” wybieramy „Formant karta” i rysujemy kartę na naszym formularzu
( patrz rysunek 12 )
d) klikamy w kartę prawym przyciskiem myszy i z menu wybieramy „Właściwości”.
Uwaga : Tytuł naszego okna właściwości powinien brzmieć : „Formant Karta :
FormantKarta0”. Jeśli tak nie jest to za pomocą pola kombi wybieramy „FormantKarta0”
e) Wypełniamy własności „FormantKarta0” według następującego schematu :
zakładka Format : Lewy - wpisujemy 0
zakładka Format : Górny - wpisujemy 0
zakładka Format : Rozmiar czcionki - wpisujemy 12
zakładka Format : Grubość czcionki - wpisujemy „Pogrubiona”
zamykamy okno „Właściwości” i zapisujemy formularz (efekt naszej przedstawia
rysunek 12)
Strona 36 z 52
Rys. 12.
f) następnie „klikamy” w napis „Strona 1” , prawym przyciskiem otwieramy okno
„Właściwości” i w zakładce „Format” , w „Tytule” wpisujemy „Planety. Analogicznie
postępujemy dla „Strony 2” wpisując nazwę „KsięŜyce”.
g) zapisujemy formularz, zamykamy go i przechodzimy do okna „Bazy danych” wybierając
formularz „Planety” otwierając go za pomocą przycisku „Projektuj”
h) modyfikujemy ustawienia formularza „Planety” :
zakładka Format : Paski przewijania - Ŝaden
zakładka Format : Selektory rekordów - nie
zakładka Format : Przyciski nawigacyjne - nie
zakładka Format : Linie podziału - nie
zakładka Format : Pole menu sterowania - nie
zakładka Format : Przyciski Min Maks - Ŝaden
zakładka Format : Przycisk Zamknij - nie
i) zapisujemy i zamykamy formularz „Planety” , otwieramy w trybie formularz „KsięŜyce” i
modyfikujemy go identycznie jak formularz „Planety”, jednak z tą róŜnicą, Ŝe :
zakładka Format : Przyciski nawigacyjne - tak
zakładka Format : Pole menu sterowania - tak
j) zapisujemy i zamykamy formularz „KsięŜyce” i z powrotem otwieramy w trybie
projektowania formularz „Main” , zakładkę „Planety”
k) wstawiamy klikamy w ikonkę „Podformularz / Podraport” (pasek „Przybornik”) i
rysujemy w zakładce planety obszar podformularza (na całą zakładkę). Następnie z okna
„Kreator podformularzy” wybieramy formularz „Planety” oraz w następnym oknie
definiujemy samodzielnie pola łączące formularz z podformularzem wybierając w polu
formularza i podformularza pole „ID” (pole klucza głównego tabeli „Planety).
l) przechodzimy do zakładki „KsięŜyce” i niej analogicznie jak w podpunkcie „k”
wstawiamy formularz „Ksiezyce” wybierając pola łączące : formularza – pole „ID”,
podformularza – pole „ID_PLANETY”.
Strona 37 z 52
m) zapisujemy zmiany i zamykamy nasz formularz. Rysunek 13 i 14 przedstawia gotowy
formularz.
Rys. 13.
Rys. 14.
Strona 38 z 52
n) proszę zwrócić uwagę, Ŝe planety nie są posortowane np. alfabetycznie. Posortujmy wobec
tego planety w naszym formularzu po nazwach planet (zwróć uwagę, Ŝe w tabeli
„Planety”, we właściwościach pola „NAZWA” ustawiliśmy właściwość „Indeksowanie”
na „Tak-bez duplikatów”. Jeśli tego nie zrobiliśmy naleŜy to teraz zrobić. ).
o) aby uszeregować planety alfabetycznie otwieramy formularz „Main” w trybie
projektowania, otwieramy jego właściwości, wybieramy zakładkę „Dane” , „klikamy w
pole „Źródło rekordów” , a następnie klikamy w ikonkę z trzema kropkami (rys. 15) –
otwieramy konstruktora kwerend.
Rys. 15.
p) pojawi się okno (rys. 16), w którym w kolumnie 1 wybieramy : w polu Tabela : Planety, w
polu Pole : * ; kolumnie 2 wybieramy : w polu Tabela : Planety, w polu Pole : NAZWA ,
w polu Sortuj : Rosnąco. Tabela „Planety” zostanie posortowana według nazw planet.
Zamykamy okno zapisując zmiany.
Rys. 16.
Strona 39 z 52
UWAGA : W oknie „Właściwości” w zakładce „Format” sprawdźmy tytuł – powinien być
„Main”. Pojawienie się w widoku formularza zapytania o podanie „ID”
oznacza, Ŝe sortowanie wstawiliśmy nie do tego formularza (prawdopodobnie do
formularza „Planety”). NaleŜy wtedy wykasować wszystko z pola „Źródło
rekordów” i wstawić nazwę tabeli (tu tabela „Planety”).
q) zwróćmy uwagę, Ŝe przechodząc do zakładki „KsięŜyce” tak naprawdę nie wiemy jakiej
planety jest wybrany księŜyc. Spróbujmy temu zaradzić. Jednym ze sposobów jest
wstawienie nagłówka formularza.
r) otwieramy formularz „Main” w trybie projektowania, „klikamy” prawym przyciskiem w
pasek tytułowy formularza – otworzy się nam okno, z którego wybieramy „Nagłówek /
stopka formularza”. Z oknie naszego formularza pojawią się dodatkowe okna : na górze
formularza – nagłówek, na dole – stopka.
s) przechodzimy do stopki formularza , „klikamy” w nią prawym przyciskiem myszy, z
menu wybieramy „Właściwości” i w zakładce „Wszystkie” w polu „Wysokość”
ustawiamy wartość 0 (zero) , a w polu „Widoczny” ustawiamy „nie” – stopka nie będzie
wyświetlana.
t) przechodzimy do nagłówka formularza, „klikamy” w niego prawym przyciskiem myszy, z
menu wybieramy „Właściwości” i w zakładce „Wszystkie” w polu „Wysokość”
ustawiamy wartość 1,22 cm.
u) następnie klikamy w ikonę „Lista pól” i z okna przeciągamy na nagłówek formularza pole
„planety.nazwa”. Następnie pole to formatujemy ustawiając czcionkę, jej wielkość oraz
kolor (patrz rys. 17).
Rys. 17.
16. Teoretycznie bazę danych mamy juŜ zrobioną, ale pozbawiona jest ona moŜliwości wydruków na
przykład informacji o planetach i ich księŜycach. W tym celu zrobimy raport, w którym
zdefiniujemy widok wydruku.
17. W tym celu w oknie „Baza danych” wybieramy „Raporty” i klikamy w „Utwórz raport w widoku
projektu”. Pojawi się okno jak na rysunku 18.
Strona 40 z 52
Rys. 18.
a) „klikamy” prawym przyciskiem myszy w pasek tytułowy raportu, otwieramy okno
„Właściwości” i wpisujemy odpowiednio :
- zakładka „Format”, pole „Tytuł” : „Planety z księŜycami”
- zakładka „Format”, pole „Szerokość” : 18,5 cm
- zakładka „Dane”, pole „Źródło rekordów” – „klikamy” w ikonkę z trzema
kropkami (Konstruktor kwerend). Pojawi się wtedy okno, które wypełniamy
według poniŜszego schematu :
o „klikamy” w nie prawym przyciskiem myszy i z menu wybieramy polecenie
„PokaŜ tabele”.
o z okna tabel wybieramy przez naciśnięcie przycisku „Dodaj” tabele
„PLANETY” i „KSIEZYCE”. Zamykamy okno tabel (przycisk „Zamknij”).
o wypełniamy kolumny :
o kolumna 1 , pole „Pole” – „ID_PLANETY” , pole „Tabela” – „KSIEZYCE” ,
pole „Kryteria” – „=PLANETY.ID”
o kolumna 2 , pole „Pole” – „PLANETY.* ” , pole „Tabela” – „PLANETY”
o kolumna 3 , pole „Pole” – „KSIEZYCE.* ” , pole „Tabela” – „KSIEZYCE”
o kolumna 4 , pole „Pole” – „PLANETY.NAZWA” , pole „Tabela” –
„PLANETY” , pole „Sortuj” – „Rosnąco”
o kolumna 5 , pole „Pole” – „KSIEZYCE.NAZWA” , pole „Tabela” –
„KSIEZYCE” , pole „Sortuj” – „Rosnąco”
o zamykamy okno konstruktora kwerend zapisując zmiany. Widok wypełnionego
okna przedstawia rysunek 19.
Strona 41 z 52
Rys. 19,
-
zamykamy okno „Właściwości” zapisując raport.
b) „klikamy” w ikonę „Lista pól” i z otworzonego okna przeciągamy do sekcji szczegóły
raportu pola, dotyczące księŜyców (związane z tabelą KSIEZYCE). Pola te moŜemy
sformatować ustawiając rozmiar czcionki, kolor, tło.
c) „klikamy” w ikonę „Sortowanie i grupowanie” (pasek narzędzi „Projekt raportu”)
pojawi się okno, które wypełniamy według schematu pokazanego na rysunku 20.
Uwaga : waŜne jest, aby ustawić pole „Nagłówek grupy” na „Tak” – w raporcie pojawi
się nowa sekcja „PLANETY.NAZWA – Nagłówek”.
Rys. 20.
d) zamykamy okno „Sortowanie i grupowanie”.
e) do sekcji „PLANETY.NAZWA – Nagłówek” przeciągamy z listy pól wszystkie potrzebne
nam pola dotyczące planet (związane z tabelą PLANETY). Pola te odpowiednio
formatujemy.
Strona 42 z 52
f) przechodzimy do nagłówka strony i we „Właściwościach”, zakładka „Format” ustawiamy
„wysokość” na 0 oraz „Widoczny” na „nie”. Analogicznie postępujemy dla stopki strony.
g) następnie zapisujemy raport ( tu pod nazwą : „Planety z księŜycami” ) i zamykamy go.
h) prawdopodobnie nasz raport posiada błąd ( zielony kolor w lewym górnym rogu – rys. 21).
Rys. 21
Jest to spowodowane błędnymi ustawieniami marginesów naszego raportu. W celu
poprawienia błędnych marginesów otwieramy nasz raport w trybie projektowania, z menu
głównego wybieramy Plik -> Ustawienia strony i ustawiamy marginesy prawy i lewy na
0,9 cm , a dolny i górny na 1,5 cm. Zamykamy nasz raport zapisując zmiany.
18. w oknie „Baza danych” przechodzimy do formularzy i wybieramy w trybie projektowania
formularz „Main”. Z paska narzędzi „Projekt formularza” wybieramy „Przycisk polecenia” i
rysujemy go w nagłówku formularza (trzymając naciśnięty prawy przycisk myszy). Po
narysowaniu automatycznie otworzy się okno „Kreatora przycisków poleceń”, z którego
wybieramy :
o w okienku „Kategorie” :
„Operacje na raportach”
o w okienku „Akcje” :
„Drukuj raport”
o naciskamy klawisz „Dalej” i z nowego okna wybieramy raport „Planety z księŜycami”
o naciskamy klawisz „Dalej” i w następnym oknie zaznaczamy „Obraz” oraz „Drukarka” i
„klikamy” w klawisz „Zakończ”.
o dodatkowo „klikając” prawym klawiszem myszy w utworzony przed chwilą przycisk
drukowania raportu i wybierając „Właściwości”, w zakładce „Inne” , pole „Tekst etykietki
formantu” moŜemy wpisać informację, która będzie się wyświetlała w „dymku” po
najechaniu klawiszem kursora na przycisk.
19. Stwórzmy teraz moŜliwość przeszukiwania bazy danych. W tym celu stworzymy dodatkowy
formularz, w którym wstawimy warunki przeszukiwania. Niestety, będziemy musieli w tym
wypadku wykorzystać VBA.
a) przechodzimy do okna „Bazy danych” , wybieramy „Formularze” oraz „Utwórz formularz
w widoku projektu”
b) od razu prawym przyciskiem myszy uruchamiamy okno „Właściwości” formularza i
ustawiamy :
o zakładka „Format” , pole „Tytuł” : „Formularz Wyszukiwanie”
o zakładka „Format” , pole „Selektory rekordów” : „Nie”
o zakładka „Format” , pole „Przyciski nawigacyjne” : „Nie”
o zakładka „Format” , pole „Linie podziału” : „Nie”
o zakładka „Inne” , pole „Modalny” : „Tak”
c) zapisujemy formularz pod nazwą „Formularz Wyszukiwanie”
d) z paska narzędzi „Przybornik” wstawiamy „Pole listy”. Etykietę „Pola listy” ustawiamy
nad polem odpowiednio ją formatując. Wstawiając „Pole listy” pojawi się okno kreatora
listy pól : wybieramy „Chcę wpisać Ŝądane przeze mnie wartości” , „klikamy” w przycisk
„Dalej” i w tabelce wpisujemy kolejno w kaŜdym wierszu : „Masa” , „Średnia odległość”,
Strona 43 z 52
e)
f)
g)
h)
i)
„Promień równikowy”, „Promień biegunowy”, „Okres obiegu wokół Słońca”,
„Przyspieszenie grawitacyjne” itp. – krótko mówiąc kryteria, po których będziemy
przeszukiwać bazę danych. Następnie „klikamy” w przycisk „Dalej” i wpisujemy nazwę
etykiety : „Lista cech planet” i klikamy w „Zakończ”
prawym przyciskiem myszy klikamy w narysowane na formularzu „Pole listy” i
wybieramy „Właściwości” ustawiając pola według następującego schematu :
o zakładka „Format” , pole „Liczba kolumn” : 1
o zakładka „Format” , pole „Szerokość kolumn” : 2,5 cm
o zakładka „Format” , pole „Rozmiar czcionki” : 10
o zakładka „Dane” , pole „Źródło formantu” : pozostawiamy puste (koniecznie)
o zakładka „Dane” , pole „Typ źródła wierszy” : wybieramy „Lista wartości”
o zakładka „Dane” , pole „Źródło wierszy” : wpisujemy (dokładnie jak w tym wierszu,
zachowując średniki i cudzysłowy) : "Masa";"Średnia odległość";"Promień
równikowy";"Promień biegunowy";"Okres obiegu wokół Słońca";"Przyspieszenie
grawitacyjne" . Pola te pojawią się w liście pól.
o zakładka „Inne” , pole „Nazwa” : Lista_cech_planet (uwaga : nie stosujmy tu spacji
ani polskich znaków – tak na wszelki wypadek ☺ )
Uwaga : część wymienionych wyŜej pól została juŜ wypełniona w trakcie działania
„Kreatora pól”, nie mniej podaję tu ich sposób wypełnienia odpowiednimi wartościami
w identyczny sposób wstawiamy następną listę pól nadając mu nazwę (zakładka „Inne” ,
pole „Nazwa”) „Lista_operatow” , a kolumny (zakładka „Dane” , pole „Źródło wierszy” )
wypełniając znakami : = ; > ; < ; <> .
teraz „klikamy” w ikonę „Pole tekstowe” (pasek narzędzi „Przybornik”) i wstawiamy je do
naszego formularza. We „Właściwościach” ustawiamy rozmiar czcionki, tło itp. oraz w
zakładce „Inne”, pole „Nazwa” wpisujemy „Wartosc” ( bez polskich liter ! ).
teraz z paska narzędzi „Przybornik” wybieramy „Przycisk polecenia” i wstawiamy go do
formularza. Jednocześnie otworzy nam się okno „Kreatora przycisków poleceń” , z
którego wybieramy kolejno : „Operacje na formularzach” , „Edytuj filtr formularza” i
klikamy w klawisz „Zakończ”. Tak naprawdę nie ma znaczenia co wybierzemy, poniewaŜ
i tak zmienimy sobie działanie tego przycisku w jego „Właściwościach”. A więc do dzieła
– modyfikujemy właściwości wstawionego przycisku :
o zakładka „Format” , pole „Tytuł” : SZUKAJ
o zakładka „Format” , pole „Obraz” : „klikając” w ikonkę z trzema kropkami moŜemy
wybrać odpowiadającą nam ikonę, która będzie umieszczona na przycisku
o zakładka „Inne” , pole „Nazwa” : Wyszukaj_rekordy (bez polskich liter i spacji)
o zakładka „Inne” , pole „Tekst etykietki formantu” : Szukaj
zapisujemy nasz formularz. Efekt naszej pracy w trybie projektowania przedstawia
rysunek 22 , a w „Widoku formularza” rysunek 23.
Strona 44 z 52
Rys. 22.
Rys. 23
j) oczywiście to nie koniec naszej pracy. Teraz przychodzi kolej na VBA. Otwieramy
ponownie „Formularz Wyszukiwanie” w trybie projektowania i „klikamy” prawym
przyciskiem myszy w przycisk „Szukaj” (ten z lornetką) i otwieramy okno „Właściwości”.
k) przechodzimy do zakładki „Zdarzenie” i „klikamy” w pole „Przy kliknięciu” – pole to
powinno wypełnić się treścią „ [Procedura zdarzenia] ”. „Klikamy” w ikonę z trzema
kropkami i przechodzimy do edytora VBA. Automatycznie został wygenerowany kod
obsługi tego zdarzenia, ale on nas nie interesuje – wykasowujemy go wstawiając
następujący kod :
Option Compare Database
Option Explicit
Private Sub Wyszukaj_rekordy_Click()
Dim str As String
str = ""
Select Case Lista_Cech_Planet.Value
Case "Masa"
str = "[Masa] " & Me.Lista_operatow.Value & Me.Wartosc.Value
Strona 45 z 52
Case "Średnia odległość"
str = "[Srednia_odleglosc] " & Me.Lista_operatow.Value & Me.Wartosc.Value
Case "Promień równikowy"
str = "[Promien_rownikowy] " & Me.Lista_operatow.Value & Wartosc.Value
Case "Promień biegunowy"
str = "[Promien_biegunowy] " & Me.Lista_operatow.Value & Me.Wartosc.Value
Case "Okres obiegu wokół Słońca"
str = "[Obrot_wokol_Slonca] " & Me.Lista_operatow.Value & Me.Wartosc.Value
Case "Przyspieszenie grawitacyjne"
str = "[Przyspieszenie_graw] " & Me.Lista_operatow.Value & Me.Wartosc.Value
Case Else
MsgBox "coś nie tak, koniecznie sprawdz"
str = ""
End Select
If str <> "" Then
str = str & " "
str = "SELECT * FROM PLANETY WHERE " & str
Forms![Main].RecordSource = str
End If
DoCmd.Close
Exit_Wyszukaj_rekordy_Click:
Exit Sub
End Sub
Uwaga : analiza kodu znajduje się w rozdziale 10
l) zapisujemy nasz kod, zamykamy okno edytora VBA, zamykamy nasz formularz zapisując
go i wybieramy formularz „Main” przechodząc do jego edycji.
m) w nagłówku formularza „Main” wstawiamy z paska narzędzi „Przybornik” „Przycisk
polecenie” – otworzy się okno „Kreatora przycisków poleceń” , z którego wybieramy
kolejno : „Operacje na formularzach” , oraz akcję : „Otwórz formularz”. „Klikamy” w
przycisk „Dalej” i w następnym oknie wybieramy „Formularz Wyszukiwanie”. Kończymy
pracę kreatora.
n) prawym przyciskiem myszy otwieramy „Właściwości” naszego przycisku, przechodzimy
do zakładki „Inne” i w polu „Nazwa” wpisujemy „Otworz_Szukanie” (bez polskich liter).
Następnie przechodzimy do zakładki „Zdarzenie” i „klikamy” w ikonę z trzema kropkami
obok pola „Przy kliknięciu” – otworzy się nam edytor VBA. Wyrzucamy cały kod
dotyczący tylko tego polecenia i wstawiamy poniŜszy :
Private Sub Otworz_Szukanie_Click()
DoCmd.OpenForm "Formularz Wyszukiwanie"
Exit_Otworz_Szukanie_Click:
Exit Sub
End Sub
Strona 46 z 52
Uwaga : W edytorze VBA powinien znajdować się jeszcze kod dotyczący wydruku
wcześniej stworzonego raportu ( Procedura
: Private Sub
Druk_zbiorczy_planet_Click()
). Tego kodu po Ŝadnym pozorem nie
wykasowujemy !
o) zapisujemy kod i zamykamy edytor VBA, zapisujemy formularz „Main”. Oczywiście w
kaŜdej chwili moŜemy zmienić właściwości tego przycisku.
p) zwróćmy uwagę, Ŝe jeŜeli wprowadzimy filtry na naszą tabelę planety to pozostają one
cały czas – aŜ do zamknięcia bazy danych. Wobec tego musimy mieć moŜliwość
wyłączenia ich w kaŜdej chwili. PosłuŜymy się znowu przyciskiem poleceń.
q) w tym celu w nagłówku formularza „Main” wstawiamy przycisk poleceń – otworzy się
okno „Kreatora przycisków poleceń” - wciskamy przycisk „Anuluj”. Przechodzimy do
„Właściwości” przycisku ustawiając odpowiednie pola według schematu :
o zakładka „Format” , pole „Tytuł” : Kasuj
o zakładka „Format” , pole „Obraz” : „klikając” w ikonkę z trzema kropkami moŜemy
wybrać odpowiadającą nam ikonę, która będzie umieszczona na przycisku
o zakładka „Inne” , pole „Nazwa” : Koniec_filtrowania (bez polskich liter i spacji)
o zakładka „Inne” , pole „Tekst etykietki formantu” : Koniec filtrowania
o zakładka „Zdarzenie” , „klikamy” w pole „Przy kliknięciu” – pole to powinno
wypełnić się treścią „ [Procedura zdarzenia] ”. „Klikamy” w ikonę z trzema
kropkami i przechodzimy do edytora VBA. Automatycznie został wygenerowany
kod obsługi tego zdarzenia, ale on nas nie interesuje – wykasowujemy go wstawiając
następujący kod :
Private Sub Koniec_filtrowania_Click()
Dim str As String
str = "SELECT * FROM PLANETY"
Forms![Main].RecordSource = str
Exit_Koniec_filtrowania_Click:
Exit Sub
End Sub
o zamykamy edytor VBA i zapisując zmiany, zapisujemy zmiany w formularzu
„Main” i zamykamy go.
20. Praktycznie mamy juŜ gotową aplikację. Niestety nie będzie ona mogła samodzielnie działać – na
komputerze musi być zainstalowany Access lub Access Developer (okrojona wersja pozwalająca
na oglądanie bazy). Ale spróbujemy sobie zmodyfikować wygląd naszej bazy danych. W tej
chwili wygląda ona tak jak na rysunku 24 (uruchomiona).
Strona 47 z 52
Rys. 24
21. Uwaga : zanim zaczniesz wykonywać polecenia z poniŜszych punktów zrób kopię zapasową
bazy danych. Później moŜe być z późno !! ☺
22. Z menu głównego wybieramy „Narzędzia” -> „Narzędzia bazy danych” -> „Konwertuj bazę
danych” -> „Na format pliku programu Access 2002 – 2003” a następnie podajemy nazwę nowej
bazy danych. Wychodzimy z programu Access i ponownie uruchamiamy przekonwertowaną do
formatu 2003 bazę danych.
23. Ponownie z menu głównego wybieramy „Narzędzia” -> „Narzędzia bazy danych” -> „Utwórz
plik MDE”, a następnie podajemy nazwę pliku.
Jeśli baza danych zawiera kod języka Microsoft Visual Basic for Applications (VBA) zapisanie
bazy danych programu Microsoft Access jako pliku MDE spowoduje kompilację wszystkich
modułów, usunięcie całego edytowalnego kodu źródłowego i skompaktowanie docelowej bazy
danych. Kod języka Visual Basic będzie nadal wykonywany, ale jego wyświetlenie i edytowanie
będzie niemoŜliwe. Kod języka Visual Basic będzie wciąŜ działał tak jak poprzednio - będzie
moŜliwe aktualizowanie danych i uruchamianie raportów.
Zapisanie bazy danych w formacie MDE nie zapobiegnie modyfikowaniu projektu bazy danych.
Zostaną jednak wprowadzone następujące zmiany:
o Interfejs uŜytkownika umoŜliwiający modyfikowanie lub tworzenie formularzy, raportów
lub modułów zostanie wyłączony.
o Dodawanie, usuwanie lub zmienianie odwołań do bibliotek obiektów lub do baz danych w
oknie dialogowym „Odwołania VBA” będzie niemoŜliwe.
Strona 48 z 52
o Kod źródłowy będzie niedostępny.
o Polecenia importowania i eksportowania formularzy, raportów lub modułów zostaną
wyłączone. Jednak tabele, kwerendy, strony dostępu do danych i makra moŜna będzie
importować z baz danych innych niŜ MDE lub eksportować do nich.
Więcej informacji na temat pliku typu MDA moŜna znaleźć między innymi na stronie
internetowej firmy Microsoft (http://office.microsoft.com/pl-pl/assistance/HP052393021045.aspx)
24. Zamykamy istniejącą bazę danych i otwieramy bazę MDE. Z menu głównego wybieramy
polecenie „Uruchomienie” (menu „Narzędzia). Pojawi się okno (rys. 25) , które wypełniamy
według schematu :
Rys. 25.
o pole „Tytuł aplikacji” – wpisujemy np. Układ Słoneczny
o pole „Ikona aplikacji” – naciskając przycisk „Przeglądaj” moŜemy wybrać ikonę naszej
aplikacji
o wyłączamy opcje : „Zezwalaj na pełne menu” , „Zezwalaj na domyślne menu skrótów”,
„UŜyj specjalnych klawiszy programu Access”, „Zezwalaj na wbudowane paski narzędzi”,
„Zezwalaj na zmiany pasków narzędzi/menu” , „Wyświetl okno bazy danych” oraz
„Wyświetl pasek stanu”
o w polu „Wyświetl formularz/stronę” wybieramy formularz „Main”
o zamykamy okno przez „OK” , zamykamy bazę danych i uruchamiamy ją ponownie (rys.26)
Strona 49 z 52
Rys. 26.
o proszę zwrócić uwagę, Ŝe nasza baza danych jest niedostępna w trybie projektowania, nie
moŜemy podejrzeć formularzy, tabel itp.
o w jaki sposób moŜna przywrócić wyświetlanie wszystkich pasków narzędzi (jak przed
punktem 24) ? Hmmm. Tajemnica. ☺
25. W ten sposób nasza baza danych jest względnie zabezpieczona przed ingerencją innych , mniej
zaawansowanych uŜytkowników.
26. I na tym zakończymy budowę przykładowej bazy. Mam nadzieję, Ŝe powyŜszy materiał nie tylko
pomoŜe wszystkim zainteresowanym zaliczyć materiał z Accessa i relacyjnych baz danych, ale
takŜe zachęci do własnych eksperymentów.
Strona 50 z 52
10. Analiza kodu VBA z rozdziału 9.
Linia kodu
Option Compare Database
Option Explicit
Private Sub Wyszukaj_rekordy_Click()
Wyjaśnienie
Dim str As String
str = ""
Select Case Lista_Cech_Planet.Value
Case "Masa"
str = "[Masa] " & Me.Lista_operatow.Value &
Me.Wartosc.Value
Case "Średnia odległość"
str = "[Srednia_odleglosc] " &
Me.Lista_operatow.Value & Me.Wartosc.Value
.......................
Case Else
MsgBox "coś nie tak, koniecznie sprawdz"
str = ""
End Select
If str <> "" Then
str = str & " "
str = "SELECT * FROM PLANETY WHERE " &
str
Forms![Main].RecordSource = str
End If
Opcja ta wymaga od nas definiowania zmiennych
Deklaracja i początek procedury
Wyszukaj_rekordy (private – procedura lokalna)
Deklaracja zmiennej „str” typu string
(łańcuchowego)
„wyzerowanie” zmiennej str
Początek instrukcji wyboru. Wartość
sprawdzanego wyraŜenia
(Lista_Cech_Planet.Value) pobierana jest z listy
pól „Lista cech planet”
Początek bloku dla wartości „Masa” z listy cech
Podstawienie pod zmienną str wyraŜenia.
PoniewaŜ będzie to instrukcja SQL wobec tego
nazwy pól tabeli bierzemy w nawiasy kwadratowe.
Znak & oznacza, Ŝe łączymy ze sobą ciągi znaków
(odpowiednik znaku +).
WyraŜenie Me.Lista_operatow.Value oznacza, Ŝe
pobieramy z wartość z listy pól „Lista
operatorów”. WyraŜenie „Me.” oznacza, Ŝe
występująca po nim nazwa obiektu odnosi się do
bieŜącego formularza. W tym wypadku nasza
procedura będzie działała prawidłowo bez tego
wyraŜenia.
Początek bloku dla wartości „Średnia odległość” z
listy cech
j.w.
Wykonuje ten blok jeśli wybraliśmy wyraŜenie, dla
którego nie ma warunku
Wyświetlenie komunikatu
„wyzerowanie” zmiennej str
Koniec instrukcji wyboru
Początek instrukcji warunkowej – instrukcja będzie
wykonana jeŜeli zmienna str nie jest pusta
Dodanie do zmiennej str spacji
Stworzenie instrukcji SQL I podstawienie ją pod
zmienną str
Wstawienie i wykonanie instrukcji SQL dla
formularza „Main” – w nim są wyświetlane
rekordy tabeli
Koniec instrukcji warunkowej
Strona 51 z 52
Linia kodu
DoCmd.Close
Wyjaśnienie
Zamknięcie okna formularza
Exit_Wyszukaj_rekordy_Click:
Exit Sub
Zdefiniowanie sposobu zakończenia procedury –
wyjście
End Sub
Koniec procedury
Strona 52 z 52

Podobne dokumenty