Jak definiować relacje między tabelami w bazie danych programu Access

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 304466 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Poziom podstawowy: Wymagana znajomość interfejsu użytkownika na komputerach mających jednego użytkownika.

Ten artykuł dotyczy tylko bazy danych programu Microsoft Access (mdb lub accdb).
Wersja tego artykułu dla programu Microsoft Access 2000: 304467.
Wersja tego artykułu dla programu Microsoft Access 97: 304468.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

W tym artykule opisano sposób definiowania relacji w bazie danych programu Microsoft Access. W tym artykule omówiono następujące zagadnienia:
  • Co to są relacje tabel?
  • Rodzaje relacji tabel
    • Relacje jeden-do-wielu
    • Relacje wiele-do-wielu
    • Relacje jeden-do-jednego
  • Jak definiować relacje między tabelami
    • Jak definiować relacje jeden-do-wielu lub jeden-do-jednego
    • Jak definiować relacje wiele-do-wielu
  • Więzy integralności
  • Kaskadowe aktualizowanie i usuwanie
  • Typy sprzężenia

Więcej informacji

Co to są relacje tabel?

Zwiń ten obrazekRozwiń ten obrazek
assets folding start collapsed
W relacyjnej bazie danych relacje umożliwiają zapobieganie występowaniu nadmiarowych danych. Jeśli na przykład projektowana jest baza danych do śledzenia informacji o książkach, można utworzyć tabelę o nazwie „Tytuły”, w której będą przechowywane informacje dotyczące poszczególnych książek, takie jak tytuł książki, data publikacji i wydawca. Konieczne może być również przechowywanie informacji dotyczących wydawcy, takich jak numer telefonu, adres i kod pocztowy wydawcy. Jeśli wszystkie te informacje byłyby przechowywane w tabeli „Tytuły”, numer telefonu wydawcy byłby duplikowany dla każdego tytułu drukowanego przez danego wydawcę.

Lepszym rozwiązaniem jest zapisywanie informacji dotyczących wydawcy tylko raz, w oddzielnej tabeli „Wydawcy”. W takim przypadku w tabeli „Tytuły” umieszczany jest wskaźnik odwołujący się do wpisu w tabeli „Wydawcy”.

Aby zapewnić stałą synchronizację danych, można wymusić więzy integralności między tabelami. Relacje więzów integralności ułatwiają zapewnienie zgodności informacji w tabeli z drugą tabelą. Na przykład każdy tytuł w tabeli „Tytuły” musi być skojarzony z określonym wydawcą w tabeli „Wydawcy”. Nie można dodać do bazy danych tytułu dla wydawcy, który nie istnieje w bazie danych.

Relacje logiczne w bazie danych usprawniają obsługę kwerend dotyczących danych oraz tworzenie raportów.
Zwiń ten obrazekRozwiń ten obrazek
assets folding end collapsed

Rodzaje relacji tabel

Zwiń ten obrazekRozwiń ten obrazek
assets folding start collapsed
Relacje polegają na dopasowaniu danych w kolumnach kluczy, zazwyczaj kolumnach (lub polach) z tą samą nazwą w obu tabelach. W większości przypadków relacja łączy klucz podstawowy tabeli (kolumnę zawierającą unikatowe identyfikatory poszczególnych wierszy) z polem innej tabeli. Kolumna w drugiej tabeli jest nazywana „kluczem obcym”. Na przykład w celu śledzenia sprzedaży poszczególnych tytułów książek można utworzyć relację między kolumną klucza podstawowego o nazwie IdentyfikatorTytułu w tabeli „Tytuły” i kolumną o nazwie IdentyfikatorTytułu w tabeli „Sprzedaż”. Kolumna IdentyfikatorTytułu w tabeli „Sprzedaż” jest kluczem obcym.

Istnieją trzy rodzaje relacji między tabelami. Rodzaj tworzonej relacji zależy od sposobu zdefiniowania kolumn pokrewnych.

Relacje jeden-do-wielu

Relacja jeden-do-wielu jest najbardziej powszechnym rodzajem relacji. W przypadku relacji tego typu dla wiersza w tabeli A może istnieć wiele zgodnych wierszy w tabeli B. Natomiast dla wiersza w tabeli B może istnieć tylko jeden zgodny wiersz w tabeli A. Na przykład tabele „Wydawcy” i „Tytuły” są powiązane relacją jeden-do-wielu. Oznacza to, że każdy wydawca publikuje wiele tytułów. Jednak każdy tytuł pochodzi tylko od jednego wydawcy.

