opracowanie: mgr inż. Adam Czarnecki, mgr inż. Tomasz Sitek, mgr inż. Artur Ziółkowski
lab03 (A2007)
1
RELACYJNE BAZY DANYCH
laboratorium 3 – relacje, normalizacja
Wstęp
Znajomość reguł projektowania tabel nie jest wystarczająca, by zbudować z nich
poprawną i wydajną bazę danych. Konieczna jest umiejętność projektowania
relacji między tabelami. Relacje pozwalają powiązać w taki sposób tabele, by móc łatwo
uzyskiwać dane na konkretny temat, nawet jeśli te dane „rozrzucone” są w większej ilości tabel.
Istotne jest także, aby tak projektować dane, by unikać ich niepotrzebnego powtarzania. Taki
nadmiar danych nazywa się redundancją i prowadzi w pewnej perspektywie czasowej do
trudności z zarządzaniem nimi. Ma to także mierzalny skutek – baza danych zawierająca
zdublowane wpisy zajmuje więcej miejsca i jest wolniejsza. Stąd jeszcze przed wprowadzeniem
jakichkolwiek danych tabele muszą zostać poddane takiemu procesowi. Nazywa się to
normalizacją tabel.
We wstępie do poprzedniego ćwiczenia określone zostały kroki prowadzące do zaprojektowania
zestawu tabel w bazie danych. Na tym etapie można dopisać kolejne punkty:
- ustalenie relacji między tabelami,
- analiza tabel pod kątem powtarzalności (redundancji) danych,
- wyodrębnienie powtarzających się danych i stworzenie osobnych tabel (tzw. słownikowych),
- stworzenie relacji między tabelą główną a tabelami słownikowymi.
Ćwiczenie 1
1.
Otwórz tabelę CZYTELNIK w swojej bazie danych w widoku arkusza danych
2.
Przeanalizuj ja pod kątem powtarzanych danych. Przykładowe dane, które się powtarzają,
pokazano poniżej
Co by się stało gdyby Wydział Zarządzania Ekonomii zmienił nazwę, a co za tym idzie, skrót
ZIE? Co trzeba by zrobić, chcąc zachować poprawność danych?
3.
Stwórz tabelę o nazwie WYDZIAL według wytycznych jak niżej:
Klucz
Nazwa
Typ danych
Rozmiar
Atrybuty
ID
Autonumer
Akronim
Tekst
3
wymagane: tak
Wydzial
Tekst
50
wymagane: tak
Wprowadź w widoku arkusza danych tej tabeli znane Ci wydziały Politechniki Gdańskiej. W polu
Akronim użyj takich trzyliterowych skrótów, jakie występują w tabeli CZYTELNIK. Zauważ, że
każdy wydział otrzymał w polu ID swój unikatowy numer. Jest pole-klucz.
opracowanie: mgr inż. Adam Czarnecki, mgr inż. Tomasz Sitek, mgr inż. Artur Ziółkowski
lab03 (A2007)
2
Czy można było użyć pola Akronim do tego celu? Kiedy można by było tak zrobić, a kiedy nie?
4.
Otwórz tabelę CZYTELNIK i zamień wartości w polu Wydzial na odpowiednią dla danego
wydziału wartość ID nadaną w nowo stworzonej tabeli. W kroku drugim zmień typ danych
ustawiony na tym polu z Tekst na Liczba (całkowita).
Jeśli taka zamiana danych nie jest możliwa w sposób ręczny (edytując kolejne rekordy),
można użyć opcji Znajdowania i Zamieniania (skrót klawiaturowy: CTRL-H).
Uwaga! Cofnięcie takiej operacji zamiany nie będzie możliwe, więc zalecane jest w takich
przypadkach stworzenie kopii bazy danych.
Co by się stało, gdyby te operacje zostały przeprowadzone w odwrotnej kolejności – tzn.
najpierw konwersja danych tekst->liczba, a potem edycja danych w arkuszu?
5.
Stwórz tabelę o nazwie OSOBA_STATUS według wytycznych jak niżej:
Klucz
Nazwa
Typ danych
Rozmiar
Atrybuty
ID
Autonumer
Status
Tekst
10
wymagane: tak
Wprowadź w widoku arkusza danych tej tabeli dwa rekordy – jeden dotyczący studenta, drugi –
pracownika.
Analogicznie jak w punkcie poprzednim, zamień w tabeli CZYTELNIK wartości tekstowe na Liczby
odpowiadające ID z tabeli OSOBA_STATUS.
Czy widzisz w tej tabeli inne dane, które można by poddać procesowi normalizacji?
6.
Otwórz tabelę FILIA. Przeanalizuj jej zawartość pod kątem normalizacji i zrób odpowiednie
poprawki. Wskazówka: jest jedno pole, które musi zostać poddane zmianom.
7.
Ustal wszystkie możliwe relacje między tabelami w swojej bazie danych. W tym celu kliknij
ikonę na pasku narzędzi:
- Dodaj swoje wszystkie tabele
opracowanie: mgr inż. Adam Czarnecki, mgr inż. Tomasz Sitek, mgr inż. Artur Ziółkowski
lab03 (A2007)
3
- Ustal wszystkie możliwe relacje między odpowiednimi polami. W tym celu przeciągnij
kursor od jednego pola do drugiego, trzymając wciśnięty lewy klawisz myszy. Access
wyświetli następujące okno:
- Włącz opcję Wymuszaj więzy integralności.
- W przypadku powiązania tabel CZYTELNIK i OSOBA_STATUS Access utworzył relację typu
jeden-do-wielu. Dlaczego? Jak to zinterpretować?
- Utwórz wszystkie pozostałe relacje (Jakiego są typu?). Możesz też, zamiast okna relacji,
skorzystać z kreatora odnośników dostępnego na liście typów danych w widoku
projektowania tabeli:
opracowanie: mgr inż. Adam Czarnecki, mgr inż. Tomasz Sitek, mgr inż. Artur Ziółkowski
lab03 (A2007)
4
8.
Stwórz nową tabelę o nazwie WYPOZYCZENIA według wytycznych jak niżej:
Klucz
Nazwa
Typ danych
Rozmiar
Atrybuty
Ksiazka_Sygnatura Liczba
całkowita długa
Czytelnik_ID
Liczba
całkowita długa
Data_wypozyczenia Data/godzina
data krótka
wartość domyślna: Date()
Data_oddania
Data/godzina
data krótka
Zauważ, że zgodnie z powyższą specyfikacją żadne pole w tabeli nie będzie mieć ustalonego
atrybutu Wymagane=TAK. Dlaczego?
9.
Otwórz ponownie widok relacji, dodaj tabelę WYPOZYCZENIA i ustal odpowiednie relacje.
Wskazówka: dla tej tabeli trzeba ustalić relacje z dwiema tabelami.
Ćwiczenie 2
Na poprzednim laboratorium ćwiczenie drugie dotyczyło samodzielnego stworzenia tabeli
MULTIMEDIA. Przyjrzyj się tej tabeli – czy jest ona zgodna z zasadami normalizacji? Jeśli nie
jest – określ potrzebne zmiany. Czy wystarczy do tego jedna tabela? Jeśli nie – stwórz
odpowiednią liczbę niezbędnych tabel (słownikowych) i ustal odpowiednie relacje.
Literatura
[1]
Cary N. Prague, Michael R. Irvin, Jennifer Reardon. Access 2003 PL. Biblia. Helion.
Gliwice, 2004, s. 165-190.
[2]
Kopertowska M. Europejski Certyfikat Umiejętności Komputerowych. Bazy Danych.
Wydawnictwo Naukowe PWN. Wydanie III zmienione. Warszawa, 2007. s. 20-21, 32, 46-50.
[3]
Kopertowska M., Sikorski W. Europejski Certyfikat Umiejętności Komputerowych.
Poziom zaawansowany. Bazy Danych. Wydawnictwo Naukowe PWN. Warszawa, 2006.
s. 36-44.
[4]
http://office.microsoft.com/pl-pl/access/HP051884441045.aspx
[5]
http://office.microsoft.com/pl-pl/access/HP051875301045.aspx
[6]
http://office.microsoft.com/pl-pl/access/HP051875241045.aspx