Excel -dodatkowe zadania.
Bazy danych - MS Access.
Literatura.
- Ullman, Widom, "Podstawowy wykład z systemów baz danych", WNT
- Cassel, Eddy, Price, "Access 2002/XP PL dla każdego", Helion
Czym jest baza danych.
Czym "aplikacja z baza danych" różni się od zwykłej aplikacji ?
w aplikacjach z bazą danych przechowuje się bardzo duże ilości
danych (nie mieszczące się w pamięci operacyjnej).
Dane --> informacje
baza danych przechowuje dane i pozwala je zamieniać na informacje
-
dane = fakty
-
informacje = przetworzone i pogrupowane dane, przedstawione w postaci
pozwalającej podejmować decyzje i wyciągać wnioski;
przykład 1:
tabela WizytyWSklepie - to są fakty ...
| data |
godzina |
pogoda |
kwota_zakupu |
| 1/10/2003 |
10:00 |
dobra |
15zł |
| 1/10/2003 |
10:15 |
b dobra |
5zł |
| 1/10/2003 |
11:20 |
zła |
100zł |
| 1/10/2003 |
15:00 |
zła |
200zł |
| 2/10/2003 |
14:35 |
dobra |
6zł |
| ..... |
|
|
|
| ..... |
|
|
|
a
to są informacje ...
| pogoda |
kwota_zakupu |
| dobra |
21zł |
| b dobra |
5zł |
| zła |
300zł |
przykład 2:
w przychodni lekarskiej gromadzi się dane o pacjentach w postaci tabeli:
WizytyPacjentów (nazwisko i imię, pesel, data, kod schorzenia)
potem można zażądać utworzenia takiej tabelki:
| kod schorzenia |
1995 |
1996 |
1997 |
1998 |
1999 |
... |
... |
... |
| C10 |
1000 |
1300 |
|
|
|
|
|
|
| N98 |
3023 |
4567 |
|
|
|
|
|
|
| N78 |
20 |
35 |
|
|
|
|
|
|
| ... |
|
|
|
|
|
|
|
|
Model relacyjny baz danych.
Podstawowe pojęcia.
| Dane przechowuje się w tabelach ... |
- tabela (=relacja; stąd "relacyjne bazy danych" !)
- pola (=atrybuty, =kolumny tabeli)
- posiadają nazwy i typy
- liczba pól, ich nazwy i typy są stałe
- przykłady typów: tekstowe zmiennej i stałej długości, numeryczne stało i
zmienno pozycyjne, data, czas, data+czas, logiczne, waluta, memo, BLOB/ obiekt
OLE, autonumerowanie
- zbiór atrybutów relacji nazywamy schematem formalnym relacji
- rekordy (=krotki, =wiersze tabeli)
- w tabeli nie może być 2 identycznych rekordów
- liczba rekordów jest zmienna
| data |
godzina |
pogoda |
kwota_zakupu |
| 1/10/2003 |
10:00 |
dobra |
15zł |
| 1/10/2003 |
10:15 |
b dobra |
5zł |
| 1/10/2003 |
11:20 |
zła |
100zł |
| 1/10/2003 |
15:00 |
zła |
200zł |
| 2/10/2003 |
14:35 |
dobra |
6zł |
| ..... |
|
|
|
| ..... |
|
|
|
- klucze (keys)
- pole lub kilka pól które jednoznacznie wyznaczają rekord tabeli
- klucz podstawowy (primary key) - jeden z kluczy
- "klucz obcy" (foreign key) - pole które jest kluczem podstawowym w innej tabeli (w ten
sposób realizuje się związki między tabelami !)
- algebra relacji - na relacjach można wykonywać operacje:
- operacje "teoriomnogościowe" (suma, przekrój, różnica; relacje muszą
mieć ten sam zbiór atrybutów)
- selekcja - wybór wierszy
- rzutowanie - wybór kolumn
- złączenie - iloczyn kartezjański 2 tabel, z którego wybiera się wiersze
spełniające pewien warunek
- złączenie naturalne - warunek polega na tym że pola o tych samych
nazwach w obu tabelach muszą mieć identyczne wartości
- złączenie "teta" - warunek jest dowolny
- składając powyższe operacje na relacjach można uzyskać rożne informacje;
np mógłbym zażądać informacji o nazwach klientów, ich adresach i towarach
zamówionych po 2/10/2003
przykład złączenia naturalnego:
tabela Klienci:
| nazwa |
adres |
id klienta |
| Jan Kowalski1 |
qqq1 |
1 |
| Jan Kowalski2 |
qqq2 |
2 |
(tutaj [id klienta] jest kluczem)
tabela Zamowienia:
| towar |
ilosc |
data |
id klienta |
| masło |
5 |
1/10/2003 |
1 |
| chleb |
15 |
2/10/2003 |
2 |
| wino |
3 |
10/10/2003 |
1 |
(tutaj kluczem może być data i [id klienta], przy założeniu że każdy klient
może złożyć co najwyżej 1 zamówienie w każdym dniu; samo [id klienta] jest
"kluczem obcym")
złączenie naturalne tabel Klienci i Zamówienia:
| nazwa |
adres |
id klienta |
towar |
ilosc |
data |
| Jan Kowalski1 |
qqq1 |
1 |
masło |
5 |
1/10/2003 |
| Jan Kowalski1 |
qqq1 |
1 |
wino |
3 |
10/10/2003 |
| Jan Kowalski2 |
qqq2 |
2 |
chleb |
15 |
2/10/2003 |
- indeksy
- służą do przyspieszania dostępu do tabel
- oparte na kolumnach lub ich zbiorach (!)
- transakcje
- w ramach transakcji można wykonać niepodzielną grupę operacji na danych
(albo wszystkie operacje się udadzą albo żadna - na tym polega niepodzielność)
- więzy
- klucze (key) - to jest najważniejszy rodzaj "więzu" !
- więzy jednoznaczności (single-value constraints) - nie może być 2 encji z
taką samą wartością danego atrybutu
- więzy integralności referencyjnej (referential integrity constraints) - np
dla każdego Zamówienia musi istnieć Klient
- więzy domenowe (domain constraints) - wartość atrybutu musi należeć do
pewnego zbioru (domeny)
- więzy zasadnicze (general constraints) - dowolny warunek który musi być
spełniony
- UWAGA: więzy są (mogą) być "wbudowane w tabele" podczas ich definiowania !
Program MS Access.
Klasy obiektów.

