Relacje w bazie danych Access (MDB) — informacje

Po zaprojektowaniu różnych tabel dla poszczególnych tematów w bazie danych Microsoft Access (baza danych programu Microsoft Access: Kolekcja danych i obiektów (takich jak tabele, kwerendy i formularze) związanych z określonym tematem lub przeznaczonych do określonego celu.), potrzebny jest sposób powiązania zawartych w nich informacji. Pierwszym krokiem w tym procesie jest zdefiniowanie relacji (relacja: Skojarzenie ustanowione między wspólnymi polami (kolumnami) w dwóch tabelach. Relacja może być typu jeden-do-jednego, jeden-do-wielu lub wiele-do-wielu.) między tabelami. Po jego wykonaniu można tworzyć kwerendy, formularze i raporty pozwalające wyświetlać za jednym razem informacje z różnych tabel. Na przykład poniższy formularz zawiera informacje z czterech tabel:

Formularz Zamówienia, w którym są wyświetlane powiązane relacjami informacje z pięciu tabel równocześnie

objaśnienie 1 Tabela Klienci

objaśnienie 2 Tabela Zamówienia

objaśnienie 3 Tabela Produkty

objaśnienie 4 Tabela Opisy zamówień

Nazwa klienta w polu Faktura dla jest pobierana z tabeli Klienci, identyfikator zamówienia i data zamówienia z tabeli Zamówienia, nazwa produktu z tabeli Produkty, a cena jednostkowa i ilość z tabeli Opisy zamówień. Te tabele są powiązane ze sobą wzajemnie w różny sposób w celu przekazywania z poszczególnych tabel do formularza.

W następnych sekcjach szczegółowo wyjaśniono typy dostępnych relacji, ich współpracę na formularzu oraz niezbędne informacje dotyczące używania relacji do pobierania żądanych informacji z tabel w bazie danych.

PokażJak działają relacje

W poprzednim przykładzie pola w czterech tabelach muszą być uporządkowane tak, aby pokazywały informacje o tym samym zamówieniu. Taką koordynację uzyskuje się dzięki relacjom między tabelami. Relacja działa poprzez dopasowywanie danych w polach klucza — zwykle są to pola o tej samej nazwie w obu tabelach. W większości przypadków dopasowywane pola to klucz podstawowy (klucz podstawowy: Jedno lub większa liczba pól (kolumn), których wartości jednoznacznie identyfikują każdy rekord w tabeli. Klucz podstawowy nie dopuszcza wartości Null i zawsze musi mieć unikatowy indeks. Klucz podstawowy służy do wiązania tabeli z kluczami obcymi w innych tabelach.) z jednej tabeli, który dostarcza unikatowego identyfikatora dla każdego rekordu, oraz klucz obcy (klucz obcy: Jedno lub większa liczba pól tabeli (kolumn), które odwołują się do pola lub pól klucza podstawowego w innej tabeli. Klucz obcy wskazuje, w jaki sposób tabele są powiązane.) w drugiej tabeli. Na przykład rekordy pracowników można skojarzyć z rekordami podlegających im zamówień przez utworzenie relacji między polami IDPracownika.

Pole IDPracownika użyte w funkcji klucza podstawowego w tabeli Pracownicy i w funkcji klucza obcego w tabeli Zamówienia

objaśnienie 1 Pole IDPracownika występuje w obydwu tabelach — jako klucz podstawowy...

objaśnienie 2... oraz jako klucz obcy.

PokażRelacja jeden-do-wielu

Najbardziej powszechnym typem relacji jest relacja jeden-do-wielu. W relacji jeden-do-wielu rekord w tabeli A może mieć wiele dopasowanych do niego rekordów z tabeli B, ale rekord w tabeli B ma tylko jeden dopasowany rekord w tabeli A.

Rekord w tabeli Dostawcy z kilkoma powiązanymi rekordami w tabeli Produkty

objaśnienie 1 Jeden dostawca...

objaśnienie 2... może dostarczać kilka produktów...

objaśnienie 3... lecz każdy produkt ma tylko jednego dostawcę.

PokażRelacja wiele-do-wiele