Relacja jeden-do-wielu jest tworzona, jeżeli tylko jedna z kolumn pokrewnych jest kluczem podstawowym lub podlega unikatowym ograniczeniom.

W oknie relacji w programie Access strona relacji jeden-do-wielu związana z kluczem podstawowym jest oznaczona liczbą 1. Strona relacji związana z kluczem obcym jest oznaczona symbolem nieskończoności.

Zwiń ten obrazekRozwiń ten obrazek
2930331


Relacje wiele-do-wielu

W przypadku relacji wiele-do-wielu dla wiersza w tabeli A może istnieć wiele zgodnych wierszy w tabeli B i odwrotnie. Taka relacja jest tworzona przez zdefiniowanie trzeciej tabeli, nazywanej tabelą skrzyżowań. Klucz podstawowy tabeli skrzyżowań składa się z kluczy obcych zarówno z tabeli A, jak i z tabeli B. Na przykład tabele „Autorzy” i „Tytuły” są powiązane relacją wiele-do-wielu, zdefiniowaną przez relację jeden-do-wielu między każdą z tych tabel i tabelą „AutorzyTytułów”. Kluczem podstawowym tabeli „AutorzyTytułów” jest połączenie kolumny IdentyfikatorAutora (klucz podstawowy tabeli „Autorzy”) i kolumny IdentyfikatorTytułu (klucz podstawowy tabeli „Tytuły”).

Zwiń ten obrazekRozwiń ten obrazek
2930332


Relacje jeden-do-jednego

W przypadku relacji jeden-do-jednego dla wiersza w tabeli A może istnieć maksymalnie jeden zgodny wiersz w tabeli B i odwrotnie. Relacja jeden-do-jednego jest tworzona, jeżeli obie kolumny pokrewne są kluczami podstawowymi lub podlegają unikatowym ograniczeniom.

Ten rodzaj relacji nie jest powszechny, ponieważ większość informacji powiązanych w ten sposób znajduje się w jednej tabeli. Relacji jeden-do-jednego można używać do wykonywania następujących zadań:
  • Podział tabeli z wieloma kolumnami.
  • Izolowanie części tabeli z przyczyn związanych z zabezpieczeniami.
  • Przechowywanie danych, które są krótkotrwałe i powinny być łatwo usuwane przez usunięcie tabeli.
  • Przechowywanie informacji dotyczących tylko podzbioru głównej tabeli.
W programie Access strona relacji jeden-do-jednego związana z kluczem podstawowym jest oznaczona symbolem klucza. Strona relacji związana z kluczem obcym jest również oznaczona symbolem klucza.
Zwiń ten obrazekRozwiń ten obrazek
assets folding end collapsed

Jak definiować relacje między tabelami

Zwiń ten obrazekRozwiń ten obrazek
assets folding start collapsed
Podczas tworzenia relacji między tabelami pola pokrewne nie muszą mieć tych samych nazw. Pola pokrewne muszą jednak mieć ten sam typ danych z wyjątkiem okoliczności, w których pole klucza podstawowego jest polem Autonumerowanie. Pole Autonumerowanie można dopasować do pola Liczba pod warunkiem, że właściwość Rozmiar pola obu zgodnych pól jest taka sama. Na przykład można dopasować pole Autonumerowanie i pole Liczba, jeśli właściwość Rozmiar pola obu pól ma wartość Liczba całkowita długa. Nawet wówczas, gdy oba zgodne pola są polami Autonumerowanie, muszą mieć takie same ustawienie właściwości Rozmiar pola.

Jak definiować relacje jeden-do-wielu lub jeden-do-jednego

