Chyba niezupełnie o to chodzi. Klucze obce bardziej służą ochronie integralności danych niż opisywaniu struktury logicznej.
Wiem, że niektóre bazy danych zawierają w sobie zdefiniowany zapis relacji. Tak naprawde wszystkie tabele w bazie danych jakiegoś programu są ze soba powiązane a logika tego powiązania jest w miare stała i wynika z projektu aplikacji bazodanowej. Możemy to nazwać "mapą relacji" Tak wygląda ona np w MSAcess:

Np. mam tabele ze słownikiem nazw ulic, słownikiem dostawców rur, materiałów rur itd.
Mam tez tabele która przypisuje ulicy, dostawce,materiał i długość rury
| id_ulicy | id_dostawcy | id_materialu | dlugosc_rury |
I kiedy np. chcę wyświetlic formularz edycji rekordu w tej tabeli to musze wykonać szereg zapytań pomocniczych dzięki którym mogę stworzyć stosowne listy wyboru. Np. Muszę wyświetlić liste nazw ulic w danym mieście żeby uzytkownik wybrał ulice ze słownika ulic, czy wybrał odpowiedniego dostawcę
Gdyby w bazie były zapisane te relacje tabela1.klucz - tabela2.klucz skrypt sam wiedziałby kiedy w formularzu ma wypisać pole tekstowe z pojedyńczą wartościa do wpisania, a kiedy liste wyboru z wybrana (bieżącą) wartością.
Po co mam implementować relacje (inner join, czy widoki) za każdym razem jak chce coś pobrać czy wyświetlić skoro są one stałe.
Chodzi mi o to, żeby do skryptu tworzącego formularz przekazac tylko jedno zapytanie SQL a on sam ma wiedzieć co jak wyświetlic odczytując informacje z mapy relacji.
Pewnie nieźle zamieszałem