Termin bazy danych "relacyjny" lub "relacja" opisuje sposób, w jaki dane w tabelach są połączone.
Nowo przybyli do świata baz danych często mają problemy z dostrzeganiem różnicy między bazą danych a arkuszem kalkulacyjnym. Widzą tabele danych i uznają, że bazy danych umożliwiają porządkowanie i wyszukiwanie danych w nowy sposób, ale nie potrafią zrozumieć znaczenia relacje między danymi które nadają technologii relacyjnej bazie danych swoją nazwę.
Relacje umożliwiają wydajne opisywanie połączeń między różnymi tabelami bazy danych. Zależności te można następnie wykorzystać do wydajnych zapytań między tabelami, zwanych połączeniami.
Rodzaje relacji z bazami danych
Istnieją trzy różne typy relacji z bazami danych, każda nazwana w zależności od liczby wierszy tabeli, które mogą być powiązane z relacją. Każdy z tych trzech typów relacji istnieje między dwiema tabelami.
- Relacje jeden-do-jednego występuje, gdy każdy wpis w pierwszej tabeli ma jeden, i tylko jeden, odpowiednik w drugiej tabeli. Relacje jeden-do-jednego są rzadko używane, ponieważ często łatwiej jest po prostu umieścić wszystkie informacje w jednej tabeli. Niektórzy projektanci baz danych wykorzystują tę relację, tworząc tabele zawierające podzestaw danych z innej tabeli.
- Związki jeden-do-wielu są najczęstszym typem relacji z bazą danych. Występują, gdy każdy rekord w Tabeli A odpowiada jednemu lub więcej rekordom 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ą Nauczycieli a tabelą Uczniów w szkole podstawowej Baza danych byłaby prawdopodobnie relacją jeden do wielu, ponieważ każdy uczeń ma tylko jednego nauczyciela, ale każdy nauczyciel ma wielu uczniów. Ten jeden do wielu projektów pomaga wyeliminować powielone dane.
- Relacje wiele do wielu występuje, 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, związek pomiędzy tabelą Nauczyciele i Kursy byłby prawdopodobnie wiele- to-many, ponieważ każdy nauczyciel może instruować więcej niż jeden kurs, a każdy kurs może mieć więcej niż jednego instruktora.
Relacje oparte na samym sobie: szczególny przypadek
Relacje samoodwoływalne występują, gdy jest zaangażowana tylko jedna tabela. Typowym przykładem jest tabela Pracownicy zawierająca informacje na temat opiekuna każdego pracownika. Każdy przełożony jest również pracownikiem i ma własnego przełożonego. W tym przypadku istnieje relacja samoreferencyjna jeden do wielu, 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 z kluczami obcymi
Tworzysz relacje między tabelami, określając klucz obcy. Ten klucz informuje relacyjną bazę danych o powiązaniach tabel. W wielu przypadkach kolumna w tabeli A zawiera klucze podstawowe, do których odwołuje się tabela B.
Rozważ jeszcze raz przykład tabel Nauczyciele i uczniowie. Tabela nauczycieli zawiera tylko identyfikator, nazwę i kolumnę kursu:
InstructorID | Imię nauczyciela | Kierunek |
---|---|---|
001 | nieznany z nazwiska | język angielski |
002 | Jane Schmoe | Matematyka |
Tabela Uczniowie zawiera identyfikator, nazwę i kolumnę klucza obcego:
Legitymacja studencka | Student_Name | Teacher_FK |
---|---|---|
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
Kolumna Teacher_FK w tabeli Uczniowie odwołuje się do podstawowej wartości klucza instruktora w tabeli Nauczyciele.
Często projektanci baz danych używają "PK" lub "FK" w nazwie kolumny, aby łatwo zidentyfikować kolumnę klucza głównego lub klucz obcy.
Zwróć uwagę, że te dwie tabele ilustrują relację jeden-do-wielu między nauczycielami a uczniami.
Relacje i integralność referencyjna
Po dodaniu klucza obcego do tabeli można utworzyć ograniczenie bazy danych, które wymusza integralność referencyjną między dwiema tabelami. Zapewnia to spójność relacji między tabelami. Gdy jedna tabela ma klucz obcy do innej tabeli, pojęcie integralności referencyjnej stwierdza, że jakakolwiek wartość klucza obcego w tabeli B musi odnosić się do istniejącego rekordu w tabeli A.
Wdrażanie relacji
W zależności od bazy danych implementujesz relacje między tabelami na różne sposoby. Microsoft Access udostępnia kreator, który pozwala łatwo łączyć tabele i wymuszać integralność referencyjną.
Jeśli piszesz bezpośrednio SQL, musisz najpierw utworzyć tabelę Nauczyciele, deklarując kolumnę ID, która będzie kluczem podstawowym:
CREATE TABLE Nauczyciele (
InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR (100), Kurs VARCHAR (100));
Tworząc tabelę Uczniów, deklarujesz kolumnę Teacher_FK jako klucz obcy odnoszący się do kolumny InstructorID w tabeli Nauczycieli:
STWÓRZ TABELE Studentów ( StudentID INT AUTO_INCREMENT PRIMARY KEY, Nazwa studenta VARCHAR (100), Teacher_FK INT, ZAGRANICZNY KLUCZ (Teacher_FK) REFERENCJE Nauczyciele (InstructorID)))
;
Używanie relacji do łączenia tabel
Po utworzeniu jednej lub więcej relacji w bazie danych można wykorzystać ich moc, używając zapytań SQL JOIN do łączenia informacji z wielu tabel. Najczęstszym typem łączenia jest SQL INNER JOIN lub proste sprzężenie. Ten typ łączenia zwraca wszystkie rekordy spełniające warunek łączenia z wielu tabel.Na przykład ten warunek JOIN zwróci nazwę Student_Name, Teacher_Name i Course, gdzie klucz obcy w tabeli Studenci pasuje do klucza podstawowego w tabeli Nauczycieli:
SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.CourseOD studentówWEJŚCIE DO JOIN NauczycieleON Students.Teacher_FK = Teachers.InstructorID;
Ta instrukcja tworzy tabelę podobną do tej:
Zwrócona tabela z instrukcji SQL Join
Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathon Jones JonesJohn DoeEnglish