ACCESS o relacjach

Definicje

    Charakterystyczne dla relacyjnej bazy danych jest przechowywanie informacji w odrębnych, ale powiązanych ze sobą tabelach.
    Dzięki temu eliminujemy nadmiarowe i wielokrotnie przechowywane informacje.
    Związek zachodzący pomiędzy powiązanymi ze sobą tabelami bazy Access nazywamy relacją (osoba pożyczyła płyty, aktor wystąpił w filmie).
    Po zaprojektowaniu różnych tabel dla poszczególnych tematów, niezbędne jest powiązanie zawartych w nich informacji. Powiązanie definiujemy przy pomocy wskazania/utworzenia relacji pomiędzy nimi.
    Relacja określa związki pomiędzy kolumnami (polami) w tabeli (w tym sensie tabela też jest relacją).
    Pojęciem relacja określa się również powiązania pomiędzy kolumnami w różnych tabelach (takie powiązanie bywa nazywane sprzężeniem lub związkiem).

Istnieją trzy typy relacji dwuargumentowych:

    Jeden do jednego
    Jeden do wielu
    Wiele do wielu

Jeden do jednego:

    Jeden do jednego – rekord z jednej tabeli powiązany jest z nie więcej niż jednym rekordem drugiej tabeli i odwrotnie przykładem może być przypisanie ucznia do szafki w szatni (jeżeli każdy uczeń ma swoją szafkę i szafka należy dokładnie do jednego ucznia)

Jeden do wielu:

    Jeden do wielu – rekord z pierwszej tabeli powiązany jest z wieloma rekordami drugiej tabeli
    np. w szkole jest wielu uczniów, ale konkretny uczeń chodzi do tej, a nie innej szkoły.

Wiele do wielu:

    Wiele do wielu – rekord z pierwszej tabeli powiązany jest z wieloma rekordami drugiej tabeli i rekord z drugiej tabeli powiązany jest z wieloma rekordami pierwszej tabeli
    W bazie danych filmów jest to związek pomiędzy filmami i aktorami: w jednym filmie może zagrać wielu aktorów i aktor może zagrać w wielu filmach

Edytowanie relacji

    W utworzonych przez nas tabelach zostały wykorzystane odnośniki, dzięki czemu niektóre relacje w bazie danych utworzyły się automatycznie.
    Przedstawione relacje nie odzwierciedlają jeszcze typów powiązań.

Klucze (o kluczach jeszcze będzie)

    Przeważnie łączymy tabele wykorzystując ustawione wcześniej klucze podstawowe.
    Aby pole mogło służyć do definiowania relacji pomiędzy tabelami wartości tego pola dla poszczególnych rekordów powinny być unikatowe (pole takie nazywamy kluczem unikalnym), na podstawie tego pola ustala się porządek rekordów w tabeli.
    Klucz unikalny (podstawowy) może być również złożeniem kilku pól rekordu tabeli.
    Jeżeli klucz jednoznacznie identyfikuje rekord jest kluczem unikalnym.

Indeksy (o indeksach jeszcze będzie)

    W życiu codziennym wiele informacji wyszukujemy wykorzystując indeksy (katalogi, skorowidze).
    np. w bibliotece korzystamy ze skorowidza wg tytułów, autorów itp., każdy z nich zawiera odsyłacze do książki, która w bibliotece znajduje się na określonej półce
    Indeksy w bazie danych zawierają odsyłacze do miejsc w tabeli w której dany rekord jest umieszczony, indeksy stosuje się do przyspieszenia wyszukiwania danych w bazie.
    Indeks kojarzy wartość klucza z fizycznym położeniem rekordu w tabeli i ułatwia jego odnajdywanie.

Schemat bazy filmy

    filmy1

Baza filmy – związki relacyjne

    Każdy film należy do jednego określonego gatunku, ale do tego samego gatunku może należeć dowolna liczba filmów (związek typu wiele do jednego)
    Każdy film został nakręcony przez jednego reżysera, ale ten sam reżyser może nakręcić dowolną liczbę filmów (związek typu wiele do jednego)
    W każdym filmie może zagrać dowolna liczba aktorów, a każdy aktor może zagrać w dowolnej liczbie filmów
    (związek typu wiele do wielu)
    Każdy film w tym samym czasie może być pożyczony jednej osobie, ale ta sama osoba może jednocześnie wypożyczyć wiele filmów (związek typu wiele do jednego)

Tworzymy powiązania Edytowanie relacji

    Klikamy prawym przyciskiem myszy na łączniku między tabelami, wybieramy edytuj relacje.
    Lub metodą przeciągnij upuść tworzymy połączenie łącząc odpowiednie pola w tabelach, edytor relacji otworzy się automatycznie.
    Zaznaczamy pole wymuszaj więzy integralności dzięki temu sprawdzamy, czy dane w połączonych tabelach są poprawne i uzyskamy na łączniku określenie typu relacji.
    Zaznaczamy pole kaskadowo aktualizuj pola pokrewne, w ten sposób zostanie uwzględniona zmiana klucza w tabeli podrzędnej (np. jeśli ktoś zmieni identyfikator gatunku (np. komedii) z 3 na 33 zmiana ta zostanie automatycznie uwzględniona w tabeli filmy).
    Nie zaznaczamy pola kaskadowo usuń rekordy pokrewne (zaznaczenie tego pola spowodowałoby, że możliwe byłoby usunięcie gatunku filmowego, a wraz z tym z bazy zostałyby usunięte wszystkie filmy przypisane do tego gatunku, czasami takie rozwiązanie jest potrzebne;).
    Po zatwierdzeniu zmian na linii łączącej tabele pojawi się typ powiązania np 1 i ∞.

Więzy integralności

    filmy2

Tabela wypożyczenia w bibliotece

    Po ustaleniu podstawowych relacji pomiędzy istniejącymi w bazie tabelami projektujemy tabelę wypożyczenia: IDFILMU (tekst), DATAWYPOŻYCZENIA (data/godzina), IDOSOBY (liczba), LICZBADNI (liczba), DATAZWROTU (data/godzina).
    Ustalamy odpowiednie typy danych, pole IDOSOBY nie może mieć zadeklarowanego typu autonumer, ponieważ w tabeli osoba i w tabeli wypożyczenia pola te numerowałyby się niezależnie.
    Aby pola (klucza podstawowego i klucza obcego)w poszczególnych tabelach zostały powiązane relacją muszą mieć takie same typy danych.
    Nie definiujemy jeszcze klucza podstawowego

Ustalamy związki:

    Jeden klient może wypożyczyć wiele filmów i jedna transakcja wypożyczenia dotyczy jednego klienta (jeden do wielu, jeden do jeden)
    Jeden film może być wypożyczony wiele razy i jedna transakcja wypożyczenia dotyczy jednego filmu (jeden do wielu, jeden do jeden)

Definiujemy relacje

    wymuszanie więzów integralności oznacza, że w polu klucza obcego nie możemy wprowadzić wartości nieistniejącej w polu klucza podstawowego
    tutaj nie możemy wypożyczyć filmów osobie, której wcześniej nie wprowadzimy do bazy

Dołączenie tabeli wypożyczenia

    filmy3

Tabela łącznikowa

    Pomiędzy tabelami film i aktor zachodzi związek wiele do wielu (sprawdź, czy w twojej bazie jest tabela aktor, jeśli nie utwórz taką tabelę korzystając z tabeli REŻYSER)
    Implementacja tego typu związków wymaga tworzenia tabeli łącznikowej w której przechowywane będą wartości kluczy podstawowych tabel FILM i AKTOR
    Relacja typu wiele do wielu zostaje zastąpiona dwoma relacjami typu wiele do jednego i jeden do wielu

Tworzenie tabeli łącznikowej

    W widoku projektu utwórz tabelę w której:

      Za pomocą kreatora odnośników zdefiniuj relację pomiędzy polami IDFILM i IDAKTOR łącząc tabele
      wyświetlaj filmy w porządku alfabetycznym po tytułach, a aktorów wg nazwisk
      Usuń wartość domyślną kolumny IDFILM
      Zapisz tabelę pod nazwą FILM-AKTOR

    Dodaj tabele AKTOR i FILM-AKTOR do widoku relacji
    Edytuj relacje pomiędzy tabelami (wymuszaj więzy integralności, kaskadowo aktualizuj i kaskadowo usuwaj powiązane pola)

Korzystanie z tabeli łącznikowej

    Dzięki tabeli łącznikowej FILMAKTOR w bazie możliwe będzie przechowywanie informacji o tym, którzy aktorzy zagrali w których filmach.
    W tabeli FILMAKTOR możliwe jest wielokrotne wybieranie tych samych danych przypisujących film do aktora i aktora do filmu.
    Przed wypełnianiem rekordów usuń wartość domyślną ‘0’ z pól IDFILMU i IDEAKTORA

Wygląd relacji po poprawkach

    filmy4

Złożenie pól – Klucz podstawowyw tabeli wypożyczenia

    Gdyby pole IDFILMU było kluczem podstawowym, to dany film mógłby być wypożyczony tylko raz i nikt inny nie mógłby go wypożyczyć
    Gdyby pole IDOSOBA było kluczem podstawowym, to dany klient mógłby wypożyczyć tylko jeden film
    Gdybyśmy zastosowali klucz złożony z pól IDFILMU i IDOSOBA dany klient mógłby wypożyczyć dany film tylko jeden raz
    Zdefiniowanie IDFILMU i DATAWYPOŻYCZENIA powoduje, że dany film może być wypożyczony w ciągu jednego dnia tylko jeden raz (inni klienci nie pożyczą już filmu)
    Zdefiniowanie klucza złożonego z pól IDFILMU IDOSOBA i DATAWYPOŻYCZENIA powoduje, ze dany film w ciągu jednego dnia może być wypożyczony przez danego klienta tylko jeden raz
    Zdefiniuj taki klucz złożony, sprawdź poprawność działania relacji i klucza
Ten wpis został opublikowany w kategorii Access, Bazy, Definicje. Dodaj zakładkę do bezpośredniego odnośnika.