Przewodnik
po
relacjach
pomiędzy
tabelami
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 w programie Microsoft Office Access 2007 określa się sposób ponownego
zestawiania tych podzielonych informacji — w tym celu w tabelach powiązanych umieszcza
się pola wspólne. 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
programu Office Access 2007.
Aby uzyskać więcej informacji, zobacz artykuł Podstawowe informacje o projekcie bazy
danych.
W tym artykule
Typy relacji pomiędzy tabelami
Dlaczego warto tworzyć relacje pomiędzy tabelami?
Wyświetlanie relacji pomiędzy tabelami
Tworzenie relacji pomiędzy tabelami
Usuwanie relacji pomiędzy tabelami
Zmienianie relacji pomiędzy tabelami
Wymuszanie więzów integralności
Wprowadzenie
Po utworzeniu tabeli odpowiadającej każdemu tematowi w bazie danych należy w programie
Office Access 2007 określić sposób, który umożliwi ponowne zestawienie tych informacji,
jeśli okaże się to potrzebne. 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ć kwerendy,
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:
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.
1. Pole Identyfikator pracownika występuje w obu tabelach — jako klucz podstawowy...
2. ...oraz jako klucz obcy.
Typy relacji pomiędzy tabelami
Występują trzy typy relacji pomiędzy tabelami.
Relacja jeden-do-wielu
Rozważmy przykład bazy danych do śledzenia zamówień, która zawiera 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. Dlatego 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. Dzięki temu program Access będzie mógł za pomocą numeru
identyfikacyjnego klienta wyszukać właściwego klienta dla każdego zamówienia.
Relacja wiele-do-wielu
Rozważmy przykład relacji pomię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. Relacja tego
typu jest nazywana relacją wiele-do-wielu, ponieważ każdemu produktowi może
odpowiadać wiele zamówień, a każdemu zamówieniu — wiele produktów. 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. Ten typ relacji jest
nietypowy, 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 obie tabele używały wspólnego pola.
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. Przy użyciu relacji pomiędzy tabelami program
Office Access 2007 określa sposób sprzęgania tabel, gdy trzeba ich użyć w obiekcie bazy
danych. Istnieje kilka powodów, dla których warto tworzyć relacje pomiędzy tabelami przed
tworzeniem innych obiektów bazy danych, takich jak formularze, kwerendy i raporty.
Relacje pomiędzy tabelami pomagają w projektowaniu kwerend
Aby pracować z rekordami z więcej niż jednej tabeli, często należy utworzyć
kwerendę sprzęgającą te tabele. Kwerenda 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ć
kwerendę sprzęgającą 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 pomiędzy tabelami jest już zdefiniowana relacja, program Office Access 2007
podaje sprzężenie domyślne na podstawie istniejącej relacji pomiędzy tabelami.
Ponadto jeśli używany jest jeden z kreatorów kwerend, program Access przy użyciu
informacji zebranych z już zdefiniowanych relacji pomiędzy tabelami przedstawia
rozszerzone opcje do wyboru i wstępnie uzupełnia 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 program Office Access 2007 przy
użyciu informacji zebranych z już zdefiniowanych relacji pomiędzy tabelami
przedstawia rozszerzone opcje do wyboru i wstępnie uzupełnia 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 kwerend
wielotabelowych. Dlatego ważne jest synchronizowanie tych odwołań klucz obcy-
klucz podstawowy. Więzy integralności pomagają w synchronizowaniu odwołań i
zależą od relacji pomiędzy tabelami.
Opis więzów integralności
Podczas projektowania bazy danych informacje dzieli się na wiele tabel tematycznych, aby
zminimalizować nadmiarowość danych. Następnie w programie Office Access 2007 określa
się sposób ponownego zestawiania danych, umieszczając pola wspólne 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 zestawić dane,
program Access sprawdza wartość w tabeli po stronie „wiele” i wyszukuje odpowiadającą jej
wartość w tabeli po stronie „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 (aby
uzyskać instrukcje krok po kroku, zobacz Włączanie więzów integralności). Jeśli więzy
integralności są wymuszone, program Access odrzuca każdą operację, która naruszyłaby te
więzy w danej relacji pomiędzy tabelami. Oznacza to, że program Access odrzuci zarówno
aktualizacje zmieniające obiekt docelowy odwołania, jak i operacje usuwające obiekt
docelowy odwołania. Możliwe jednak, że wystąpi całkowicie uzasadniona potrzeba zmiany
klucza podstawowego spedytora, któremu odpowiadają zamówienia w tabeli Zamówienia. W
takim przypadku tak naprawdę potrzebna jest automatyczna aktualizacja wszystkich wierszy,
na które wpływa ta zmiana, w ramach jednej operacji. W ten sposób program Access
gwarantuje wykonanie pełnej aktualizacji, dzięki czemu baza danych nie będzie niespójna w
wyniku zaktualizowania tylko niektórych wierszy. W tym celu program Access udostępnia
opcję Kaskadowo aktualizuj pola pokrewne. Gdy użytkownik wymusi więzy integralności i
wybierze opcję Kaskadowo aktualizuj pola pokrewne, a następnie zaktualizuje klucz
podstawowy, program Access automatycznie zaktualizuje wszystkie pola, które odwołują 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. W programie Access służy do tego opcja Kaskadowo usuń rekordy pokrewne.
Gdy użytkownik wymusi więzy integralności i wybierze opcję Kaskadowo usuń rekordy
pokrewne, a następnie usunie rekord po stronie relacji, po której znajduje się klucz
podstawowy, program Access automatycznie usunie wszystkie rekordy odwołujące się do
klucza podstawowego.
Wyświetlanie relacji pomiędzy tabelami
Aby wyświetlić relacje pomiędzy tabelami, kliknij przycisk Relacje na karcie Narzędzia
bazy danych. Zostanie otwarte okno Relacje, w którym będą wyświetlone istniejące relacje.
Jeśli nie ma jeszcze zdefiniowanych relacji pomiędzy tabelami i okno Relacje jest otwierane
pierwszy raz, pojawi się monit o dodanie do okna tabeli lub kwerendy.
Otwieranie okna Relacje
1. Kliknij przycisk Microsoft Office
, a następnie kliknij polecenie Otwórz.
2. W oknie dialogowym Otwieranie wybierz i otwórz bazę danych.
3. Na karcie Narzędzie bazy danych w grupie Pokazywanie/ukrywanie kliknij
przycisk Relacje.
4. Jeśli baza danych zawiera relacje, zostanie wyświetlone okno Relacje. Jeśli baza
danych nie zawiera relacji i okno Relacje jest otwierane pierwszy raz, zostanie
wyświetlone okno dialogowe Pokazywanie tabeli. Kliknij przycisk Zamknij, aby
zamknąć okno dialogowe.
5. Na karcie Projektowanie w grupie Relacje kliknij przycisk Wszystkie relacje.
Zostaną wyświetlone wszystkie relacje zdefiniowane w bazie danych. Należy
pamiętać, że tabele ukryte (czyli tabele, dla których zaznaczono pole wyboru Ukryta
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.
Aby uzyskać więcej informacji na temat opcji Pokaż ukryte obiekty, zobacz
Przewodnik po okienku nawigacji.
1. Klucz podstawowy
2. Linia reprezentująca relację
3. Klucz obcy
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 (interfejs
użytkownika Microsoft Office Fluent):
Na karcie Projektowanie 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 Projektowanie w grupie Relacje:
Pokaż tabelę Otwiera okno dialogowe Pokazywanie tabeli, umożliwiając wybranie
tabel i kwerend do wyświetlenia 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 Ukryta 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.
Aby uzyskać więcej informacji na temat opcji Pokaż ukryte obiekty, zobacz
Przewodnik po okienku nawigacji.
Zamknij Zamyka okno Relacje. Jeśli w układzie okna Relacje zostały wprowadzone
zmiany, zostanie wyświetlony monit o ich zapisanie.
Tworzenie relacji pomiędzy tabelami
Relację pomiędzy tabelami można utworzyć przy użyciu okna Relacje lub przez
przeciągnięcie pola do arkusza danych z okienka Lista pól. Podczas tworzenia relacji
pomiędzy tabelami pola wspólne nie muszą mieć tych samych nazw (choć często mają).
Ważniejsze jest to, że pola wspólne muszą mieć ten sam typ danych. Jednak jeśli polem
klucza podstawowego jest pole typu Autonumerowanie, polem klucza obcego może być
również pole typu Liczba, o ile właściwość RozmiarPola obu pól jest taka sama. Na przykład
pole typu Autonumerowanie można powiązać z polem typu Liczba, jeśli właściwość
RozmiarPola obu tych pól ma wartość Liczba całkowita długa. Gdy oba pola wspólne są
polami typu Liczba, muszą mieć takie samo ustawienie właściwości RozmiarPola.
Tworzenie relacji pomiędzy tabelami za pomocą okna Relacje
1. Kliknij przycisk Microsoft Office
, a następnie kliknij polecenie Otwórz.
2. W oknie dialogowym Otwieranie wybierz i otwórz bazę danych.
3. Na karcie Narzędzie bazy danych w grupie Pokazywanie/ukrywanie kliknij
przycisk Relacje.
4. Jeśli nie zostały jeszcze zdefiniowane relacje, zostanie automatycznie wyświetlone
okno dialogowe Pokazywanie tabeli. Jeśli nie zostanie ono wyświetlone, na karcie
Projektowanie w grupie Relacje kliknij przycisk Pokaż tabelę.
W oknie dialogowym Pokazywanie tabeli są wyświetlane wszystkie tabele i
kwerendy zawarte w bazie danych. Aby zobaczyć tylko tabele, kliknij kartę Tabele.
Aby zobaczyć tylko kwerendy, kliknij kartę Kwerendy. Aby zobaczyć tabele i
kwerendy, kliknij kartę Obie.
5. Zaznacz jedną lub kilka tabel albo kwerend, a następnie kliknij przycisk Dodaj. Gdy
zakończysz dodawanie tabel i kwerend do okna Relacje, kliknij przycisk Zamknij.
6. Przeciągnij pole (zwykle klucz podstawowy) z jednej tabeli do pola wspólnego
(klucza obcego) w drugiej tabeli. Aby przeciągnąć kilka pól, przed przeciągnięciem
kliknij kolejne pola przy naciśniętym klawiszu CTRL.
Zostanie wyświetlone okno dialogowe Edytowanie relacji.
7. Sprawdź, czy pokazane nazwy pól oznaczają pola wspólne relacji. Jeśli nazwa pola
jest niepoprawna, kliknij ją i wybierz z listy nowe pole.
Aby w relacji wymusić więzy integralności, zaznacz pole wyboru Wymuszaj więzy
integralności. Aby uzyskać więcej informacji na temat więzów integralności, zobacz
sekcje Opis więzów integralności oraz Wymuszanie więzów integralności.
8. Kliknij przycisk Utwórz.
Między dwiema tabelami zostanie narysowana linia relacji. Jeśli zostało zaznaczone
pole wyboru Wymuszaj więzy integralności, linia będzie grubsza na obu końcach.
Ponadto, jeśli zostało zaznaczone pole wyboru Wymuszaj więzy integralności, nad
grubszym odcinkiem linii po jednej stronie relacji zostanie wyświetlona liczba 1, a nad
grubszym odcinkiem linii po drugiej stronie zostanie wyświetlony symbol
nieskończoności (∞).
Uwagi
Tworzenie relacji jeden-do-jednego Oba pola wspólne (zwykle pola klucza
podstawowego i klucza obcego) muszą mieć unikatowy indeks. Oznacza to, że
właściwość Indeksowane tych pól powinna być ustawiona na Tak (Bez duplikatów).
Jeśli oba pola mają unikatowy indeks, program Access tworzy relację jeden-do-
jednego.
Tworzenie relacji jeden-do-wielu Pole po stronie „jeden” relacji (zwykle pole
klucza podstawowego) musi mieć unikatowy indeks. Oznacza to, że właściwość
Indeksowane tego pola powinna być ustawiona na Tak (Bez duplikatów). Pole po
stronie „wiele” nie powinno mieć unikatowego indeksu. Może mieć indeks, ale musi
zezwalać na duplikaty. Oznacza to, że właściwość Indeksowane tego pola powinna
być ustawiona na Nie lub Tak (Duplikaty OK). Gdy jedno pole ma unikatowy
indeks, a drugie nie, program Access tworzy relację jeden-do-wielu.
Tworzenie relacji pomiędzy tabelami za pomocą okienka Lista pól
W programie Office Access 2007 można dodać pole do istniejącej tabeli otwartej w widoku
arkusza danych, przeciągając je z okienka Lista pól. W okienku Lista pól są pokazane pola
dostępne w tabelach powiązanych oraz pola dostępne w innych tabelach. Przeciągnięcie pola
z „innej” (niepowiązanej) tabeli, a następnie wykonanie wszystkich kroków Kreatora
odnośników, spowoduje automatyczne utworzenie nowej relacji jeden-do-wielu pomiędzy
tabelą z okienka Lista pól a tabelą, do której zostało przeciągnięte pole. W tej relacji,
utworzonej przez program Access, domyślnie nie są wymuszane więzy integralności. Więzy
integralności można wymusić przez edycję relacji. Aby uzyskać więcej informacji, zobacz
sekcję Zmienianie relacji pomiędzy tabelami.
Otwieranie tabeli w widoku arkusza danych
1. Kliknij przycisk Microsoft Office
, a następnie kliknij polecenie Otwórz.
2. W oknie dialogowym Otwieranie wybierz i otwórz bazę danych.
3. W okienku nawigacji kliknij prawym przyciskiem myszy tabelę, do której chcesz
dodać pole w celu utworzenia relacji, a następnie kliknij polecenie Widok arkusza
danych w menu skrótów.
Otwieranie okienka Lista pól
Na karcie Arkusz danych w grupie Pola i kolumny kliknij przycisk Dodaj istniejące
pola.
Zostanie wyświetlone okienko Lista pól.
W okienku Lista pól są wyświetlane wszystkie inne tabele z bazy danych, pogrupowane w
kategorie. Gdy użytkownik pracuje z tabelą w widoku bazy danych, program Access
wyświetla pola w okienku Lista pól w jednej z dwóch kategorii: Pola dostępne w
powiązanych tabelach i Pola dostępne w innych tabelach. W pierwszej kategorii są
wymienione wszystkie tabele, które pozostają w relacji z aktualnie opracowywaną tabelą, w
drugiej zaś — wszystkie tabele, z którymi ta tabela nie ma relacji.
W okienku Lista pól należy kliknąć znak plus (+) obok nazwy tabeli, aby wyświetlić listę
wszystkich dostępnych w niej pól. Aby dodać pole do opracowywanej tabeli, należy
przeciągnąć żądane pole z okienka Lista pól do tabeli w widoku arkusza danych.
Dodawanie pola i tworzenie relacji za pomocą okienka Lista pól
1. Na karcie Arkusz danych w grupie Pola i kolumny kliknij przycisk Dodaj istniejące
pola.
Zostanie wyświetlone okienko Lista pól.
2. W obszarze Pola dostępne w innych tabelach kliknij znak plus (+) obok nazwy
tabeli, aby wyświetlić listę pól zawartych w tej tabeli.
3. Przeciągnij żądane pole z okienka Lista pól do tabeli otwartej w widoku arkusza
danych.
4. Gdy zostanie wyświetlony wiersz wstawiania, upuść pole w odpowiednim miejscu.
Zostanie uruchomiony Kreator odnośników.
5. Postępuj zgodnie z instrukcjami, aby zakończyć pracę z Kreatorem odnośników.
Pole pojawi się w tabeli w widoku arkusza danych.
Przeciągnięcie pola z „innej” (niepowiązanej) tabeli, a następnie wykonanie wszystkich
kroków Kreatora odnośników, spowoduje automatyczne utworzenie nowej relacji jeden-do-
wielu pomiędzy tabelą z okienka Lista pól a tabelą, do której zostało przeciągnięte pole. W
tej relacji, utworzonej przez program Access, domyślnie nie są wymuszane więzy
integralności. Więzy integralności można wymusić przez edycję relacji. Aby uzyskać więcej
informacji, zobacz sekcję Zmienianie relacji pomiędzy tabelami.
Usuwanie relacji pomiędzy tabelami
Aby usunąć relację pomiędzy tabelami, należy usunąć linię relacji w oknie Relacje. Należy
starannie ustawić wskaźnik tak, aby wskazywał linię relacji, a następnie kliknąć tę linię.
Zaznaczona linia relacji jest pogrubiona. Po zaznaczeniu linii relacji należy nacisnąć klawisz
DELETE. Usunięcie relacji powoduje również usunięcie obsługi więzów integralności tej
relacji, jeśli została ona włączona. Skutkiem tego program Access nie będzie już
automatycznie zapobiegał tworzeniu rekordów odłączonych po stronie „wiele” relacji.
1. Kliknij przycisk Microsoft Office
, a następnie kliknij polecenie Otwórz.
2. W oknie dialogowym Otwieranie wybierz i otwórz bazę danych.
3. Na karcie Narzędzie bazy danych w grupie Pokazywanie/ukrywanie kliknij
przycisk Relacje.
Zostanie wyświetlone okno Relacje.
Jeśli nie zdefiniowano jeszcze żadnych relacji i okno Relacje jest otwierane po raz
pierwszy, zostanie wyświetlone okno dialogowe Pokazywanie tabeli. W przypadku
wyświetlenia tego okna dialogowego kliknij przycisk Zamknij.
4. Na karcie Projektowanie w grupie Relacje kliknij przycisk Wszystkie relacje.
Zostaną wyświetlone wszystkie tabele mające relacje, a także linie relacji.
5. Kliknij linię oznaczającą relację, którą chcesz usunąć. Zaznaczona linia relacji jest
pogrubiona.
6. Naciśnij klawisz DELETE.
— lub —
Kliknij prawym przyciskiem myszy, a następnie kliknij polecenie Usuń.
7. W programie Access może zostać wyświetlony komunikat Czy na pewno chcesz
trwale usunąć wybraną relację z bazy danych?. W przypadku wyświetlenia tego
komunikatu potwierdzającego kliknij przycisk Tak.
Uwaga Jeśli dowolna z tabel występująca w relacji jest używana — na przykład przez inną
osobę lub proces albo w otwartym obiekcie bazy danych (takim jak formularz) — jej
usunięcie nie będzie możliwe. Aby usunięcie relacji było możliwe, należy najpierw zamknąć
wszystkie otwarte obiekty używające tych tabel.
Zmienianie relacji pomiędzy tabelami
Aby zmienić relację pomiędzy tabelami, należy ją zaznaczyć w oknie Relacje, a następnie
przeprowadzić jej edycję. Należy starannie ustawić wskaźnik tak, aby wskazywał linię relacji,
a następnie kliknięciem zaznaczyć tę linię. Zaznaczona linia relacji jest pogrubiona. Po
zaznaczeniu linii relacji należy kliknąć dwukrotnie lub kliknąć przycisk Edytuj relacje w
grupie Narzędzia na karcie Projektowanie. Zostanie wyświetlone okno dialogowe
Edytowanie relacji.
Wprowadzanie zmian w oknie dialogowym Edytowanie relacji
1. Kliknij przycisk Microsoft Office
, a następnie kliknij polecenie Otwórz.
2. W oknie dialogowym Otwieranie wybierz i otwórz bazę danych.
3. Na karcie Narzędzie bazy danych w grupie Pokazywanie/ukrywanie kliknij
przycisk Relacje.
Zostanie wyświetlone okno Relacje.
Jeśli nie zdefiniowano jeszcze żadnych relacji i okno Relacje jest otwierane po raz
pierwszy, zostanie wyświetlone okno dialogowe Pokazywanie tabeli. W przypadku
wyświetlenia tego okna dialogowego kliknij przycisk Zamknij.
4. Na karcie Projektowanie w grupie Relacje kliknij przycisk Wszystkie relacje.
Zostaną wyświetlone wszystkie tabele mające relacje, a także linie relacji. Należy
pamiętać, że tabele ukryte (czyli tabele, dla których zaznaczono pole wyboru Ukryta
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.
Aby uzyskać więcej informacji na temat opcji Pokaż ukryte obiekty, zobacz
Przewodnik po okienku nawigacji.
5. Kliknij linię oznaczającą relację, którą chcesz zmienić. Zaznaczona linia relacji jest
pogrubiona.
6. Kliknij dwukrotnie linię relacji.
— lub —
Na karcie Projektowanie w grupie Narzędzia kliknij przycisk Edytuj relacje.
Zostanie wyświetlone okno dialogowe Edytowanie relacji.
7. Wprowadź zmiany, a następnie kliknij przycisk OK.
Okno dialogowe Edytowanie relacji umożliwia zmianę relacji pomiędzy tabelami. W
szczególności można zmienić tabele, kwerendy lub pola po dowolnej stronie relacji.
Ponadto można ustawić typ sprzężenia lub wymusić więzi integralności i wybrać
opcję operacji kaskadowych. Aby uzyskać więcej informacji na temat typu sprzężenia
i sposobu ustawiania go, zobacz sekcję Ustawianie typu sprzężenia. Aby uzyskać
więcej informacji na temat sposobu wymuszania więzów integralności i wybierania
opcji operacji kaskadowych, zobacz sekcję Wymuszanie więzów integralności.
Ustawianie typu sprzężenia
Po zdefiniowaniu relacji pomiędzy tabelami informacje na temat tej relacji są
wykorzystywane w projektach kwerend. Na przykład, jeśli użytkownik zdefiniuje relację
między dwiema tabelami, a następnie zacznie tworzyć kwerendę korzystającą z tych tabel,
program Access automatycznie wybierze domyślne pasujące pola na podstawie pól
określonych w relacji. Te początkowe wartości domyślne kwerendy można zastąpić, ale
wartości pochodzące z relacji często okazują się poprawne. Ponieważ poza najprostszymi
bazami danych dopasowywanie i łączenie danych z więcej niż jednej tabeli jest często
wykonywaną czynnością, ustawienie wartości domyślnych przez utworzenie relacji może
zaoszczędzić czas i zapewnić różne korzyści.
Kwerenda wielotabelowa łączy informacje z więcej niż jednej tabeli dzięki dopasowaniu
wartości z pól wspólnych. Operacja powodująca dopasowywanie i łączenie jest nazywana
sprzężeniem. Załóżmy na przykład, że użytkownik chce wyświetlić zamówienia klientów.
Tworzy więc kwerendę sprzęgającą tabelę Klienci i tabelę Zamówienia przy użyciu pola
Identyfikator klienta. Wynik kwerendy zawiera informacje o klientach i informacje o
zamówieniach wyłącznie z tych wierszy, w których zostało odnalezione odpowiednie
dopasowanie.
Jedną z wartości, którą można określić w każdej relacji, jest typ sprzężenia. Typ sprzężenia w
programie Access określa, które rekordy mają być uwzględnione w wyniku kwerendy. Jako
przykładu można ponownie użyć kwerendy sprzęgającej tabelę Klienci i tabelę Zamówienia
przy użyciu pola wspólnego z identyfikatorem klienta. W przypadku użycia domyślnego typu
sprzężenia (zwanego sprzężeniem wewnętrznym) kwerenda zwraca tylko wiersze klientów i
wiersze zamówień, w których pola wspólne (zwane również polami sprzężonymi) są równe.
Załóżmy jednak, że trzeba uwzględnić wszystkich klientów — nawet tych, którzy jeszcze nie
złożyli zamówień. W tym celu należy zmienić typ sprzężenia ze sprzężenia wewnętrznego na
tzw. lewe sprzężenie zewnętrzne. Lewe sprzężenie zewnętrzne zwraca wszystkie wiersze z
tabeli po lewej stronie relacji oraz tylko pasujące wiersze z tabeli po prawej stronie. Prawe
sprzężenie zewnętrzne zwraca wszystkie wiersze z prawej strony i tylko pasujące wiersze z
lewej strony.
Uwaga W tym przypadku określenia „lewe” i „prawe” odnoszą się do położenia tabeli w
oknie dialogowym Edytowanie relacji, a nie w oknie Relacje.
Należy się zastanowić, jaki wynik kwerendy sprzęgającej tabele relacji będzie potrzebny
najczęściej, a następnie odpowiednio ustawić typ sprzężenia.
Ustawianie typu sprzężenia
1. W oknie dialogowym Edytowanie relacji kliknij przycisk Typ sprzężenia.
Zostanie wyświetlone okno dialogowe Właściwości sprzężenia.
2. Kliknij odpowiednią opcję, a następnie kliknij przycisk OK.
W poniższej tabeli (opracowanej dla tabel Klienci i Zamówienia) przedstawiono trzy opcje
wyświetlane w oknie dialogowym Właściwości sprzężenia, typ używanego w nich
sprzężenia oraz informację, czy są uwzględniane wszystkie wiersze, czy pasujące wiersze z
poszczególnych tabel.
Opcja
Sprzężenie
relacyjne
Lewa
tabela
Prawa
tabela
1. Zawiera tylko te wiersze, w których sprzężone
pola z obu tabel są równe.
Sprzężenie
wewnętrzne
Pasujące
wiersze
Pasujące
wiersze
2. Uwzględnia WSZYSTKIE rekordy z tabeli
Klienci i tylko te rekordy z tabeli Zamówienia,
dla których sprzężone pola są równe.
Lewe sprzężenie
zewnętrzne
Wszystkie
wiersze
Pasujące
wiersze
3. Uwzględnia WSZYSTKIE rekordy z tabeli
Zamówienia i tylko te rekordy z tabeli Klienci,
dla których sprzężone pola są równe.
Prawe
sprzężenie
zewnętrzne
Pasujące
wiersze
Wszystkie
wiersze
W przypadku wybrania opcji 2 lub opcji 3 na linii relacji zostanie wyświetlona strzałka. Ta
strzałka wskazuje stronę relacji, dla której są pokazane tylko pasujące wiersze.
Wprowadzanie zmian w oknie dialogowym Właściwości
sprzężenia
1. Kliknij przycisk Microsoft Office
, a następnie kliknij polecenie Otwórz.
2. W oknie dialogowym Otwieranie wybierz i otwórz bazę danych.
3. Na karcie Narzędzie bazy danych w grupie Pokazywanie/ukrywanie kliknij
przycisk Relacje.
Zostanie wyświetlone okno Relacje.
Jeśli nie zdefiniowano jeszcze żadnych relacji i okno Relacje jest otwierane po raz
pierwszy, zostanie wyświetlone okno dialogowe Pokazywanie tabeli. W przypadku
wyświetlenia tego okna dialogowego kliknij przycisk Zamknij.
4. Na karcie Projektowanie w grupie Relacje kliknij przycisk Wszystkie relacje.
Zostaną wyświetlone wszystkie tabele mające relacje, a także linie relacji. Należy
pamiętać, że tabele ukryte (czyli tabele, dla których zaznaczono pole wyboru Ukryta
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.
Aby uzyskać więcej informacji na temat opcji Pokaż ukryte obiekty, zobacz
Przewodnik po okienku nawigacji.
5. Kliknij linię oznaczającą relację, którą chcesz zmienić. Zaznaczona linia relacji jest
pogrubiona.
6. Kliknij dwukrotnie linię relacji.
— lub —
Na karcie Projektowanie w grupie Narzędzia kliknij przycisk Edytuj relacje.
Zostanie wyświetlone okno dialogowe Edytowanie relacji.
7. Kliknij przycisk Typ sprzężenia.
8. W oknie dialogowym Właściwości sprzężenia kliknij odpowiednią opcję, a następnie
kliknij przycisk OK.
9. Wprowadź ewentualne dodatkowe zmiany w relacji, a następnie kliknij przycisk OK.
Wymuszanie więzów integralności
Więzy integralności mają na celu zapobieganie powstawaniu rekordów odłączonych i
synchronizowanie odwołań, tak aby nie było rekordów odwołujących się do rekordów, które
już nie istnieją. Więzy integralności wymusza się przez włączenie ich dla relacji pomiędzy
tabelami. Jeśli więzy integralności są wymuszone, program Access odrzuca każdą operację,
która naruszyłaby te więzy w danej relacji pomiędzy tabelami. Program Access odrzuca więc
aktualizacje zmieniające obiekt docelowy odwołania, a także operacje usuwające obiekt
docelowy odwołania. Jeśli program Access ma propagować aktualizacje i usunięcia odwołań,
tak aby wszystkie powiązane wiersze były zmieniane w odpowiedni sposób, zobacz sekcję
Ustawianie opcji operacji kaskadowych.
Włączanie lub wyłączanie więzów integralności
1. Kliknij przycisk Microsoft Office
, a następnie kliknij polecenie Otwórz.
2. W oknie dialogowym Otwieranie wybierz i otwórz bazę danych.
3. Na karcie Narzędzie bazy danych w grupie Pokazywanie/ukrywanie kliknij
przycisk Relacje.
Zostanie wyświetlone okno Relacje.
Jeśli nie zdefiniowano jeszcze żadnych relacji i okno Relacje jest otwierane po raz
pierwszy, zostanie wyświetlone okno dialogowe Pokazywanie tabeli. W przypadku
wyświetlenia tego okna dialogowego kliknij przycisk Zamknij.
4. Na karcie Projektowanie w grupie Relacje kliknij przycisk Wszystkie relacje.
Zostaną wyświetlone wszystkie tabele mające relacje, a także linie relacji. Należy
pamiętać, że tabele ukryte (czyli tabele, dla których zaznaczono pole wyboru Ukryta
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.
Aby uzyskać więcej informacji na temat opcji Pokaż ukryte obiekty, zobacz
Przewodnik po okienku nawigacji.
5. Kliknij linię oznaczającą relację, którą chcesz zmienić. Zaznaczona linia relacji jest
pogrubiona.
6. Kliknij dwukrotnie linię relacji.
— lub —
Na karcie Projektowanie w grupie Narzędzia kliknij przycisk Edytuj relacje.
Zostanie wyświetlone okno dialogowe Edytowanie relacji.
7. Zaznacz pole wyboru Wymuszaj więzy integralności.
8. Wprowadź ewentualne dodatkowe zmiany w relacji, a następnie kliknij przycisk OK.
Po wymuszeniu więzów integralności są stosowane następujące reguły:
Nie można wprowadzić wartości w polu klucza obcego tabeli powiązanej, jeśli ta
wartość nie istnieje w polu klucza podstawowego tabeli podstawowej — czynność ta
powoduje powstanie rekordów odłączonych.
Nie można usunąć rekordu z tabeli podstawowej, jeśli w tabeli powiązanej istnieją
rekordy pasujące do niego. Nie można na przykład usunąć rekordu pracownika z tabeli
Pracownicy, jeśli w tabeli Zamówienia istnieją zamówienia przypisane temu
pracownikowi. Można jednak zdecydować się na usunięcie rekordu podstawowego
oraz wszystkich rekordów pokrewnych w ramach jednej operacji, zaznaczając pole
wyboru Kaskadowo usuń rekordy pokrewne.
Nie można zmienić wartości klucza podstawowego w tabeli podstawowej, jeśli
spowodowałoby to powstanie rekordów odłączonych. Nie można na przykład zmienić
numeru zamówienia w tabeli Zamówienia, jeśli w tabeli Szczegóły zamówienia
istnieją pozycje przypisane do tego zamówienia. Można jednak zdecydować się na
zaktualizowanie rekordu podstawowego oraz wszystkich rekordów pokrewnych w
ramach jednej operacji, zaznaczając pole wyboru Kaskadowo aktualizuj pola
pokrewne.
Uwagi Jeśli przy włączaniu więzów integralności występują problemy, warto
pamiętać, że do wymuszenia tych więzów jest wymagane spełnienie następujących
warunków:
o
Pole wspólne z tabeli podstawowej musi być kluczem podstawowym lub mieć
unikatowy indeks.
o
Pola wspólne muszą mieć ten sam typ danych. Jedynym wyjątkiem jest
możliwość powiązania pola typu Autonumerowanie z polem typu Liczba,
którego właściwość RozmiarPola ma ustawienie Liczba całkowita długa.
o
Obie tabele muszą znajdować się w tej samej bazie danych programu Access.
Więzów integralności nie można wymusić w tabelach połączonych. Jednak
jeśli tabele źródłowe mają format programu Access, można otworzyć bazę
danych, w której są przechowywane, i włączyć więzy integralności w tej bazie
danych.
Ustawianie opcji operacji kaskadowych
Może się zdarzyć, że wystąpi uzasadniona potrzeba zmiany wartości po stronie „jeden”
relacji. W takim przypadku program Access powinien automatycznie w ramach jednej
operacji zaktualizować wszystkie wiersze, na które wpływa ta zmiana. W ten sposób
aktualizacja jest wykonywana w pełni, dzięki czemu baza danych nie będzie niespójna w
wyniku zaktualizowania tylko niektórych wierszy. Aby uniknąć tego problemu, program
Access udostępnia opcję Kaskadowo aktualizuj pola pokrewne. Gdy użytkownik wymusi
więzy integralności i wybierze opcję Kaskadowo aktualizuj pola pokrewne, a następnie
zaktualizuje klucz podstawowy, program Access automatycznie zaktualizuje wszystkie pola,
które odwołują się do klucza podstawowego.
Ponadto może wystąpić potrzeba usunięcia wiersza i wszystkich wierszy pokrewnych, na
przykład rekordu spedytora i wszystkich zamówień powiązanych z danym spedytorem. W
programie Access służy do tego opcja Kaskadowo usuń rekordy pokrewne. Gdy użytkownik
wymusi więzy integralności i wybierze opcję Kaskadowo usuń rekordy pokrewne, to w
momencie usunięcia rekordu zawierającego klucz podstawowy program Access
automatycznie usunie wszystkie rekordy, które odwołują się do klucza podstawowego.
Włączanie lub wyłączanie aktualizowania kaskadowego i/lub usuwania
kaskadowego
1. Kliknij przycisk Microsoft Office
, a następnie kliknij polecenie Otwórz.
2. W oknie dialogowym Otwieranie wybierz i otwórz bazę danych.
3. Na karcie Narzędzie bazy danych w grupie Pokazywanie/ukrywanie kliknij
przycisk Relacje.
Zostanie wyświetlone okno Relacje.
Jeśli nie zdefiniowano jeszcze żadnych relacji i okno Relacje jest otwierane po raz
pierwszy, zostanie wyświetlone okno dialogowe Pokazywanie tabeli. W przypadku
wyświetlenia tego okna dialogowego kliknij przycisk Zamknij.
4. Na karcie Projektowanie w grupie Relacje kliknij przycisk Wszystkie relacje.
Zostaną wyświetlone wszystkie tabele mające relacje, a także linie relacji. Należy
pamiętać, że tabele ukryte (czyli tabele, dla których zaznaczono pole wyboru Ukryta
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.
Aby uzyskać więcej informacji na temat opcji Pokaż ukryte obiekty, zobacz
Przewodnik po okienku nawigacji.
5. Kliknij linię oznaczającą relację, którą chcesz zmienić. Zaznaczona linia relacji jest
pogrubiona.
6. Kliknij dwukrotnie linię relacji.
— lub —
Na karcie Projektowanie w grupie Narzędzia kliknij przycisk Edytuj relacje.
Zostanie wyświetlone okno dialogowe Edytowanie relacji.
7. Zaznacz pole wyboru Wymuszaj więzy integralności.
8. Zaznacz pole wyboru Kaskadowo aktualizuj pola pokrewne lub Kaskadowo usuń
rekordy pokrewne albo zaznacz oba te pola.
9. Wprowadź ewentualne dodatkowe zmiany w relacji, a następnie kliknij przycisk OK.
Uwaga Jeśli klucz podstawowy jest polem typu Autonumerowanie, zaznaczenie pola
wyboru Kaskadowo aktualizuj pola pokrewne nie wywoła żadnych skutków, ponieważ
zmiana wartości pola typu Autonumerowanie jest niemożliwa.
Dotyczy: Access 2007