Konkretny przykład relacji z wykorzystaniem postaci normalnej:
Mamy 100 pracowników, przy czym pracują oni w 10 różnych firmach. Bez wykorzystania relacji można by utworzyć tabelę postaci:
pracownik_id, pracownik_imie, ..., pracownik_firma
W takim przypadku występuje nadmiarowość danych. Każda dziesiątka pracowników ma wpisaną tą samą firmę.
Korzystając z relacji możemy znormalizować dane do dwóch tabel:
**FIRMY: firma_id, firma_nazwa, ...
PRACOWNICY: pracownik_id, firma_id, pracownik_imie, ...
**
Nadmiarowość danych znika, ponadto dzięki relacjom można łatwo znaleźć wszystkich pracowników danej firmy.
Możemy pójść o krok dalej i założyć, że pracownik może pracować w większej ilości firm. Należałoby w takim przypadku dodać trzecią tabelę opisującą relację pomiędzy pracownikami, a firmami:
PRACOWNICY_FIRMY: pracownik_id, firma_id
Równocześnie można zrezygnować z pola firma_id w tabeli pracowników.
Efekt - mamy dwustronną relację (wiele do wielu), brak szans na nadmiarowość danych, zerowy poziom skomplikowania struktury tabel.
Gdyby z relacji nie korzystać wyobraź sobie jak szeroka (ilość kolumn) musiałaby być tabela firm, żeby pomieścić wszystkich pracowników.
Ponadto byłby problem ze zrywaniem takich relacji - które pole wyzerować w tabeli firm, żeby usunąć danego pracownika?
Mam nadzieję, że rozjaśniłem trochę temat.