W relacji wiele-do-wielu rekord w tabeli A może mieć wiele pasujących rekordów w tabeli B, a rekord w tabeli B może mieć wiele pasujących rekordów w tabeli A. Realizacja tego typu relacji możliwa jest tylko przez zdefiniowanie trzeciej tabeli (nazywanej tabelą sprzęgającą), której klucz podstawowy (klucz podstawowy: Jedno lub większa liczba pól (kolumn), których wartości jednoznacznie identyfikują każdy rekord w tabeli. Klucz podstawowy nie dopuszcza wartości Null i zawsze musi mieć unikatowy indeks. Klucz podstawowy służy do wiązania tabeli z kluczami obcymi w innych tabelach.) składa się z dwóch pól — kluczy obcych (klucz obcy: Jedno lub większa liczba pól tabeli (kolumn), które odwołują się do pola lub pól klucza podstawowego w innej tabeli. Klucz obcy wskazuje, w jaki sposób tabele są powiązane.) z obydwu tabel, A oraz B. Relacja wiele-do-wielu to w rzeczywistości dwie relacje jeden-do-wielu z trzecią tabelą. Na przykład tabele Zamówienia i Produkty powiązane są relacją wiele-do-wielu zdefiniowaną przez utworzenie dwóch relacji jeden-do-wielu z tabelą Opisy zamówień. Jedno zamówienie może zawierać wiele produktów, a każdy produkt może występować w wielu zamówieniach.

Klucze obce w tabeli Opisy zamówień i odpowiadające im klucze podstawowe w tabelach Zamówienia i Produkty

objaśnienie 1 Klucz podstawowy z tabeli Zamówienia

objaśnienie 2 Klucz podstawowy z tabeli Produkty

objaśnienie 3 Jedno zamówienie może zawierać wiele produktów...

objaśnienie 4... a każdy produkt może występować w wielu zamówieniach.

PokażRelacja jeden-do-jednego

W relacji jeden-do-jednego każdy rekord w tabeli A może mieć tylko jeden pasujący rekord w tabeli B, a rekord w tabeli B może mieć tylko jeden pasujący rekord w tabeli A. Relacja tego typu jest rzadko spotykana, ponieważ większość informacji tak powiązanych znajdowałaby się w jednej tabeli. Relacji jeden-do-jednego można używać do podziału tabeli z wieloma polami, do odizolowania długiej tabeli ze względów bezpieczeństwa, albo do przechowania informacji odnoszących się tylko do podzbioru tabeli głównej. Na przykład, można by utworzyć tabelę do wyszukiwania pracowników uczestniczących w rozgrywkach piłkarskich. Dla każdego piłkarza w tabeli Piłkarze istnieje jeden pasujący rekord w tabeli Pracownicy.

Każdy rekord w tabeli Pracownicy może mieć tylko jeden odpowiadający mu rekord w tabeli Piłkarze

objaśnienie 1 Każdy piłkarz ma jeden pasujący rekord w tabeli Pracownicy.

objaśnienie 2 Ten zestaw wartości to podzbiór oparty na polu IDPracownika i tabeli Pracownicy.

PokażDefiniowanie relacji — informacje

Rodzaj relacji tworzonych w programie Microsoft Access zależy od zdefiniowania pól powiązanych relacją.

Można również utworzyć relację zwrotną do tej samej tabeli. Znajduje to zastosowanie przy tworzeniu odnośników do tej samej tabeli. Na przykład w tabeli Pracownicy można zdefiniować relację między polami IDPracownika a Szef, tak aby pole Szef mogło wyświetlić dane pracowników z pasującego pola IDPracownika.

 Uwaga   Po przeciągnięciu pola, które nie jest kluczem podstawowym i nie ma indeksu unikatowego, do innego pola, które również nie jest kluczem podstawowym i nie ma indeksu unikatowego, utworzona zostanie relacja nieokreślona. W kwerendach zawierających tabele z relacjami nieokreślonymi wyświetlana jest domyślna linia sprzężenia (sprzężenie: Skojarzenie między polem w jednej tabeli lub kwerendzie i polem o takim samym typie danych w innej tabeli lub kwerendzie. Sprzężenia informują program, jak dane są powiązane ze sobą. Rekordy, które nie pasują do siebie, mogą być uwzględniane lub wykluczane, w zależności od typu sprzężenia.) między tabelami, ale nie są wymuszane więzy integralności (więzy integralności: Reguły przestrzegane w celu zachowania zdefiniowanych relacji między tabelami w przypadku dodawania, aktualizowania lub usuwania rekordów.) i nie ma gwarancji, że rekordy w tabelach są unikatowe.

PokażWięzy integralności

