Relacja jest ustanawiana między dwiema tabelami bazy danych, gdy jedna tabela ma klucz obcy, który odwołuje się do klucza podstawowego innej tabeli. Jest to podstawowa koncepcja kryjąca się pod pojęciem relacyjnej bazy danych.
Jak działa klucz obcy w celu ustanowienia związku
Przyjrzyjmy się podstawowym kluczom podstawowym i obcym. Klucz podstawowy jednoznacznie identyfikuje każdy rekord w tabeli. Jest to typ klucza kandydującego, który jest zwykle pierwszą kolumną w tabeli i może być automatycznie generowany przez bazę danych, aby zapewnić, że jest unikalny.
Klucz obcy to inny klucz kandydujący (nie klucz podstawowy) używany do łączenia rekordu z danymi w innej tabeli.
Weźmy na przykład te dwie tabele, które wskazują, który nauczyciel uczy, który kurs.
Tutaj klucz podstawowy tabeli Kursy to Course_ID. Jego klucz obcy to Teacher_ID:
| Identyfikator kursu | Nazwa kursu | Teacher_ID |
|---|---|---|
| Course_001 | Biologia | Teacher_001 |
| Course_002 | Matematyka | Teacher_001 |
| Course_003 | język angielski | Teacher_003 |
Możesz zauważyć, że klucz obcy w Kursach pasuje do klucza podstawowego w Nauczycielach:
| Teacher_ID | Imię nauczyciela |
|---|---|
| Teacher_001 | Carmen |
| Teacher_002 | Veronica |
| Teacher_003 | Jorge |
Możemy powiedzieć, że klucz obcy Teacher_ID pomógł ustalić związek między Kursami a tabelami Nauczycieli.
Rodzaje relacji z bazami danych
Za pomocą kluczy obcych lub innych kluczy kandydatów można implementować trzy typy relacji między tabelami:
Jeden na jednego: Ten typ relacji pozwala tylko na jeden rekord z każdej strony relacji.
Klucz podstawowy dotyczy tylko jednego rekordu - lub żadnego - w innej tabeli. Na przykład w małżeństwie każdy z małżonków ma tylko jednego współmałżonka. Ten rodzaj relacji może być zaimplementowany w pojedynczej tabeli i dlatego nie używa klucza obcego.
Jeden za dużo: Relacja jeden do wielu pozwala na powiązanie pojedynczego rekordu w jednej tabeli z wieloma rekordami w innej tabeli.
Rozważ firmę z bazą danych zawierającą tabele zamówień i klientów.
Pojedynczy klient może zakupić wiele zamówień, ale pojedynczego zamówienia nie można połączyć z wieloma klientami. W związku z tym tabela Orders zawierałaby klucz obcy odpowiadający kluczowi podstawowemu tabeli Customers, natomiast 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 łączyć wiele rekordów w innej tabeli. Na przykład nasza firma prawdopodobnie potrzebuje nie tylko klientów i tabel zamówień, ale prawdopodobnie również potrzebuje tabeli produktów.
Ponownie, relacja między tabelą Klienci i Zamówienia jest typu jeden-do-wielu, ale weź pod uwagę związek między tabelą Zamówienia i Produkty. Zamówienie może zawierać wiele produktów, a produkt może być powiązany z wieloma zamówieniami: kilku klientów może przesłać zamówienie zawierające niektóre z tych samych produktów. Ten rodzaj relacji wymaga co najmniej trzech tabel.
Co to są relacje baz danych 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, jeśli nie połączymy żadnych tabel za pomocą klucza obcego, a zamiast tego po prostu połączymy dane w tabelach Kursy i Nauczyciele, na przykład:
| Teacher_ID | Imię nauczyciela | Kierunek |
|---|---|---|
| Teacher_001 | Carmen | Biologia, matematyka |
| Teacher_002 | Veronica | Matematyka |
| Teacher_003 | Jorge | język angielski |
Ten projekt jest nieelastyczny i narusza pierwszą zasadę normalizacji baz danych, pierwszą normalną formę (1NF), która stwierdza, że każda komórka tabeli powinna zawierać pojedynczy, dyskretny kawałek danych.
A może zdecydowaliśmy się po prostu dodać drugi rekord dla Carmen, aby wymusić 1NF:
| Teacher_ID | Imię nauczyciela | Kierunek |
|---|---|---|
| Teacher_001 | Carmen | Biologia |
| Teacher_001 | Carmen | Matematyka |
| Teacher_002 | Veronica | Matematyka |
| Teacher_003 | Jorge | język angielski |
Jest to nadal słaby projekt, wprowadzający niepotrzebne duplikowanie i to, co się nazywa 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 dane wymagają edycji, ale osoba dokonująca edycji danych nie zdaje sobie sprawy, że istnieje wiele rekordów? Tabela zawierałaby wówczas różne dane dla tej samej osoby, bez wyraźnego sposobu jej identyfikacji lub uniknięcia.
Podział tej tabeli na dwie tabele, Nauczyciele i Kursy (jak pokazano powyżej), tworzą właściwą relację między danymi, a tym samym pomagają zapewnić spójność i dokładność danych.




