Relacyjna baza danych - MS-Access 2003

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:

 

obrazek

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.

 


 

Projekt bazy danych

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.

 

obrazek

 

Musimy utworzyć nową bazę danych. Zadanie to można zrealizować na kilka różnych sposobów:

Panel Wprowadzenie zostanie zastąpiony panelem Nowy plik:

 

obrazek

 

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:

 

obrazek

 

Okno nawigacyjne pozwala wybierać i tworzyć różne elementy składowe 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:

 

obrazek

 

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.

 

obrazek

 

Pole Id służy do identyfikacji rekordu. Uczynimy je polem klucza podstawowego. W tym celu kliknij ikonę klucza na pasku narzędziowym:

 

obrazek

 

Kluczyk powinien pojawić się obok nazwy pola:

 

obrazek

 

Przechodzimy do następnego wiersza i tworzymy pole Miasto, typ Tekst:

 

obrazek

 

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.

 

obrazek

 

Okienko zmieni swoją zawartość na tabelę:

 

obrazek

 

Przejdź do kolumny miasto i wpisz kilka miast:

 

obrazek

 

Przy wprowadzaniu danych do tabeli możesz również skorzystać z autoformularza. W tym celu kliknij na pasku narzędziowym ikonę:

 

obrazek

 

Spowoduje to wyświetlenie okna dialogowego, w którym znajdą się pola tekstowe do wprowadzania danych do rekordu:

 

obrazek

 

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:

 

obrazek           obrazek

 

W obu tabelach umieść dane - posłuż się autoformularzami:

 

obrazek           obrazek

 

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:

 

obrazek

 

Wprowadź kolejne pole: Zawód_ojca. Jako typ danych wybierz: Kreator odnośników:

 

obrazek

 

Zostanie uruchomiony kreator odnosników.

 

obrazek

 

W pierwszym oknie wybrana jest dobra opcja - w tym polu mają się znaleźć dane pobrane z innej tabeli. Klikasz zatem przycisk Dalej.

 

obrazek

 

Teraz musisz wybrać tabelę, z której pole będzie pobierało dane - Zawody. Klikasz przycisk Dalej.

 

obrazek

 

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.

 

obrazek

 

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.

 

obrazek

 

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.

 

obrazek

 

Przejdź do widoku tabeli, uruchom autoformularz i wpisz kilkanaście rekordów:

 

obrazek

 

obrazek

 

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:

 

obrazek

 

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.

 

obrazek

 

Dane są wprowadzone do bazy danych. W okienku nawigacyjnym powinieneś mieć następującą zawartość:

 

obrazek

 

Aby zobaczyć relację w bazie danych, kliknij na pasku narzędziowym ikonę:

 

obrazek

 

Ukaże się okienko z tabelami oraz relacjami pomiędzy nimi:

 

obrazek

 


 

Wyszukiwanie informacji w bazie danych

 

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.

 

obrazek

 

Następnie na pasku narzędziowym klikamy ikonę filtru:

 

obrazek

 

W tabeli zostaną pokazane rekordy, w których pole Zawód_ojca ma wartość Informatyk:

 

obrazek

 

Filtr możemy stosować wielokrotnie dla różnych pól rekordów. Filtr usuwamy, klikając na pasku narzędziowym w ikonę:

 

obrazek

 

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:

 

obrazek

 

Wybierz opcję Nowy.

 

obrazek

 

W okienku dialogowym zaznacz opcję Kreator prostych kwerend i kliknij przycisk OK.

 

obrazek

 

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:

 

obrazek

 

Na pasku narzędziowym klikamy ikonę projektu kwerendy:

 

obrazek

 

Widok tabeli kwerendy zostanie zastąpiony okienkiem projektowym.

 

obrazek

 

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ę:

 

obrazek

 

U nas wynik jest następujący:

 

obrazek

 

Zapisz kwerendę pod nazwą Dzieci wg miasta.

 

W ramach ćwiczeń wyszukaj w bazie danych:

  1. Nazwiska i imiona dziewczynek, których matki posiadają określony zawód.

  2. Nazwiska i imiona ojców i matek dzieci, które uczęszczają do danej szkoły podstawowej nr 3 w swoich miastach.

  3. Nazwiska i imiona dzieci urodzonych po zadanym roku (kryterium: > rok).

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2024 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

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