Ú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.

Podnikatelé mluví, probírají data na notebooku v konferenční místnosti setkání

Hero Images / Getty Images

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