Aby utworzyć relację jeden-do-wielu lub jeden-do-jednego, wykonaj następujące czynności:
  1. Zamknij wszystkie tabele. Nie można tworzyć ani zmieniać relacji między otwartymi tabelami.
  2. W programie Access 2002 lub Access 2003 wykonaj następujące czynności:
    1. Naciśnij klawisz F11, aby przełączyć do okna Baza danych.
    2. W menu Narzędzia kliknij polecenie Relacje.

    W programie Access 2007, Access 2010 lub Access 2013 kliknij przycisk Relacje w grupie Pokazywanie/ukrywanie na karcie Narzędzia bazy danych.
  3. Jeśli nie zdefiniowano jeszcze żadnych relacji w bazie danych, automatycznie wyświetlane jest okno dialogowe Pokazywanie tabeli. Jeśli chcesz dodać tabele, dla których zostaną utworzone relacje, ale okno dialogowe Pokazywanie tabeli nie jest wyświetlane, kliknij polecenie Pokaż tabelę w menu Relacje.
  4. Kliknij dwukrotnie nazwy tabel, dla których chcesz utworzyć relacje, a następnie zamknij okno dialogowe Pokazywanie tabeli. Aby utworzyć wewnętrzną relację tabeli, dodaj daną tabelę dwukrotnie.
  5. Przeciągnij pole, dla którego chcesz utworzyć relację, z tabeli do pola pokrewnego w innej tabeli. Aby przeciągnąć kilka pól, naciśnij klawisz Ctrl, kliknij poszczególne pola, a następnie przeciągnij je.

    W większości przypadków pole klucza podstawowego (wyświetlane jako tekst pogrubiony) jest przeciągane z tabeli do podobnego pola (często o tej samej nazwie), nazywanego kluczem obcym, w innej tabeli.
  6. Zostanie wyświetlone okno dialogowe Edytowanie relacji. Upewnij się, że nazwy pól wyświetlane w obu kolumnach są poprawne. W razie potrzeby można zmienić te nazwy.

    Ustaw opcje relacji, jeśli to konieczne. Aby uzyskać informacje dotyczące określonego elementu w oknie dialogowym Edytowanie relacji, kliknij przycisk ze znakiem zapytania, a następnie kliknij odpowiedni element. (Te opcje zostaną szczegółowo opisane w dalszej części tego artykułu).
  7. Kliknij przycisk Utwórz, aby utworzyć relację.
  8. Powtórz kroki od 4 do 7 dla każdej pary tabel, dla których chcesz utworzyć relację.

    Przy zamykaniu okna dialogowego Edytowanie relacji w programie Access jest wyświetlane pytanie, czy należy zapisać układ. Niezależnie od tego, czy układ zostanie zapisany, tworzone relacje są zapisywane w bazie danych.

    UwagaRelacje można tworzyć nie tylko w tabelach, ale również w kwerendach. W przypadku kwerend więzy integralności nie są jednak wymuszane.

Jak definiować relacje wiele-do-wielu

Aby utworzyć relację wiele-do-wielu, wykonaj następujące czynności:
  1. Utwórz dwie tabele, dla których zostanie utworzona relacja wiele-do-wielu.
  2. Utwórz trzecią tabelę. Będzie to tabela skrzyżowań. Dodaj do tabeli skrzyżowań nowe pola z takimi samymi definicjami jak pola kluczy podstawowych każdej z tabel utworzonych w kroku 1. W tabeli skrzyżowań pola kluczy podstawowych pełnią funkcję kluczy obcych. Można dodać inne pola do tabeli skrzyżowań, podobnie jak do dowolnej innej tabeli.
  3. W tabeli skrzyżowań należy ustawić klucz podstawowy tak, aby uwzględniał pola kluczy podstawowych z pozostałych dwóch tabel. Na przykład w tabeli skrzyżowań „AutorzyTytułów” klucz podstawowy składałby się z pól IdentyfikatorZamówienia i IdentyfikatorProduktu.

    Uwaga Aby utworzyć klucz podstawowy, wykonaj następujące czynności:
    1. Otwórz tabelę w widoku Projekt.
    2. Zaznacz pole lub pola, które chcesz zdefiniować jako klucz podstawowy. Aby zaznaczyć pojedyncze pole, kliknij selektor wiersza dla żądanego pola. Aby zaznaczyć kilka pól, przytrzymaj naciśnięty klawisz Ctrl i kliknij selektory wierszy dla poszczególnych pól.
    3. W programie Access 2002 lub Access 2003 kliknij przycisk Klucz podstawowy na pasku narzędzi.

      W programie Access 2007 kliknij przycisk Klucz podstawowy w grupie Narzędzia na karcie Projektowanie.

      UwagaJeśli kolejność pól w kluczu podstawowym obejmującym kilka pól powinna być inna niż kolejność tych pól w tabeli, należy na pasku narzędzi kliknąć przycisk Indeksy w celu wyświetlenia okna dialogowego Indeksy, a następnie zmienić kolejność nazw pól dla indeksu o nazwie KluczPodstawowy.
  4. Zdefiniuj relację jeden-do-wielu między każdą z tabel podstawowych i tabelą skrzyżowań.