- tabele
- klasa ta
zawiera tabele (=relacje)
- dla każdej tabeli definiuje się pola (ich nazwy i typy)
- można też zdefiniować podstawowe więzy; np dziedziny pól, klucz,
więzy jednoznaczności, można także zdefiniować indeksy (jedno i wielo polowe)
- formularze
- ułatwiają wprowadzanie/oglądanie/modyfikowanie danych;
- Uwaga: formularz jest zawsze
oparty na jednej tabeli lub kwerendzie !
- formularz zawiera kontrolki które są powiązane z polami tabeli na której
formularz jest oparty i pokazują wartości pól bieżącego rekordu tej tabeli
Zadanie 70
(Budujemy "magazynową" bazę danych ...)
- zdefiniuj w Accesie tabele:
- Zamowienia
- Klienci
- Towary
wzorując się na poniższym obrazku
- zauważ że każda tabela ma pole którego nazwa zaczyna się od [id ...]; pole
to jest typu Autonumerowanie (przy tworzeniu nowych rekordów ma automatycznie
przypisywane kolejne liczby); oczywiście pole takie zawsze może być kluczem
...
- zauważ że na każdym zamówieniu jest jeden towar i jeden klient, dlatego
tabela Zamówienia posiada pola [id towaru] i [id klienta]
- wprowadź do tabel dane wzorując się na poniższym rysunku
- zdefiniować więzy integralności referencyjnej między tabelami
Towary-Zamówienia i Klienci-Zamówienia;
w tym celu:
- otworzyć okienko "Relacje"
- połączyć pary pól złączające tabele
- włączyć opcję "Wymuszaj więzy integralności" oraz "Kaskadowo aktualizuj
..." i "Kaskadowo usuń ..."
- spróbuj złamać więzy integralności referencyjnej; w tym celu spróbuj dodać
zamówienie z prawidłowym [id towaru] ale z nieistniejącym [id klienta]
- wypróbuj działanie kaskadowego usuwania rekordów !; w tym celu usuń
pewnego klienta i zaobserwuj czy wszystkie jego zamówienia automatycznie
znikną

Zadanie 71
(Prosty formularz do wprowadzania danych)
Utwórz prosty formularz do wprowadzania towarów (przy pomocy kreatora !).
Uwaga: będą widoczne techniczne pole
(np id klienta), ale na tym etapie jest to przydatne ...
Spróbuj przełączać się między widokiem "Formularz" i "Arkusz danych"
(guzik na pasku).
Przełącz się do trybu projektowania i spróbuj trochę zmodyfikować wygląd
formularza.
Zadanie 72 (trudne)
(Formularze do wprowadzania klientów i ich zamówień)
Chodzi o formularz do wprowadzania klientów, zawierający
podformularz do wprowadzania zamówień dla tych klientów. Ponadto towary
mają być wybierane z pola kombi (rodzaj menu z suwakiem); pole
kombi czerpie dane z tabeli Towary !.
Wskazówki do zadania 72:
Jak utworzyć podformularz do wprowadzania zamówień danego klienta
* podformularz należy przygotować osobno i przenieść go myszą na formularz
klienta (oczywiście w trybie projektowania formularza);
* w trybie projektowania formularza klientów (!) wybrać okienko podformularza
tak aby w oknie Właściwości pojawił się napis "Podformularz/Podraport ...",
następnie ustawić:
"Podrzędne pole łączące" = id klienta
"Nadrzędne pole łączące" = id klienta
* zeby dopasowac rozmiar kontrolki podformularz do rozmiaru podformularza uzyj
menu kontekstowe | Rozmiar | Dopasuj.
* jak przelaczać widok (Formularz / Arkusz danych) w podformularzu ? Użyj menu
Widok | Arkusz danych podformularza)
Jak utworzyc pole kombi wybierajace dane z tabeli ?
* jeszcze raz co chcemy osiągnąć ? "id towaru" w tabeli Zamowienia ma byc
wypelniany na podstawie nazwy towaru z tabeli Towary, wybranej z menu kontrolki
kombi
* należy dodać kontrolkę kombi do podformularza (w trybie projektowania
oczywiście, z przybornika)
* ustawić we Właściwościach kontrolki kombi:
Zrodlo formantu = id towaru
Typ źródła wierszy = Tabela/Kwerenda
Kolumna związana = 3
Liczba kolumn = 3
Szerokości kolumn = ;0cm;0cm