Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2010 mgr
Jerzy Wałaszek |
Bazy danych tworzone w aplikacjach MS-Word i MS-Excel są bardzo proste i nie nadają się zbyt dobrze do przechowywania dużej ilości różnorodnych danych. Profesjonalnym rozwiązaniem są relacyjne bazy danych. W bazie relacyjnej dane przechowujemy nie w jednej, lecz w kilku tabelach. Następnie tabele te łączy się ze sobą za pomocą relacji, czyli związków logicznych. Chodzi tutaj głównie o unikanie wielokrotnego umieszczania tych samych danych. Jeśli informacja musi się powtarzać, to istnieje ryzyko popełnienia błędów (np. literówek) przy jej wielokrotnym wprowadzaniu. Później są duże kłopoty przy wyszukiwaniu danych, ponieważ rekordy zawierające błędy mogą być pomijane. Jeśli dane są umieszczane tylko raz, zajmują mniej cennej pamięci.
Jak to działa? Załóżmy, że tworzymy bazę danych klientów pewnej firmy. W bazie danych musimy przechowywać:
Imię i nazwisko klienta, numer telefonu, miasto, wykonywany zawód.
Załóżmy, że umieścimy te dane w jednej tabeli:
Nazwisko | Imię | Telefon | Miasto | Zawód |
Kowalski | Jan | 12673452 | Kraków | kierowca |
Klich | Zbigniew | 66589123 | Warszawa | portier |
Marchewka | Edyta | 70145278 | Kraków | nauczyciel |
Siwak | Judyta | 70588821 | Rzeszów | nauczyciel |
... | ... | ... | ... | ... |
Zwróć uwagę, że pola Miasto oraz Zawód mogą się powtarzać (imiona też). Umieszczenie tych danych w jednej tabeli powoduje wzrost objętości bazy danych oraz zwiększa możliwość popełnienia pomyłki przy ich wprowadzaniu (Kraków → Krakow → kraków → krakow itp.). Dane powtarzające się umieśćmy w osobnych tabelach i połączmy je relacjami:
W pierwszej tabeli pole Miasto kojarzymy z tabelą miasto, a pole Zawód z tabelą Zawód. W polach tych przechowujemy numery rekordów z odpowiednich tabel. Np. w polu Miasto liczba 1 odnosi się do pierwszego rekordu tabeli Miasto, w którym jest zapisana informacja: Kraków. Wiele rekordów z pierwszej tabeli może się odwoływać do jednego rekordu z tabel Miasto i Zawód - informacja nie jest powtarzana. Rozmiar bazy danych zmniejszył się. Ponieważ informację wprowadzamy tylko raz, to zmniejszamy możliwość popełnienia pomyłek. Co więcej, rozbudowując bazę danych, tabele te możemy skojarzyć z innymi tabelami, tworząc całą sieć relacji.
Projektując bazę danych, musimy się bardzo dokładnie zastanowić, jakie dane chcemy w niej przechowywać oraz które z nich należy umieścić w osobnych tabelach. Załóżmy, że chcemy stworzyć bazę danych rodzin mieszkających w różnych miastach. W bazie będą umieszczane następujące informacje:
Nazwisko i imię ojca
Zawód ojca
Nazwisko panieńskie matki i jej imię
Zawód matki
Miasto
Telefon
Dla każdego dziecka:
Imię dziecka
Płeć
Rok urodzenia
Nazwa szkoły
Ponieważ wiele dzieci może posiadać tych samych rodziców, to dzieci i rodzice powinny być przechowywane w osobnych tabelach połączonych relacjami. Idąc dalej, w osobnych tabelach możemy umieścić zawody, miasta, nazwy szkół. Otrzymujemy następujący układ relacji (w nagłówku umieszczamy nazwę tabeli, a poniżej pola jej rekordów, pole Id jest numerem rekordu) :
Miasta |
Id |
Miasto |
Zawody |
Id |
Zawód |
Szkoły |
Id |
Szkoła |
Rodzice |
Id |
Nazwisko_ojca |
Imię_ojca |
Zawód_ojca → rekord w tabeli Zawody |
Nazwisko_matki |
Imię_matki |
Zawód_matki → rekord w tabeli Zawody |
Miasto → rekord w tabeli Miasta |
Telefon |
Dzieci |
Id |
Imię_dziecka |
Płeć |
Rok_urodzenia |
Szkoła → rekord w tabeli Szkoły |
Rodzice → rekord w tabeli Rodzice |
Uruchamiamy aplikację MS-Access 2003.
Musimy utworzyć nową bazę danych. Zadanie to można zrealizować na kilka różnych sposobów:
Z menu wybierz opcję Plik / Nowy...
Na pasku narzędziowym u góry ekranu kliknij ikonę Nowy:
Wciśnij kombinację klawiszy Ctrl+N
Z panelu Wprowadzenie wybierz ostatnią opcję: Utwórz nowy plik...
Panel Wprowadzenie zostanie zastąpiony panelem Nowy plik:
W panelu tym wybierasz opcję Pusta baza danych... Pojawi się okno zapisu na dysk - każda baza danych utworzona w MS-Access jest zawsze przechowywana na dysku, dlatego nową bazę danych musisz najpierw zapisać na dysk, zanim będziesz mógł z nią pracować. Wybierz zatem jakąś nazwę dla tej bazy, np. Rodziny, i kliknij przycisk Utwórz. Na obszarze roboczym pojawi się okno nawigacyjne bazy danych:
Okno nawigacyjne pozwala wybierać i tworzyć różne elementy składowe bazy danych:
Tabele przechowują informację w bazie danych.
Kwerendy pozwalają wyszukiwać informacje w bazie danych. Ich wynikiem są również tabele.
Formularze umożliwiają wygodne wprowadzanie danych do tabel.
Raporty dają możliwość wydrukowania tabel oraz wyników kwerend.
Strony udostępniają bazę danych użytkownikom w sieci Internet lub w sieci lokalnej
Makra pozwalają zautomatyzować często powtarzane czynności w bazie danych.
Moduły to programy w języku Visual Basic for Application. Dzięki nim tworzymy dowolną aplikację bazy danych.
Najpierw utworzymy tabelę Miasta. Wybierz obiekt Tabele i uruchom opcję Utwórz tabelę w widoku projektu. Na ekranie pojawi się okno dialogowe, w którym będziesz mógł zdefiniować wszystkie pola danych rekordu w tabeli:
Pierwsze pole nazwij Id, a za typ danych przyjmij Autonumerowanie - MS-Access będzie wtedy automatycznie wstawiał w to pole coraz większe wartości.
Pole Id służy do identyfikacji rekordu. Uczynimy je polem klucza podstawowego. W tym celu kliknij ikonę klucza na pasku narzędziowym:
Kluczyk powinien pojawić się obok nazwy pola:
Przechodzimy do następnego wiersza i tworzymy pole Miasto, typ Tekst:
Zwróć również uwagę na własności pól, które są dostępne na spodzie okna - np. rozmiar pola określa liczbę znaków, z których będzie się mogła składać nazwa miasta. Definicja pól dla rekordów tabeli Miasta jest skończona. Przełącz się na widok tabeli, klikając w ikonę paska narzędziowego.
Okienko zmieni swoją zawartość na tabelę:
Przejdź do kolumny miasto i wpisz kilka miast:
Przy wprowadzaniu danych do tabeli możesz również skorzystać z autoformularza. W tym celu kliknij na pasku narzędziowym ikonę:
Spowoduje to wyświetlenie okna dialogowego, w którym znajdą się pola tekstowe do wprowadzania danych do rekordu:
Na spodzie znajdują się przyciski nawigacyjne, które umożliwiają poruszanie się pomiędzy rekordami tabeli. Przycisk z gwiazdką tworzy nowy, pusty rekord (można również naciskać klawisz Enter). Wykorzystując ten formularz dopisz do tabeli kilka dalszych miast. Gdy skończysz wprowadzanie miast, zamknij okienko. MS-Access zapyta cię, czy chcesz zapisać sobie ten formularz - zapisz go pod nazwą Miasta. Formularz zostanie wstawiony do obiektów: Formularze - dostęp z poziomu okna nawigacyjnego. Zamknij również okno tabeli. Tabelę nazwij Miasta - w oknie nawigacyjnym kliknij tabelę prawym przyciskiem, z menu wybierz opcję Zmień nazwę i wpisz nazwę Miasta (tabelę możesz również zapisać z poziomu okienka projektu, klikając w ikonę dyskietki na pasku narzędziowym lub naciskając klawisze Ctrl+S).
W podobny sposób utwórz tabele Zawody i Szkoły:
W obu tabelach umieść dane - posłuż się autoformularzami:
Tabela Rodzice jest nieco bardziej skomplikowana, ponieważ dwa pola będą się odwoływać do rekordów tabel Miasta i Zawody. Otwórz okno projektu i zdefiniuj początkowe pola:
Wprowadź kolejne pole: Zawód_ojca. Jako typ danych wybierz: Kreator odnośników:
Zostanie uruchomiony kreator odnosników.
W pierwszym oknie wybrana jest dobra opcja - w tym polu mają się znaleźć dane pobrane z innej tabeli. Klikasz zatem przycisk Dalej.
Teraz musisz wybrać tabelę, z której pole będzie pobierało dane - Zawody. Klikasz przycisk Dalej.
Przenieś do prawego okienka pole Zawód - to pole z rekordów tabeli Zawody stanie się polem Zawód_ojca w rekordach tabeli Rodzice. Kliknij Dalej.
Tutaj możesz określić sposób sortowania listy, z której będziesz wybierał zawody. W pierwszym polu wybierz pole Zawód - spowoduje to alfabetyczne posortowanie zawodów. Kliknij Dalej.
W tym okienku kreatora odnośników możesz ustawić sobie odpowiednią szerokość listy zawodów - zwróć uwagę, że są one posortowane alfabetycznie. Kliknij Zakończ, po czym zapisz tabelę Rodzice. Typem pola Zawód_ojca jest liczba - pole to nie przechowuje nazw zawodów, lecz numery rekordów z tabeli Zawody. Dokończ definiowanie pól. Dla pola Zawód_matki powtórz identyczną procedurę dodania odnośnika jak dla pola Zawód_ojca. Dla pola Miasto dodaj odnośnik do tabeli Miasta, a jako pole wstawiane wybierz w tej tabeli pole Miasto. Pole Telefon zdefiniuj jako tekstowe.
Przejdź do widoku tabeli, uruchom autoformularz i wpisz kilkanaście rekordów:
Zwróć uwagę, iż w polach Zawód_ojca, Zawód_matki i Miasto są strzałki, które rozwijają listę wartości z odpowiednich tabel. Wartość pola możemy wybrać z listy lub wpisać z klawiatury - po kilku literach MS-Access stara się dopasować odpowiedni element listy. Nie można wprowadzić wartości, której nie ma na liście - eliminuje to możliwość powstania literówek. Co zrobić, jeśli na liście brak pożądanej wartości? Wystarczy dopisać ją w odpowiedniej tabeli, z której pole pobiera wartości.
Pozostała nam ostatnia tabela - Dzieci. Utwórz ją w widoku projektu:
Nazwa pola | Typ | Własności |
Id | Autonumerowanie | Pole klucza podstawowego |
Imię_dziecka | Tekst | Rozmiar pola: 50 |
Płeć | Tekst | Rozmiar pola: 1 |
Rok_urodzenia | Liczba | Rozmiar pola: Liczba całkowita |
Szkoła | Liczba | Odnośnik do tabeli Szkoły, pole Szkoła, sortowanie listy wg pola Szkoła |
Rodzice | Liczba | Odnośnik do tabeli Rodzice, pola Nazwisko_ojca, Imię_ojca, Imię_matki, sortowanie listy wg wybranych pól |
Przełącz się na widok tabeli i wprowadź za pomocą autoformularza kilkanaście rekordów. W polu płeć wpisujemy s - syn lub c - córka.
Dane są wprowadzone do bazy danych. W okienku nawigacyjnym powinieneś mieć następującą zawartość:
Aby zobaczyć relację w bazie danych, kliknij na pasku narzędziowym ikonę:
Ukaże się okienko z tabelami oraz relacjami pomiędzy nimi:
Proste wyszukiwanie możemy przeprowadzać w tabelach za pomocą filtru. Załóżmy, że mamy wyszukać wszystkich ojców informatyków. Otwieramy tabelę Rodzice. Ustawiamy kursor w kolumnie Zawód_ojca i szukamy pierwszego informatyka. Ustawiamy kursor na tym wpisie.
Następnie na pasku narzędziowym klikamy ikonę filtru:
W tabeli zostaną pokazane rekordy, w których pole Zawód_ojca ma wartość Informatyk:
Filtr możemy stosować wielokrotnie dla różnych pól rekordów. Filtr usuwamy, klikając na pasku narzędziowym w ikonę:
Jeśli chcemy wyszukiwać informację rozproszoną po różnych tabelach, musimy stosować kwerendy, czyli zapytania. Załóżmy, że chcemy wyszukać w bazie danych nazwiska i imiona dzieci mieszkających w Tarnowie (lub w dowolnym innym mieście). W okienku nawigacyjnym wybieramy obiekt: Kwerendy:
Wybierz opcję Nowy.
W okienku dialogowym zaznacz opcję Kreator prostych kwerend i kliknij przycisk OK.
W tym okienku wybierasz tabele, z których mają być pobierane dane i przenosisz do prawego okienka pożądane pola. W naszym przypadku wybieramy:
Z tabeli Rodzice: | pole Nazwisko_ojca |
Z tabeli Dzieci: | pole Imię_dziecka |
Z tabeli Miasta: | pole Miasto |
Kliknij Zakończ. Kwerenda zostaje uruchomiona i otrzymujemy nową tabelę, w której są trzy kolumny zgodnie z wybranymi wcześniej polami z tabel:
Na pasku narzędziowym klikamy ikonę projektu kwerendy:
Widok tabeli kwerendy zostanie zastąpiony okienkiem projektowym.
W kolumnie Miasto, w wierszu Kryteria wpisujemy nazwę pożądanego miasta - u nas jest to "Tarnów". Możesz tutaj również określić pole, wg którego będą sortowane rekordy w tabeli wynikowej. U nas jest to Nazwisko_ojca oraz Imię_dziecka. Taka kwerenda wyszuka w bazie danych tylko te rekordy, które pasują do wybranego kryterium. Ze znalezionych rekordów kwerenda utworzy tabelę wynikową. Aby uruchomić kwerendę, kliknij na pasku narzędziowym ikonę:
U nas wynik jest następujący:
Zapisz kwerendę pod nazwą Dzieci wg miasta.
W ramach ćwiczeń wyszukaj w bazie danych:
Nazwiska i imiona dziewczynek, których matki posiadają określony zawód.
Nazwiska i imiona ojców i matek dzieci, które uczęszczają do danej szkoły podstawowej nr 3 w swoich miastach.
Nazwiska i imiona dzieci urodzonych po zadanym roku (kryterium: > rok).
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe