Przewodnik po relacjach pomiędzy tabelami
Dotyczy
Access dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Celem tworzenia dobrych projektów baz danych jest między innymi wyeliminowanie nadmiarowości danych (czyli danych zduplikowanych). Aby osiągnąć ten cel, najpierw dzieli się dane na wiele tabel tematycznych, tak aby każdy fakt był reprezentowany tylko raz. Następnie można udostępnić Access sposób na połączenie podzielonych informacji — można to zrobić, umieszczając pola wspólne w powiązanych tabelach. Jednak aby poprawnie wykonać tę czynność, należy najpierw zrozumieć relacje występujące pomiędzy tabelami, a następnie określić te relacje w bazie danych.

W tym artykule

Wprowadzenie

Po utworzeniu tabeli dla każdego tematu w bazie danych musisz Access sposób na ponowne połączenie tych informacji w razie potrzeby. W tym celu umieszcza się pola wspólne w powiązanych ze sobą tabelach oraz definiuje relacje pomiędzy tabelami. Następnie można tworzyć zapytania, formularze i raporty, dzięki którym będą wyświetlane informacje z kilku tabel jednocześnie. Przykładowy formularz przedstawiony poniżej zawiera informacje pochodzące z kilku tabel:

Formularz Zamówienia, w którym są jednocześnie wyświetlane powiązane informacje pochodzące z pięciu tabel

1. Informacje w tym formularzu pochodzą z tabeli Klienci...

2. ...tabeli Zamówienia...

3. ...tabeli Produkty...

4. ...oraz tabeli Szczegóły zamówień.

Nazwa klienta w polu Faktura dla jest pobierana z tabeli Klienci, wartości identyfikatora zamówienia i daty zamówienia pochodzą z tabeli Zamówienia, nazwa produktu pochodzi z tabeli Produkty, a wartości ceny jednostkowej i ilości — z tabeli Szczegóły zamówień. Te tabele są powiązane ze sobą wzajemnie w różny sposób, co umożliwia przekazywanie informacji z poszczególnych tabel do formularza.

W powyższym przykładzie konieczna jest koordynacja pól w tabelach, która zagwarantuje wyświetlenie informacji dotyczących tego samego zamówienia. Taką koordynację uzyskuje się dzięki relacjom pomiędzy tabelami. Relacja pomiędzy tabelami działa przez dopasowywanie danych w polach kluczy — często są to pola o tej samej nazwie w obu tabelach. W większości przypadków te pasujące pola to klucz podstawowy z jednej tabeli, dostarczający unikatowego identyfikatora każdego rekordu, oraz klucz obcy w drugiej tabeli. Pracowników można na przykład skojarzyć z zamówieniami, za które odpowiadają, tworząc relację wykorzystującą pole Identyfikator pracownika z tabel Pracownicy i Zamówienia.

Pole Identyfikator pracownika w tabeli Pracownicy jest używane jako klucz podstawowy, a w tabeli Zamówienia jako klucz obcy.

1. Pole Identyfikator pracownika występuje w obu tabelach — jako klucz podstawowy...

2. ...oraz jako klucz obcy.

Początek strony

Typy relacji pomiędzy tabelami

Istnieją trzy typy relacji między tabelami w Access.

  • Relacja jeden-do-wielu

    Użyjmy jako przykładu bazy danych do śledzenia zamówień zawierającej tabelę Klienci i tabelę Zamówienia. Klient może złożyć dowolną liczbę zamówień. W związku z tym każdemu klientowi reprezentowanemu w tabeli Klienci może odpowiadać wiele zamówień reprezentowanych w tabeli Zamówienia. Relacja pomiędzy tabelą Klienci a tabelą Zamówienia to relacja jeden-do-wielu.

    Aby w projekcie bazy danych utworzyć relację jeden-do-wielu, należy klucz podstawowy znajdujący się po stronie „jeden” relacji dodać jako pole lub pola do tabeli po stronie „wiele” tej relacji. W tym przykładzie należy dodać nowe pole — jest to pole identyfikatora z tabeli Klienci — do tabeli Zamówienia i nadać mu nazwę Identyfikator klienta. Access może następnie użyć numeru identyfikacyjnego klienta w tabeli Zamówienia, aby znaleźć właściwego klienta dla każdego zamówienia.

  • Relacja wiele-do-wielu

    Przyjrzyjmy się teraz relacji między tabelą Produkty a tabelą Zamówienia. Jedno zamówienie może obejmować wiele produktów. Z drugiej strony jeden produkt może się znaleźć w wielu zamówieniach. Dlatego każdemu rekordowi z tabeli Zamówienia może odpowiadać wiele rekordów z tabeli Produkty. Ponadto każdemu rekordowi z tabeli Produkty może odpowiadać wiele rekordów z tabeli Zamówienia. Ta relacja to relacja wiele-do-wielu. Należy zauważyć, że aby wykryć istniejące relacje wiele-do-wielu pomiędzy tabelami, trzeba się przyjrzeć obu stronom relacji.

    Aby utworzyć relację wiele-do-wielu, należy utworzyć trzecią tabelę, często zwaną tabelą skrzyżowań, która rozbija relację wiele-do-wielu na dwie relacje jeden-do-wielu. Do tej trzeciej tabeli wstawia się klucze podstawowe z obu pierwotnych tabel. Skutkiem tego trzecia tabela rejestruje każde wystąpienie relacji. Tabele Zamówienia i Produkty są na przykład powiązane relacją wiele-do-wielu zdefiniowaną przez utworzenie dwóch relacji jeden-do-wielu z tabelą Szczegóły zamówień. Każde zamówienie może dotyczyć wielu produktów, a każdy produkt może występować w wielu zamówieniach.

  • Relacja jeden-do-jednego

    W relacji jeden-do-jednego z każdym rekordem w pierwszej tabeli może być związany tylko jeden pasujący rekord w drugiej tabeli, a z każdym rekordem w drugiej tabeli może być związany tylko jeden pasujący rekord w pierwszej tabeli. Ta relacja jest nietypowa, ponieważ najczęściej informacje powiązane w ten sposób są przechowywane w jednej tabeli. Za pomocą relacji jeden-do-jednego można podzielić tabelę z wieloma polami, odizolować fragment tabeli ze względów bezpieczeństwa lub przechowywać informacje odnoszące się tylko do podzbioru tabeli głównej. Określenie takiej relacji wymaga, aby w obu tabelach było używane wspólne pole.

Początek strony

Dlaczego warto tworzyć relacje pomiędzy tabelami?

Relacje pomiędzy tabelami można tworzyć bezpośrednio za pomocą okna Relacje lub przez przeciągnięcie pola z okienka Lista pól. Access używa relacji pomiędzy tabelami, aby zdecydować, jak połączyć tabele, gdy trzeba ich używać w obiekcie bazy danych. Istnieje kilka powodów, dla których warto tworzyć relacje pomiędzy tabelami przed utworzeniem innych obiektów bazy danych, takich jak formularze, zapytania i raporty.

  • Relacje pomiędzy tabelami pomagają w projektowaniu zapytań

    Aby pracować z rekordami z więcej niż jednej tabeli, często należy utworzyć zapytanie sprzęgające te tabele. Zapytanie działa przez dopasowywanie wartości pola klucza podstawowego pierwszej tabeli do pola klucza obcego drugiej tabeli. Aby na przykład zwrócić wiersze zawierające zamówienia każdego klienta, należy utworzyć zapytanie sprzęgające tabelę Klienci z tabelą Zamówienia przy użyciu pola Identyfikator klienta. W oknie Relacje można ręcznie określić pola do sprzężenia. Jeśli jednak między tabelami jest już zdefiniowana relacja, Access zapewnia sprzężenie domyślne na podstawie istniejącej relacji pomiędzy tabelami. Ponadto, jeśli korzystasz z jednego z kreatorów zapytań, Access używa informacji zebranych z już zdefiniowanych relacji pomiędzy tabelami, aby przedstawić ci świadome wybory i wstępnie wypełnić ustawienia właściwości odpowiednimi wartościami domyślnymi.

  • Relacje pomiędzy tabelami pomagają w projektowaniu formularzy i raportów

    Podczas projektowania formularza lub raportu Access korzysta z informacji zebranych z już zdefiniowanych relacji pomiędzy tabelami, aby przedstawić Ci świadome wybory i wstępnie wypełnić ustawienia właściwości odpowiednimi wartościami domyślnymi.

  • Relacje pomiędzy tabelami to podstawa, dzięki której można wymuszać więzy integralności zapobiegające powstawaniu rekordów odłączonych w bazie danych. Rekord odłączony to rekord odwołujący się do rekordu, który nie istnieje — na przykład rekord zamówienia, który odwołuje się do nieistniejącego rekordu klienta.

    Podczas projektowania bazy danych posiadane informacje dzieli się na tabele, z których każda ma klucz podstawowy. Następnie w tabelach powiązanych dodaje się klucze obce, które odwołują się do kluczy podstawowych. Te pary klucz obcy-klucz podstawowy stanowią podstawę relacji pomiędzy tabelami i zapytaniami wielotabelowymi. Ważne jest, aby te odwołania klucz obcy-klucz podstawowy były synchronizowane. Więzy integralności, które zależą od relacji pomiędzy tabelami, pomagają w synchronizowaniu odwołań.

Początek strony

Opis więzów integralności

Podczas projektowania bazy danych informacje danej bazy danych dzieli się na wiele tabel tematycznych, aby zminimalizować nadmiarowość danych. Następnie Access sposób na połączenie danych przez umieszczenie wspólnych pól w powiązanych tabelach. Aby na przykład utworzyć relację jeden-do-wielu, należy klucz podstawowy z tabeli po stronie „jeden” dodać jako pole w tabeli po stronie „wiele”. Aby ponownie połączyć dane, Access pobiera wartość z tabeli "wiele" i wyszukuj odpowiadającą jej wartość w tabeli "jeden". Dzięki temu wartości w tabeli po stronie „wiele” odwołują się do odpowiednich wartości w tabeli po stronie „jeden”.

Przypuśćmy, że istnieje relacja jeden-do-wielu między tabelami Spedytorzy i Zamówienia oraz trzeba usunąć pewnego spedytora. Jeśli usuwanemu spedytorowi odpowiadają zamówienia w tabeli Zamówienia, to po usunięciu rekordu spedytora staną się one rekordami odłączonymi. Zamówienia te będą wciąż zawierać identyfikator spedytora, ale identyfikator ten nie będzie już prawidłowy, ponieważ przestanie istnieć rekord, do którego on się odwołuje.

Więzy integralności mają na celu zapobieganie powstawaniu rekordów odłączonych i synchronizowanie odwołań, tak aby ta teoretyczna sytuacja nigdy nie wystąpiła.

Więzy integralności wymusza się przez włączenie ich dla relacji pomiędzy tabelami. Po wymuseniu Access odrzuca wszelkie operacje naruszające więzy integralności dla tej relacji pomiędzy tabelami. Oznacza to, że Access odrzuci zarówno aktualizacje zmieniające obiekt docelowy odwołania, jak i usunięcia usuwające obiekt docelowy odwołania. Możliwe, że trzeba będzie całkowicie zmienić klucz podstawowy spedytora, który ma zamówienia w tabeli Zamówienia. W takich przypadkach naprawdę potrzebne jest, aby Access automatycznie aktualizować wszystkie wiersze, których dotyczy efekt, w ramach jednej operacji. Dzięki temu Access zapewnia, że aktualizacja zostanie ukończona w całości, dzięki czemu baza danych nie będzie niespójna, niektóre wiersze zostaną zaktualizowane, a inne nie. Z tego powodu Access obsługuje opcję Kaskadowo aktualizuj pola pokrewne . Jeśli użytkownik wymusi więzy integralności i wybierze opcję Kaskadowo aktualizuj pola pokrewne , a następnie zaktualizuje klucz podstawowy, Access automatycznie zaktualizuje wszystkie pola odwołujące się do klucza podstawowego.

Ponadto może wystąpić uzasadniona potrzeba usunięcia wiersza i wszystkich wierszy pokrewnych — na przykład rekordu Spedytor i wszystkich zamówień powiązanych z danym spedytorem. Z tego powodu Access obsługuje opcję Kaskadowo usuń rekordy pokrewne . Jeśli użytkownik wymusi więzy integralności i wybierze opcję Kaskadowo usuń rekordy pokrewne , a następnie usunie rekord po stronie klucza podstawowego relacji, Access automatycznie usunie wszystkie rekordy odwołujące się do klucza podstawowego.

Początek strony

Wyświetlanie relacji pomiędzy tabelami

Aby wyświetlić relacje pomiędzy tabelami, należy kliknąć pozycję Relacje na karcie Narzędzia bazy danych. Zostanie otworzone okno Relacje zawierające wszystkie istniejące relacje. Jeśli relacje pomiędzy tabelami nie zostały zdefiniowane i okno Relacje jest otwierane po raz pierwszy, Access zostanie wyświetlony monit o dodanie tabeli lub zapytania do okna.

Otwieranie okna Relacje

  1. Kliknij pozycję Plik, kliknij pozycję Otwórz, a następnie wybierz i otwórz bazę danych.

  2. Na karcie Narzędzia bazy danych w grupie Relacje kliknij pozycję Relacje.

  3. Na karcie Projekt relacji w grupie Relacje kliknij pozycję Wszystkie relacje.Spowoduje to wyświetlenie wszystkich zdefiniowanych relacji w bazie danych. Należy pamiętać, że tabele ukryte (czyli tabele, dla których zaznaczono pole wyboru Ukryty w oknie dialogowym Właściwości) oraz ich relacje nie zostaną wyświetlone, chyba że w oknie dialogowym Opcje nawigacji jest zaznaczone pole wyboru Pokaż ukryte obiekty.

Relację pomiędzy tabelami reprezentuje linia relacji narysowana między tabelami w oknie Relacje. Jeśli w relacji nie są wymuszane więzy integralności, to ma ona postać cienkiej linii między polami wspólnymi obsługującymi relację. Zaznaczenie relacji przez kliknięcie linii powoduje pogrubienie tej linii. Jeśli w relacji są wymuszane więzy integralności, linia jest grubsza na obu końcach. Ponadto nad grubszym fragmentem linii po jednej stronie relacji jest wyświetlana liczba 1, a nad grubszym fragmentem po drugiej stronie jest wyświetlany symbol nieskończoności ().

Gdy okno Relacje jest aktywne, dostępne są następujące polecenia na Wstążce:

Na karcie Projekt relacji w grupie Narzędzia :

  • Edytuj relacje Otwiera okno dialogowe Edytowanie relacji. Po zaznaczeniu linii relacji można kliknąć przycisk Edytuj relacje, aby zmienić relację pomiędzy tabelami. Można także kliknąć dwukrotnie linię relacji.

  • Wyczyść układ Usuwa wszystkie tabele i relacje z widoku w oknie Relacje. Należy pamiętać, że to polecenie tylko ukrywa tabele i relacje — nie usuwa ich w rzeczywistości.

  • Raport relacji Tworzy raport, w którym wyświetlane są tabele i relacje zawarte w bazie danych. Raport pokazuje tylko tabele i relacje, które nie są ukryte w oknie Relacje.

Na karcie Projekt relacji w grupie Relacje :

  • Dodawanie tabel    Umożliwia zaznaczenie tabel do pokazania w oknie Relacje.

  • Ukryj tabelę Ukrywa wybraną tabelę w oknie Relacje.

  • Relacje bezpośrednie Wyświetla w oknie Relacje wszystkie relacje i tabele powiązane odpowiadające wybranej tabeli (jeśli nie są jeszcze wyświetlone).

  • Wszystkie relacje Wyświetla w oknie Relacje wszystkie relacje i tabele pokrewne znajdujące się w bazie danych. Należy pamiętać, że tabele ukryte (czyli tabele, dla których zaznaczono pole wyboru Ukryty w oknie dialogowym Właściwości) oraz ich relacje nie zostaną wyświetlone, chyba że w oknie dialogowym Opcje nawigacji jest wybrana opcja Pokaż ukryte obiekty.

  • Zamknij Zamyka okno Relacje. Jeśli w układzie okna Relacje zostały wprowadzone zmiany, zostanie wyświetlony monit o ich zapisanie.

Początek strony

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.