Databázové termíny relační a vztah popisují způsob propojení dat v tabulkách. Relační databáze se skládá ze série dvou nebo více tabulek propojených specifickým klíčem. Relační databáze se liší od nestrukturovaných databází, které jsou běžné v iniciativách velkých dat. Relační databáze obvykle vyžadují přísná pravidla o tom, jak jsou tabulky definovány a co tvoří platný vztah mezi tabulkami.
Typy databázových vztahů
Vztahy vám umožňují popsat spojení mezi databázovými tabulkami účinnými způsoby. Tyto vztahy lze následně využít k provádění výkonných dotazů napříč tabulkami, známých jako JOINs.
Existují tři typy databázových vztahů, každý pojmenován podle počtu řádků tabulky zahrnutých ve vztahu. Každý z těchto tří typů vztahů existuje mezi dvěma tabulkami.
- Vztahy jedna ku jedné nastanou, když každý záznam v první tabulce má pouze jeden protějšek ve druhé tabulce. Vztahy jedna ku jedné se používají zřídka, protože je často efektivnější umístit všechny informace do jediné tabulky. Někteří návrháři databází využívají tohoto vztahu tím, že vytvářejí tabulky, které obsahují podmnožinu dat z jiné tabulky.
- Vztahy jedna k mnoha jsou nejběžnějším typem databázových vztahů. Vyskytují se, když každý záznam v tabulce A odpovídá jednomu nebo více záznamům v tabulce B, ale každý záznam v tabulce B odpovídá pouze jednomu záznamu v tabulce A. Například vztah mezi tabulkou Učitelé a tabulkou Studenti na základní škole databáze by pravděpodobně byla vztahem jedna k mnoha, protože každý student má pouze jednoho učitele, ale každý učitel má několik studentů. Tento design one-to-many pomáhá eliminovat duplicitní data.
- Vztahy mnoho k mnoha nastanou, když každý záznam v tabulce A odpovídá jednomu nebo více záznamům v tabulce B a každý záznam v tabulce B odpovídá jednomu nebo více záznamům v tabulce A. Například vztah mezi tabulkou Učitelé a tabulkou Kurzy bude pravděpodobně mnoho k mnoha, protože každý učitel může vyučovat více než jeden kurz a každý kurz může mít více než jednoho instruktora.
Sečteno podtrženo
Vztahy s vlastním odkazem nastávají, když je zahrnuta pouze jedna tabulka. Jedním z běžných příkladů je tabulka Zaměstnanci, která obsahuje informace o nadřízeném každého zaměstnance. Každý vedoucí je zároveň zaměstnancem a má svého nadřízeného. V tomto případě existuje vztah jeden k mnoha, protože každý zaměstnanec má jednoho nadřízeného, ale každý nadřízený může mít více než jednoho zaměstnance.
Vytváření vztahů s cizími klíči
Vztahy mezi tabulkami vytváříte zadáním cizího klíče. Tento klíč říká relační databázi, jak spolu tabulky souvisí. V mnoha případech obsahuje sloupec v tabulce A primární klíče, na které se odkazuje z tabulky B.
Vezměte si příklad tabulek Učitelé a Studenti. Tabulka Učitelé obsahuje ID, jméno a sloupec kurzu:
ID instruktora | Teacher_Name | Kurz |
001 | John Doe | angličtina |
002 | Jane Schmoe | Math |
Tabulka Studenti obsahuje sloupec ID, jméno a cizí klíč:
StudentID | Student_Name | Teacher_FK |
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
Sloupec Teacher_FK v tabulce Studenti odkazuje na hodnotu primárního klíče instruktora v tabulce Učitelé. Návrháři databází často používají PK nebo FK v názvu sloupce k identifikaci sloupce primárního klíče nebo cizího klíče.
Tyto dvě tabulky ilustrují vztah jedna k mnoha mezi učiteli a studenty.
Vztahy a referenční integrita
Po přidání cizího klíče do tabulky vytvořte databázové omezení, které vynucuje referenční integritu mezi dvěma tabulkami. Tento krok zajistí, že vztahy mezi tabulkami zůstanou konzistentní. Když má jedna tabulka cizí klíč k jiné tabulce, referenční integrita vyžaduje, aby jakákoli hodnota cizího klíče v tabulce B odkazovala na existující záznam v tabulce A.
Implementace vztahů
V závislosti na vaší databázi implementujete vztahy mezi tabulkami různými způsoby. Microsoft Access poskytuje průvodce, který vám umožní propojit tabulky a také vynutit referenční integritu.
Pokud píšete SQL přímo, nejprve vytvořte tabulku Učitelé a deklarujte sloupec ID jako primární klíč:
CREATE TABLE Učitelé (ID instruktora INT AUTO_INCREMENT PRIMARY KEY, Jméno učitele VARCHAR(100), Kurz VARCHAR(100));
Při vytváření tabulky Studenti deklarujete sloupec Teacher_FK jako cizí klíč odkazující na sloupec InstructorID v tabulce Učitelé:
CREATE TABLE Studenti (StudentID INT PRIMÁRNÍ KLÍČ AUTO_INCREMENT, Student_Name VARCHAR(100), Teacher_FK INT, CIZÍ KLÍČ (Učitel_FK) INSTRUKCE) REFERENCES);
Používání vztahů k připojení ke stolům
Po vytvoření jednoho nebo více vztahů v databázi využijte jejich sílu pomocí SQL JOIN dotazů ke kombinaci informací z více tabulek. Nejběžnějším typem spojení je SQL INNER JOIN, což je jednoduché spojení. Tento typ spojení vrátí všechny záznamy, které splňují podmínku spojení z jedné nebo více tabulek.
Například tato podmínka JOIN vrátí Student_Name, Teacher_Name a Course, kde cizí klíč v tabulce Studenti odpovídá primárnímu klíči v tabulce Učitelé:
SELECT Students. Student_Name, Teachers. Teacher_Name, Teachers. Course
FROM Students
INNER JOIN TeachersON Students. Teacher_FK=Učitelé. ID instruktora;
Tento příkaz vytvoří tabulku přibližně jako tato:
Student_Name | Teacher_Name | Kurz |
Lowell Smith | John Doe | angličtina |
Brian Short | John Doe | angličtina |
Corky Mendez | Jane Schmoe | Math |
Monica Jones | John Doe | angličtina |