Zwiń ten obrazekRozwiń ten obrazek
assets folding end collapsed

Więzy integralności

Zwiń ten obrazekRozwiń ten obrazek
assets folding start collapsed
Więzy integralności to system reguł używanych przez program Access, który gwarantuje, że relacje między rekordami w tabelach pokrewnych są prawidłowe, a użytkownik nie może przypadkowo usunąć lub zmienić danych pokrewnych. Więzy integralności można ustawić wówczas, gdy wszystkie poniższe warunki są spełnione:
  • Zgodne pole z tabeli podstawowej jest kluczem podstawowym lub ma unikatowy indeks.
  • Pola pokrewne mają ten sam typ danych. Istnieją dwa wyjątki. Dla pola Autonumerowanie można utworzyć relację z polem Liczba z ustawieniem Liczba całkowita długa właściwości Rozmiar pola, a dla pola Autonumerowanie z ustawieniem Identyfikator replikacji właściwości Rozmiar pola można utworzyć relację z polem Liczba z ustawieniem Identyfikator replikacji właściwości Rozmiar pola.
  • Obie tabele należą do tej samej bazy danych programu Access. Jeśli są to tabele połączone, muszą mieć format programu Access, a użytkownik musi otworzyć bazę danych, w której są one przechowywane, aby ustawić więzy integralności. Więzów integralności nie można wymusić dla połączonych tabel z baz danych w innych formatach.
Następujące reguły obowiązują wówczas, gdy są używane więzy integralności:
  • W polu klucza obcego tabeli pokrewnej nie można wprowadzić wartości, która nie istnieje w kluczu podstawowym tabeli podstawowej. Można jednak wprowadzić wartość Null w kluczu obcym. Określa to, że nie istnieje relacja między rekordami. Na przykład nie można utworzyć zamówienia przypisanego do klienta, który nie istnieje. Można jednak utworzyć zamówienie nieprzypisane do żadnej osoby, wprowadzając wartość Null w polu IdentyfikatorKlienta.
  • Nie można usunąć rekordu z tabeli podstawowej, jeżeli zgodne rekordy istnieją w tabeli pokrewnej. Na przykład nie można usunąć rekordu pracownika z tabeli „Pracownicy”, jeśli w tabeli „Zamówienia” istnieją zamówienia przypisane do tego pracownika.
  • Nie można zmienić wartości klucza podstawowego w tabeli podstawowej, jeśli dla danego rekordu istnieją rekordy pokrewne. Na przykład nie można zmienić identyfikatora pracownika w tabeli „Pracownicy”, jeśli w tabeli „Zamówienia” istnieją zamówienia przypisane do tego pracownika.
Zwiń ten obrazekRozwiń ten obrazek
assets folding end collapsed

Kaskadowe aktualizowanie i usuwanie

Zwiń ten obrazekRozwiń ten obrazek
assets folding start collapsed
W przypadku relacji, w których są wymuszane więzy integralności, można określić, czy program Access powinien automatycznie kaskadowo aktualizować lub usuwać rekordy pokrewne. Jeśli te opcje zostaną ustawione, dozwolone będą operacje usuwania i aktualizacji, które są zazwyczaj blokowane przez reguły więzów integralności. Podczas usuwania rekordów lub zmiany wartości klucza podstawowego w tabeli podstawowej program Access wprowadza niezbędne zmiany w tabelach pokrewnych, aby zachować więzy integralności.

