34
BAZY DANYCH I SYSTEMY BAZ DANYCH
PRZYKŁAD 9.1
Definicja wymaga przykładu, którym będzie analiza relacji R.
Tabela 9.1. Lista uczniów (1)
A |
B |
1 |
Baran Maciej |
2 |
Czapla Dominika |
3 |
Gołąbek Marzena |
4 |
Kowal Zdzisław |
Tabela 9.2. Lista uczniów (2)
D |
B . |
i |
Baran Maciej |
2 |
Czapla Dominika |
3 |
Czapla Dominika |
4 |
Gołąbek Marzena |
5 |
Kowal Zdzisław |
Tabela 9.1 może być przykładem fragmentu dziennika szkolnego. Atrybut (kolumna) A przechowuje wartości, które są porządkowym numerem ucznia w dzienniku. Atrybut B przechowuje imiona i nazwiska uczniów (podobnie jak szkolny dziennik). Każda kolejna wartość atrybutu B identyfikuje inną osobę. Celem naszych działań jest odpowiedź na pytanie: czy atrybut A jest funkcjonalnie zależny od B, czy może jest odwrotnie? Jak łatwo zauważyć, w przykładzie wyznaczenie zależności funkcyjnej jest dość trudne. Dysponując tabelą 9.1, trudno określić, czy atrybut A (numery uczniów) funkcyjnie zależy od atrybutu B (imion i nazwisk). Aby wyznaczyć zależność funkcyjną, należy przeanalizować podany przykład, a zwłaszcza wszystkie możliwości, które mogą mieć miejsce nie tylko w danym dniu (w którym rozpatrujemy podany fragment dziennika), lecz także w przyszłym roku. Możemy wówczas dojść do wniosku, że zawartość atrybutów A i B może ulec zmianom. Może się zdarzyć, że dwie osoby będą mieć takie same imiona i nazwiska. Mimo że jest to mało prawdopodobne w obrębie jednej klasy, istnieje taka możliwość. Przykład omawianej relacji przedstawia tabela 9.2. Ponieważ fizycznie mamy do czynienia z dwiema różnymi osobami mającymi takie samo nazwisko i imię, łatwo spostrzec, że identyfikacja osób w klasie jest zależna od numeru ucznia, a nie imienia i nazwiska. W tabeli 9.2 dla jednej wartości atrybutu B (Czapla Dominika) wystąpi kilka różnych wartości A (numer 2 i 3). Dlatego też numer w dzienniku (kolumna A) jest wyznacznikiem ucznia, tzn. atrybut B jest funkcyjnie zależny od A.
Rys. 9.1. Wyznaczanie zależności funkcyjnych między zbiorami
Ponieważ B jest funkcyjnie zależne od A, zaznaczamy to, umieszczając wyznacznik po lewej stronie strzałki__