Spróbuj!
Zaletą relacyjnej bazy danych jest możliwość łączenia danych z różnych tabel. W tym celu należy najpierw utworzyć relacje pomiędzy tabelami. Następnie program Access może już łączyć dane w zapytaniach, formularzach i raportach.
Aby wyświetlić wszystkie istniejące relacje zdefiniowane w bazie danych, otwórz szablon programu Access, przejdź do karty Narzędzia bazy danych i wybierz pozycję Relacje.
Uwaga: W przypadku otwarcia pustej bazy danych lub braku zdefiniowanych relacji między tabelami program Access wyświetli monit o dodanie tabeli lub zapytania. Aby można było dodać relację, w bazie danych muszą istnieć co najmniej dwie tabele. Najlepszym rozwiązaniem jest utworzenie wszystkich tabel przed rozpoczęciem. Aby uzyskać więcej informacji, zobacz Tworzenie relacji za pomocą Kreatora odnośników oraz Tworzenie relacji za pomocą okienka Relacje.
Opis widoku Relacje
Linie w widoku Relacje oznaczają połączenia między tabelami. Na poniższej ilustracji tabela po lewej stronie jest tabelą nadrzędną. Tabela po prawej stronie jest tabelą podrzędną. Linia pomiędzy tabelami łączy pola (w tym przypadku Identyfikator zamówienia i Identyfikator produktu) używane do dopasowywania danych.
Linie i symbole wskazują rodzaj relacji między tabelami:
-
Gruba linia łącząca oznacza wymuszanie więzów integralności między danymi. To dobrze. Dzięki temu dane są zawsze zsynchronizowane.
-
Na naszej ilustracji liczba 1 oznacza, że w tej tabeli mogą występować tylko pojedyncze zgodne rekordy. W pokazanej tu tabeli Zamówienia do każdego zamówienia dopasowano tylko jeden rekord.
-
Symbol ∞ oznacza, że wiele rekordów może zawierać ten sam identyfikator. W pokazanej tu tabeli Szczegóły zamówień jedno zamówienie (oznaczone przez Identyfikator zamówienia) może występować wiele razy, ponieważ zamówienie może zawierać wiele produktów.
Typy relacji między tabelami
Istnieją trzy typy relacji między tabelami:
-
Jeden-do-jednego. Oznacza, że każdy element występuje w każdej tabeli tylko raz. Na przykład każdy z pracowników może mieć co najwyżej jeden samochód służbowy. Aby uzyskać więcej informacji, zobacz Tworzenie relacji jeden-do-jednego.
-
Jeden-do-wielu. Oznacza, że jeden element w jednej tabeli może być powiązany z większą liczbą elementów w innej tabeli. Na przykład jedno zamówienie zakupu może zawierać wiele produktów.
-
Wiele-do-wielu. Oznacza, że element lub kilka elementów w jednej tabeli może mieć relację z jednym elementem lub kilkoma elementami w innej tabeli. Na przykład jedno zamówienie może zawierać wiele produktów, a jeden produkt może występować w wielu zamówieniach. Aby dowiedzieć się więcej, zobacz Tworzenie relacji wiele-do-wielu.
Relacje jeden-do-wielu
Jedną z najpowszechniejszych relacji między tabelami w dobrze zaprojektowanych bazach danych jest relacja jeden-do-wielu.
Relacje między tabelami na ogół opierają się na kluczu podstawowym jednej z tabel. Przypomnijmy, że klucz podstawowy to unikatowy identyfikator poszczególnych rekordów (często w postaci numeru). Aby wskazać, że informacje zawarte w dwóch różnych tabelach są powiązane, zwykle tworzy się relację przy użyciu klucza podstawowego jednej z tych tabel.
Na przykład w pokazanej tu relacji każda osoba w tabeli Kontakty ma identyfikator, będący kluczem podstawowym (na co wskazuje wyświetlony obok niego symbol klucza). Ten identyfikator występuje również w polu Właściciel w tabeli Zasoby. Aby wysłać wiadomość e-mail do osoby powiązanej z danym zasobem, należy pobrać wartość z pola Adres e-mail. W tym celu należy znaleźć wartość w polu Właściciel w tabeli Zasoby, a następnie wyszukać znaleziony identyfikator w tabeli Kontakty. Liczba 1 na jednym z końców linii łączącej tabele oraz symbol ∞ na drugim końcu oznaczają, że jest to relacja typu jeden-do-wielu, a zatem jeden kontakt może być powiązany z wieloma zasobami.
Edytowanie relacji
W przypadku modyfikowania istniejącej bazy danych lub utworzenia bazy danych na podstawie szablonu możesz edytować istniejące relacje odpowiednio do potrzeb.
Uwaga: Jeśli tabele, z którymi chcesz pracować, są używane, należy najpierw zamknąć te tabele oraz wszelkie otwarte obiekty, które ich używają.
-
Wybierz pozycję Narzędzia bazy danych > Relacje.
-
Wybierz linię łączącą dwie powiązane tabele.
Porada: Jeśli nie widzisz odpowiedniej relacji, na karcie Projektowanie w grupie Relacje wybierz przycisk Wszystkie relacje.
-
Na karcie Projektowanie wybierz pozycję Edytuj relacje.
Tabela/zapytanie to tabela nadrzędna po lewej stronie (w tym przykładzie jest to tabela Klienci).
Pokrewna tabela/zapytanie to tabela podrzędna (w tym przykładzie — Zamówienia).
Nawet jeśli w widoku Relacje tabele nie są wyświetlane w tej kolejności, ich rozmieszczenie w oknie dialogowym wskazuje kierunek łączącej je linii i relacji. To ważne na przykład wówczas, gdy mamy do czynienia z relacją jeden-do-wielu, ponieważ wskazuje, że tabela po lewej znajduje się po stronie „jeden” relacji (jest tabelą nadrzędną), a tabela po prawej znajduje się po stronie „wiele” (jest tabelą podrzędną).
-
Aby zmienić pola łączące tabele, wybierz inne pole poniżej każdej z wyświetlonych tabel. W tym przykładzie pole Identyfikator w tabeli Klienci jest połączone z polem Identyfikator klienta w tabeli Zamówienia.
-
Zmienianie sposobu synchronizacji danych między tabelami w programie Access.
Wymuszanie więzów integralności
Zaznacz tę opcję, aby zapobiec przekazywaniu nieprawidłowych danych oraz utrzymać synchronizację odnośników w połączonych relacjami tabelach.
Załóżmy na przykład, że istnieje relacja jeden-do-jednego między tabelami Pracownicy i Świadczenia pracowników. Jeśli jeden z pracowników opuści firmę i zostanie przez Ciebie usunięty z tabeli Pracownicy, powiązany rekord pracownika zostanie także usunięty z tabeli Świadczenia pracowników.
Czasem wymuszanie więzów integralności nie jest uzasadnione. Załóżmy na przykład, że istnieje relacja jeden-do-wielu między tabelami Spedytorzy i Zamówienia. Zostaje usunięty spedytor powiązany z zamówieniami w tabeli Zamówienia. Te zamówienia zostaną odłączone, co oznacza, że nadal zawierają Identyfikator spedytora, ale identyfikator ten nie jest już prawidłowy, ponieważ nie istnieje rekord, do którego się odnosił.
Kaskadowo aktualizuj pola pokrewne
Zaznacz tę opcję, aby mieć pewność, że dane w powiązanych polach będą aktualizowane we wszystkich powiązanych tabelach.
Załóżmy na przykład, że chcesz po prostu zmienić identyfikator spedytora. Zaznaczenie tej opcji gwarantuje, że Identyfikator spedytora zostanie zaktualizowany nie tylko w tabeli Spedytorzy, ale również we wszystkich innych połączonych z nią tabelach zawierających ten Identyfikator spedytora — na przykład w tabeli Zamówienia.
Kaskadowo usuń rekordy pokrewne
To, czy należy zaznaczyć tę opcję, czy nie, zależy od tego, czy jest wymagane zachowanie rekordów w niektórych tabelach mimo usunięcia tych rekordów w innych tabelach.
Załóżmy na przykład, że usuwasz spedytora. W przypadku zaznaczenia tej opcji w programie Access zostaną usunięte wszystkie rekordy zawierające odpowiedni Identyfikator spedytora we wszystkich tabelach — w tym wszystkie zamówienia (w tabeli Zamówienia) obsługiwane przez tego spedytora. Zatem należy zaznaczyć tę opcję tylko wtedy, gdy masz pewność, że chcesz usunąć również historię zamówień.
-
Aby zmienić relację między tabelami ze sprzężenia wewnętrznego na sprzężenie zewnętrzne, wybierz przycisk Typ sprzężenia. Aby uzyskać więcej informacji, zobacz Tworzenie zapytań przy użyciu sprzężeń zewnętrznych.
Usuwanie relacji pomiędzy tabelami
Uwaga: Jeśli tabele, z którymi chcesz pracować, są używane, należy najpierw zamknąć te tabele oraz wszelkie otwarte obiekty, które ich używają.
Aby usunąć relację pomiędzy tabelami:
-
Wybierz pozycję Narzędzia bazy danych > Relacje.
-
Wybierz linię łączącą dwie powiązane tabele.
Porada: Jeśli nie widzisz odpowiedniej relacji, na karcie Projektowanie w grupie Relacje wybierz przycisk Wszystkie relacje.
-
Wybierz klawisz Delete. Jeśli zostanie wyświetlony monit o potwierdzenie usunięcia relacji, wybierz pozycję Tak.
Uwaga: Usunięcie relacji powoduje również usunięcie obsługi więzów integralności tej relacji, jeśli została ona włączona. W wyniku tego program Access nie będzie już zapobiegać zmianom prowadzącym do tworzenia rekordów odłączonych po stronie „wiele” relacji jeden-do-wielu.