Jeśli podczas definiowania relacji użytkownik zaznaczy kliknięciem pole wyboru Kaskadowo aktualizuj pola pokrewne, przy każdej zmianie klucza podstawowego dla rekordu w tabeli podstawowej program Microsoft Access będzie automatycznie aktualizować klucz podstawowy zgodnie z nową wartością we wszystkich rekordach pokrewnych. Jeśli na przykład zostanie zmieniony identyfikator klienta w tabeli „Klienci”, pole IdentyfikatorKlienta w tabeli „Zamówienia” będzie automatycznie aktualizowane dla każdego zamówienia danego klienta w celu zachowania relacji. W programie Access aktualizacje są wykonywane kaskadowo bez wyświetlania żadnego komunikatu.

Uwaga Jeśli klucz podstawowy w tabeli podstawowej jest polem Autonumerowanie, zaznaczenie pola wyboru Kaskadowo aktualizuj pola pokrewne nie przyniesie efektu, ponieważ nie można zmienić wartości w polu Autonumerowanie.

Jeśli podczas definiowania relacji użytkownik zaznaczy pole wyboru Kaskadowo usuń pola pokrewne, przy każdym usunięciu rekordów w tabeli podstawowej program Access będzie automatycznie usuwać rekordy pokrewne w tabeli pokrewnej. Jeśli na przykład użytkownik usunie rekord klienta z tabeli „Klienci”, wszystkie zamówienia danego klienta zostaną automatycznie usunięte z tabeli „Zamówienia”. (Dotyczy to również rekordów w tabeli „SzczegółyZamówień” powiązanych relacją z rekordami tabeli „Zamówienia”). Gdy użytkownik usuwa rekordy z formularza lub arkusza danych, a pole wyboru Kaskadowo usuń pola pokrewne jest zaznaczone, w programie Access pojawia się ostrzeżenie, że rekordy pokrewne mogą również zostać usunięte. Jednak podczas usuwania rekordów przy użyciu kwerendy usuwającej program Access usuwa automatycznie rekordy w tabelach pokrewnych bez wyświetlania ostrzeżenia.
Zwiń ten obrazekRozwiń ten obrazek
assets folding end collapsed

Typy sprzężenia

Zwiń ten obrazekRozwiń ten obrazek
assets folding start collapsed
Istnieją trzy typy sprzężenia. Przedstawiono je na poniższym zrzucie ekranu:

Zwiń ten obrazekRozwiń ten obrazek
2930333


Opcja 1 definiuje sprzężenie wewnętrzne. W przypadku sprzężenia wewnętrznego rekordy z dwóch tabel są łączone w wynikach kwerendy tylko wówczas, gdy sprzęgane pola spełniają określony warunek. W kwerendzie domyślnie używane jest sprzężenie wewnętrzne wybierające rekordy tylko wówczas, gdy wartości w sprzężonych polach są zgodne.

Opcja 2 definiuje lewe sprzężenie zewnętrzne. W przypadku lewego sprzężenia zewnętrznego wszystkie rekordy po lewej stronie operacji LEFT JOIN w instrukcji SQL kwerendy są dodawane do wyników kwerendy, nawet jeśli nie istnieją zgodne wartości w sprzężonym polu z tabeli po prawej stronie.

Opcja 3 definiuje prawe sprzężenie zewnętrzne. W przypadku prawego sprzężenia zewnętrznego wszystkie rekordy po prawej stronie operacji RIGHT JOIN w instrukcji SQL kwerendy są dodawane do wyników kwerendy, nawet jeśli nie istnieją zgodne wartości w sprzężonym polu z tabeli po lewej stronie.
Zwiń ten obrazekRozwiń ten obrazek
assets folding end collapsed
Uwaga: Niniejszy artykuł, przeznaczony do „SZYBKIEJ PUBLIKACJI”, został utworzony bezpośrednio przez organizację pomocy technicznej firmy Microsoft. Zawarte w nim informacje są udostępniane „w stanie takim, w jakim są” w odpowiedzi na pojawiające się problemy. W wyniku przyspieszonego trybu udostępniania materiały mogą zawierać błędy typograficzne i mogą zostać poprawione w dowolnym momencie bez uprzedzenia. Więcej informacji można znaleźć w Warunkach użytkowania.

Właściwości

Numer ID artykułu: 304466 - Ostatnia weryfikacja: 30 stycznia 2014 - Weryfikacja: 1.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Access 2013
  • Microsoft Access 2010
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Słowa kluczowe: 
kbdesign kbdatabase kbhowto KB304466

Przekaż opinię

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com