Pojęcia dotyczące bazy danych relacyjne i relacje opisują sposób, w jaki dane w tabelach są połączone. Relacyjna baza danych składa się z serii dwóch lub więcej tabel połączonych określonym kluczem. Relacyjna baza danych różni się od nieustrukturyzowanych baz danych, które są powszechne w inicjatywach dotyczących dużych zbiorów danych. Relacyjne bazy danych zwykle wymagają ścisłych reguł dotyczących definiowania tabel i określania prawidłowej relacji między tabelami.
Rodzaje relacji z bazami danych
Relacje umożliwiają opisywanie połączeń między tabelami bazy danych w bardzo efektywny sposób. Relacje te można następnie wykorzystać do wykonywania zaawansowanych zapytań między tabelami, znanych jako JOIN.
Istnieją trzy typy relacji bazy danych, każdy nazwany zgodnie z liczbą wierszy tabeli zaangażowanych w relację. Każdy z tych trzech typów relacji istnieje między dwiema tabelami.
- Relacje jeden-do-jednego występują, gdy każdy wpis w pierwszej tabeli ma tylko jeden odpowiednik w drugiej tabeli. Relacje jeden-do-jednego są rzadko używane, ponieważ często bardziej wydajne jest umieszczenie wszystkich informacji w jednej tabeli. Niektórzy projektanci baz danych korzystają z tej relacji, tworząc tabele zawierające podzbiór danych z innej tabeli.
- Relacje jeden-do-wielu są najczęstszym typem relacji bazy danych. Występują, gdy każdy rekord w Tabeli A odpowiada co najmniej jednemu rekordowi w Tabeli B, ale każdy rekord w Tabeli B odpowiada tylko jednemu rekordowi w Tabeli A. Na przykład związek między tabelą Nauczyciele a tabelą Uczniowie w szkole podstawowej baza danych prawdopodobnie byłaby relacją jeden-do-wielu, ponieważ każdy uczeń ma tylko jednego nauczyciela, ale każdy nauczyciel ma kilku uczniów. Ten projekt typu jeden-do-wielu pomaga wyeliminować duplikaty danych.
- Relacje wiele-do-wielu występują, gdy każdy rekord w Tabeli A odpowiada jednemu lub większej liczbie rekordów w Tabeli B, a każdy rekord w Tabeli B odpowiada jednemu lub większej liczbie rekordów w Tabeli A. Na przykład, relacja między tabelą Nauczyciele a tabelą Kursy byłaby prawdopodobnie „wielu do wielu”, ponieważ każdy nauczyciel może prowadzić więcej niż jeden kurs, a każdy kurs może mieć więcej niż jednego instruktora.
Dolna linia
Relacje odwołujące się do siebie występują, gdy w grę wchodzi tylko jedna tabela. Jednym z typowych przykładów jest tabela Pracownicy, która zawiera informacje o przełożonych każdego pracownika. Każdy przełożony jest jednocześnie pracownikiem i ma przełożonego. W takim przypadku istnieje relacja jeden-do-wielu z samoodniesieniem, ponieważ każdy pracownik ma jednego przełożonego, ale każdy przełożony może mieć więcej niż jednego pracownika.
Tworzenie relacji za pomocą kluczy obcych
Tworzysz relacje między tabelami, określając klucz obcy. Ten klucz informuje relacyjną bazę danych, w jaki sposób tabele są powiązane. W wielu przypadkach kolumna w Tabeli A zawiera klucze podstawowe, do których odwołuje się Tabela B.
Rozważmy przykład tabel nauczycieli i uczniów. Tabela Nauczyciele zawiera identyfikator, imię i nazwisko oraz kolumnę kursu:
ID instruktora | Nazwa_nauczyciela | Kurs |
001 | Jan Kowalski | Angielski |
002 | Jane Schmoe | Matematyka |
Tabela Studenci zawiera identyfikator, nazwisko i kolumnę klucza obcego:
ID Studenta | Nazwa studenta | Nauczyciel_FK |
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
Kolumna Teacher_FK w tabeli Studenci odwołuje się do wartości klucza podstawowego instruktora w tabeli Nauczyciele. Często projektanci baz danych używają PK lub FK w nazwie kolumny, aby zidentyfikować kolumnę klucza podstawowego lub klucza obcego.
Te dwie tabele ilustrują relację jeden-do-wielu między nauczycielami a uczniami.
Relacje i integralność referencyjna
Po dodaniu klucza obcego do tabeli utwórz ograniczenie bazy danych, które wymusza integralność referencyjną między dwiema tabelami. Ten krok zapewnia spójność relacji między tabelami. Gdy jedna tabela ma klucz obcy do innej tabeli, integralność referencyjna wymaga, aby każda wartość klucza obcego w Tabeli B odwoływała się do istniejącego rekordu w Tabeli A.
Wdrażanie relacji
W zależności od bazy danych możesz zaimplementować relacje między tabelami na różne sposoby. Program Microsoft Access udostępnia kreatora, który umożliwia łączenie tabel, a także wymuszanie integralności referencyjnej.
Jeśli piszesz bezpośrednio SQL, najpierw utwórz tabelę Nauczyciele, deklarując kolumnę ID jako klucz podstawowy:
CREATE TABLE Nauczyciele (InstructorID INT AUTO_INCREMENT PRIMARY KEY, Nazwa_nauczyciela VARCHAR(100), Kurs VARCHAR(100));
Kiedy tworzysz tabelę Uczniowie, deklarujesz kolumnę Teacher_FK jako klucz obcy odwołujący się do kolumny InstructorID w tabeli Nauczycieli:
CREATE TABLE Uczniowie (StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR(100), Teacher_FK INT, FOREIGN KEY (Teacher_FK) REFERENCJE Nauczyciele(InstructorID)));
Wykorzystywanie relacji do łączenia stołów
Po utworzeniu jednej lub więcej relacji w bazie danych wykorzystaj ich moc, używając zapytań SQL JOIN do łączenia informacji z wielu tabel. Najpopularniejszym typem sprzężenia jest SQL INNER JOIN, który jest prostym sprzężeniem. Ten typ złączenia zwraca wszystkie rekordy, które spełniają warunek złączenia z jednej lub więcej tabel.
Na przykład, ten warunek JOIN zwraca Nazwisko_Ucznia, Nazwisko_Nauczyciela i Kurs, gdzie klucz obcy w tabeli Uczniowie odpowiada kluczowi podstawowemu w tabeli Nauczyciele:
SELECT Uczniowie. Nazwa_ucznia, Nauczyciele. Nazwa_nauczyciela, Nauczyciele. Kurs
FROM Uczniowie
INNER JOIN NauczycieleON Uczniowie. Nauczyciel_FK=Nauczyciele. ID instruktora;
Ta instrukcja tworzy tabelę podobną do tej:
Nazwisko_ucznia | Nazwa_nauczyciela | Kurs |
Lowell Smith | Jan Kowalski | Angielski |
Brian Short | Jan Kowalski | Angielski |
Corky Mendez | Jane Schmoe | Matematyka |
Monica Jones | Jan Kowalski | Angielski |