Co to jest relacja bazy danych?

Spisu treści:

Co to jest relacja bazy danych?
Co to jest relacja bazy danych?
Anonim

Relacja jest ustanawiana między dwiema tabelami bazy danych, gdy jedna tabela używa klucza obcego, który odwołuje się do klucza podstawowego innej tabeli. Jest to podstawowa koncepcja terminu relacyjna baza danych.

Jak działa klucz obcy w celu nawiązania relacji

Klucz podstawowy jednoznacznie identyfikuje każdy rekord w tabeli. Jest to typ klucza kandydującego, który zwykle jest pierwszą kolumną w tabeli i może być automatycznie generowany przez bazę danych, aby zapewnić jego unikalność. Klucz obcy to kolejny klucz kandydujący (nie klucz podstawowy) używany do łączenia rekordu z danymi w innej tabeli.

Rozważmy na przykład te dwie tabele, które określają, który nauczyciel prowadzi dany kurs. Tutaj kluczem podstawowym tabeli Courses jest Course_ID. Jego klucz obcy to Teacher_ID:

ID_kursu Nazwa_kursu ID_nauczyciela
Kurs_001 Biologia Nauczyciel_001
Kurs_002 Matematyka Nauczyciel_002
Kurs_003 Angielski Nauczyciel_003

Widać, że klucz obcy w Kursach pasuje do klucza podstawowego w Nauczyciele:

ID_nauczyciela Nazwa_nauczyciela
Nauczyciel_001 Carmen
Nauczyciel_002 Weronika
Nauczyciel_003 Jorge

Możemy powiedzieć, że klucz obcy Teacher_ID pomógł ustanowić relację między tabelami Kursy i Nauczyciele.

Image
Image

Rodzaje relacji z bazami danych

Używając kluczy obcych lub innych kluczy kandydujących, możesz zaimplementować trzy typy relacji między tabelami:

Jeden na jeden

Ten typ relacji umożliwia tylko jeden rekord po każdej stronie relacji. Klucz podstawowy odnosi się tylko do jednego rekordu (lub żadnego) w innej tabeli. Na przykład w małżeństwie każdy małżonek ma tylko jednego małżonka. Ten rodzaj relacji można zaimplementować w pojedynczej tabeli i dlatego nie używa się klucza obcego.

Jeden do wielu

Relacja jeden-do-wielu umożliwia powiązanie pojedynczego rekordu w jednej tabeli z wieloma rekordami w innej tabeli. Rozważ firmę z bazą danych zawierającą tabele Customers i Orders.

Pojedynczy klient może kupić wiele zamówień, ale jedno zamówienie nie może być połączone z wieloma klientami. Dlatego tabela Orders zawierałaby klucz obcy, który pasowałby do klucza podstawowego tabeli Customers, podczas gdy tabela Customers nie zawierałaby klucza obcego wskazującego na tabelę Orders.

Wiele-do-wielu

Jest to złożona relacja, w której wiele rekordów w tabeli może być połączonych z wieloma rekordami w innej tabeli. Na przykład nasza firma prawdopodobnie potrzebuje tabel Klienci i Zamówienia, a także prawdopodobnie potrzebuje tabeli Produkty.

Ponownie relacja między tabelami Klienci i Zamówienia jest typu jeden-do-wielu, ale należy wziąć pod uwagę relację między tabelą Zamówienia i Produkty. Zamówienie może zawierać wiele produktów, a produkt może być połączony z wieloma zamówieniami, ponieważ kilku klientów może złożyć zamówienie zawierające niektóre z tych samych produktów. Ten rodzaj relacji wymaga co najmniej trzech tabel.

Dlaczego relacje z bazami danych są ważne?

Ustanowienie spójnych relacji między tabelami bazy danych pomaga zapewnić integralność danych, przyczyniając się do normalizacji bazy danych. Na przykład, co by było, gdybyśmy nie połączyli żadnych tabel za pomocą klucza obcego, a zamiast tego połączyli dane w tabelach Kursy i Nauczyciele, w następujący sposób:

ID_nauczyciela Nazwa_nauczyciela Kurs
Nauczyciel_001 Carmen Biologia, matematyka
Nauczyciel_002 Weronika Matematyka
Nauczyciel_003 Jorge Angielski

Ten projekt jest nieelastyczny i narusza pierwszą zasadę normalizacji bazy danych, First Normal Form, która stanowi, że każda komórka tabeli powinna zawierać pojedynczy, dyskretny fragment danych.

A może zdecydowaliśmy się dodać drugi rekord dla Carmen, aby wymusić 1NF:

ID_nauczyciela Nazwa_nauczyciela Kurs
Nauczyciel_001 Carmen Biologia
Nauczyciel_001 Carmen Matematyka
Nauczyciel_002 Weronika Matematyka
Nauczyciel_003 Jorge Angielski

To wciąż słaby projekt, wprowadzający niepotrzebne powielanie i tak zwane anomalie wstawiania danych, co oznacza, że może przyczynić się do niespójnych danych. Na przykład, jeśli nauczyciel ma wiele rekordów, co jeśli niektóre dane wymagają edycji, ale osoba wykonująca edycję danych nie zdaje sobie sprawy, że istnieje wiele rekordów? Tabela zawierałaby wówczas różne dane dla tej samej osoby, bez żadnego jasnego sposobu ich identyfikacji lub uniknięcia.

Podzielenie tej tabeli na dwie tabele, Nauczyciele i Kursy, tworzy właściwą relację między danymi, a tym samym pomaga zapewnić spójność i dokładność danych.

Zalecana: