Nie wiem czy Bóg istnieje, ale byłoby z korzyścią dla Jego reputacji, gdyby nie istniał" - Renard

Jak rozwiązać ten problem? W tym celu należy utworzyć trzecią tabelę rozbijającą zależność wiele-do-wielu na dwie zależności jeden-do-wielu. Klucz podstawowy z każdej z tabel umieszcza się w trzeciej. Rys. nr 21. Przedstawia tabelę "Opisy zamówień" w oknie "Tabela: Opisy zamówień", która obejmuje pola: - "Nr zamówienia" - klucz podstawowy z tabeli "Zamówienia". - "Nr produktu" - klucz podstawowy z tabeli "Produkty". - "Cena jednostkowa", "Ilość" oraz "Rabat" - dane, które dotyczą zarówno zamówienia jak i produktu. Każdy rekord z tabeli "Opisy zamówień” przedstawia jeden wiersz pozycji dla każdego zamówienia. Klucz podstawowy tej tabeli składa się z dwóch pól kluczy podstawowych z tabel "Zamówienia” i "Produkty”. Samo pole "Nr zamówienia” nie może być kluczem podstawowym dla tej tabeli, ponieważ jedno zamówienie ma wiele wierszy pozycji. "Nr zamówienia” powtarza się dla każdego wiersza pozycji zamówienia, tak więc pole to nie zawiera unikatowej wartości. Samo pole "Nr produktu” również nie może nim być, ponieważ jeden produkt może się pojawić w wielu zamówieniach. Ale "razem" te dwa pola zawsze tworzą wartość unikatową dla każdego rekordu. W bazie danych Northwind tabele "Zamówienia” i "Produkty” nie są ze sobą bezpośrednio powiązane. Są jednak powiązane pośrednio poprzez tabelę "Opisy zamówień”. Relacja wiele-do-wielu pomiędzy zamówieniami i produktami jest przedstawiana w bazie danych za pomocą dwóch zależności jeden-do-wielu. 1. Tabele "Zamówienia” i "Opisy zamówień” wiąże zależność jeden-do-wielu. Każdemu zamówieniu odpowiada więcej niż jeden wiersz pozycji, ale każdy wiersz pozycji jest połączony tylko z jednym zamówieniem. 2. Tabele "Produkty” i "Opisy zamówień” wiąże zależność jeden-do-wielu. Każdemu produktowi odpowiada wiele wierszy pozycji, ale każdy wiersz pozycji jest połączony tylko z jednym produktem. Tworzenie relacji jeden-do-jednego (przykład). W relacji jeden-do jednego rekord w "Tabeli A” ma nie więcej niż jeden pasujący do niego rekord w "Tabeli B”, a rekord z "Tabeli B” ma nie więcej niż jeden pasujący do niego rekord w Tabeli A. Ten typ zależności jest dość niezwykły i może wymagać pewnych zmian w projekcie bazy danych. Relacja jeden-do-jednego jest nietypowa, ponieważ w większości przypadków informacje w obydwu tabelach mogą być połączone w jedną tabelę. Załóżmy na przykład, że utworzono tabelę "Tenisiści”, aby śledzić informacje o imprezach ping-pongowych, których celem jest zbieranie funduszy, organizowanych w firmie Northwind Traders. Ponieważ wszyscy gracze są pracownikami firmy Northwind Traders, to tabelę tę wiąże zależność jeden-do jeden z tabelą "Pracownicy” w bazie danych firmy Northwind. Rys. nr 22. Przedstawia dwie tabele: "Pracownicy" w oknie "Tabela: Pracownicy" oraz "Tenisiści" w oknie "Tabela: Tenisiści". Tabela "Pracownicy" zawiera pola: "Nr pracownika", "Nazwisko", "Imię", "Tytuł" oraz "Data urodzenia". Tabela "Tenisiści" - pola: "Nr pracownika", "Przydomek", "Proponowana data", "Poziom umiejętności" oraz "Kaucja". Każdego tenisisty dotyczy odpowiedni rekord w tabeli "Pracownicy". Natomiast wartości w polu "Nr pracownika" w tabeli "Tenisiści" są podzbiorem pól "Nr pracownika" w tabeli "Pracownicy". Wszystkie pola z tabeli "Tenisiści” można dodać do tabeli "Pracownicy”. Ale tabela "Tenisiści” dotyczy tylko jednej imprezy, a informacje te nie będą potrzebne po jej zakończeniu. A oprócz tego nie wszyscy pracownicy grają w ping-ponga, więc jeśliby pola te znajdowały się w tabeli "Pracownicy”, to byłyby puste dla wielu rekordów. Warto zatem utworzyć oddzielną tabelę. Jeśli w bazie danych pojawia się potrzeba zależności jeden-do-jednego, należy rozważyć, czy nie lepiej połączyć informacje w jednej tabeli. Jeśli istnieją powody uniemożliwiające to, relację taką ustanawia się następująco: - Jeśli dwie tabele mają ten sam temat, to można prawdopodobnie ustanowić relację korzystając z tych samych pól kluczy podstawowych w obydwu tabelach. - Jeśli dwie tabele mają różne tematy z różnymi polami kluczy podstawowych, to należy wybrać jedną z tabel (którąkolwiek) i wstawić jej pole klucza podstawowego do innej tabeli jako klucz zewnętrzny. Ulepszanie projektu. Gdy istnieją już tabele, pola i niezbędne relacje, należy przyjrzeć się projektowi i wykryć wszelkie usterki, które mogły w nim pozostać. Należy utworzyć tabele, podać relacje między tabelami i wprowadzić kilka rekordów danych do każdej tabeli. Trzeba sprawdzić, czy daje się wykorzystywać bazę danych do uzyskiwania odpowiedzi na pytania. Należy utworzyć szkice własnych formularzy i raportów i sprawdzić, czy pokazują oczekiwane dane. Należy wykryć zbędne powtórzenia danych i wyeliminować je