Úvod do databázových vztahů
Podmínky databáze vztahový 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 výkonnými způsoby. Tyto vztahy lze následně využít k provádění výkonných dotazů napříč tabulkami, známých jako JOINy.
Existují tři typy databázových vztahů, každý pojmenován podle počtu řádků tabulky zapojených do vztahu. Každý z těchto tří typů vztahů existuje mezi dvěma tabulkami.
-
Vztahy jeden k jednomu 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 k vytváření tabulek, které obsahují podmnožinu dat z jiné tabulky.
- Vztahy jeden k mnoha jsou nejběžnějším typem databázového vztahu. 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 v databázi základní školy pravděpodobně jde o vztah jeden k mnoha, protože každý student má pouze jednoho učitele, ale každý učitel jich 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ž jeden instruktor.
Sebeodkazovací vztahy: Zvláštní případ
Vztahy s odkazem na sebe nastanou, když je zapojena 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ě se jedná o 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 vytvoříte zadáním a cizí klíč. 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.
Zvažte příklad tabulek Učitelé a Studenti. Tabulka Učitelé obsahuje ID, název a sloupec kurzu:
ID instruktora | Jméno učitele | Kurs |
001 | John Doe | Angličtina |
002 | Jane Schmoe | Matematika |
Tabulka Studenti obsahuje sloupec ID, jméno a cizí klíč:
ID studenta | Jméno studenta | Učitel_FK |
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jonesová | 001 |
Sloupec Učitel_FK v tabulce Studenti odkazuje na primární klíč hodnotu 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 omezení databáze, 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 budete vztahy mezi tabulkami implementovat různými způsoby. Aplikace Microsoft Access poskytuje průvodce který umožňuje propojovat tabulky a také vynucovat 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 PRIMÁRNÍ KLÍČ,
Učitel_Jméno VARCHAR(100),
Kurz VARCHAR(100)
);
Když vytvoříte tabulku Studenti, deklarujete sloupec Teacher_FK jako cizí klíč odkazující na sloupec InstructorID v tabulce Učitelé:
VYTVOŘIT TABULKU Studenti (
ID studenta INT AUTO_INCREMENT PRIMÁRNÍ KLÍČ,
Jméno studenta VARCHAR(100), Učitel_FK INT,
CIZÍ KLÍČ (Teacher_FK) REFERENCE Učitelé (ID instruktora) )
);
Použití vztahů ke spojení tabulek
Po vytvoření jednoho nebo více vztahů v databázi využijte jejich výkon 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é:
VYBERTE studenty. Jméno studenta, Učitelé. Učitel_Jméno, Učitelé. Kurs
OD Studentů
INNER JOIN Učitelé
ON Studenti. Teacher_FK=Učitelé. ID instruktora;
Tento příkaz vytvoří tabulku něco jako toto:
Jméno studenta | Jméno učitele | Kurs |
Lowell Smith | John Doe | Angličtina |
Brian Short | John Doe | Angličtina |
Corky Mendez | Jane Schmoe | Matematika |
Monica Jonesová | John Doe | Angličtina |