Więzy integralności stanowią system reguł zapewniający poprawność związków między rekordami tabel powiązanych relacją i uniemożliwiający przypadkowe usunięcie lub zmianę powiązanych danych. Więzy integralności wymagają spełnienia poniższych warunków:

Przy stosowaniu więzów integralności obowiązują następujące reguły:

PokażKaskadowe przeprowadzanie aktualizacji i usuwania

Dla relacji z wymuszonymi więzami integralności (więzy integralności: Reguły przestrzegane w celu zachowania zdefiniowanych relacji między tabelami w przypadku dodawania, aktualizowania lub usuwania rekordów.) istnieje możliwość ustawienia opcji automatycznego wykonywania operacji aktualizacji kaskadowej (aktualizacja kaskadowa: W przypadku relacji wymuszających więzy integralności między tabelami jest to aktualizacja wszystkich powiązanych rekordów w powiązanej tabeli lub tabelach, gdy zmienia się rekord w tabeli podstawowej.) i usuwania kaskadowego (usuwanie kaskadowe: W przypadku relacji wymuszających więzy integralności między tabelami jest to usuwanie wszystkich powiązanych rekordów w powiązanej tabeli lub tabelach, gdy usuwany jest rekord w tabeli podstawowej.) powiązanych rekordów. Po ustawieniu tych opcji można wykonywać operacje usuwania i aktualizacji zabronione przez reguły więzów integralności. Przy usuwaniu lub zmianie wartości klucza podstawowego (klucz podstawowy: Jedno lub większa liczba pól (kolumn), których wartości jednoznacznie identyfikują każdy rekord w tabeli. Klucz podstawowy nie dopuszcza wartości Null i zawsze musi mieć unikatowy indeks. Klucz podstawowy służy do wiązania tabeli z kluczami obcymi w innych tabelach.) w tabeli podstawowej (tabela podstawowa: Strona „jeden” w parze tabel tworzących relację typu jeden-do-wielu. Tabela podstawowa powinna mieć klucz podstawowy, a rekordy muszą być unikatowe.) wykonywane są automatycznie niezbędne zmiany w tabelach powiązanych w celu zachowania więzów integralności.

Po zaznaczeniu pola wyboru Kaskadowo aktualizuj pola pokrewne podczas definiowania relacji każda zmiana wartości klucza podstawowego w rekordzie tabeli podstawowej powoduje automatyczną aktualizację tej wartości we wszystkich rekordach powiązanych. Na przykład jeśli w tabeli Klienci zmieni się wartość IDKlienta, w tabeli Zamówienia zostaną automatycznie zmienione wartości pól IDKlienta w każdej fakturze tego klienta, tak aby nie naruszyć istniejącej relacji. Kaskadowa aktualizacja wykonywana jest bez wyświetlania dodatkowych komunikatów.

 Uwaga   Jeśli klucz podstawowy w tabeli podstawowej jest polem typu Autonumerowanie (typ danych Autonumerowanie: W bazie danych programu Microsoft Access jest to typ danych pola, który automatycznie przechowuje unikatowy numer każdego rekordu dodawanego do tabeli. Generowane są trzy rodzaje numerów: kolejne, losowe i identyfikatory replikacji.), ustawienie pola wyboru Kaskadowo aktualizuj pola pokrewne nie ma znaczenia, ponieważ wartości w polu typu Autonumerowanie nie można zmienić.

Po zaznaczeniu pola wyboru Kaskadowo usuń rekordy pokrewne podczas definiowania relacji każde usunięcie rekordu w tabeli podstawowej powoduje automatyczne usunięcie wszystkich rekordów powiązanych w tabeli powiązanej. Na przykład w wypadku usunięcia z tabeli Klienci rekordu klienta, z tabeli Zamówienia zostaną automatycznie usunięte wszystkie zamówienia tego klienta (dotyczy to również rekordów w tabeli Opisy zamówień powiązanych z rekordami tabeli Zamówienia). Podczas usuwania rekordów z formularza lub arkusza danych przy ustawionej opcji Kaskadowo usuń rekordy pokrewne pojawia się ostrzeżenie o możliwości usunięcia również rekordów powiązanych. Natomiast podczas usuwania rekordów za pomocą kwerendy usuwającej (kwerenda usuwająca: Kwerenda (instrukcja SQL), która usuwa z jednej lub kilku tabel wiersze spełniające określone kryteria.), rekordy w tabelach powiązanych usuwane są bez ostrzeżenia.

 
 
Dotyczy:
Access 2003