Zahraniční klíč otevírá dveře do celého světa dat
Návrháři databáze vytvářejí při vytváření relačních databází široké využití klíčů. Mezi nejčastější z těchto klíčů patří primární klíče a cizí klíče. Cizí klíč v databázi je pole relační tabulky, které odpovídá sloupci primárního klíče jiné tabulky. Abychom pochopili, jak funguje cizí klíč, podívejme se blíže na myšlenku relační databáze.
Některé základy relačních databází
V relační databázi jsou data uložena v tabulkách obsahujících řádky a sloupce, což usnadňuje vyhledávání a manipulaci. Existuje nějaká vážná matematika za koncepcí relační databáze (relační algebra, navržená EF
Codd v IBM v roce 1970), ale to není téma tohoto článku.
Pro praktické účely (a pro nematematiky) relační databáze ukládají "související" data do řádků a sloupců. Dále - a tady je to zajímavé - většina databází je navržena tak, aby data v jedné tabulce měly přístup k datům v jiné tabulce. Tato schopnost vytvářet vztahy mezi tabulkami je skutečnou silou relační databáze.
Použití cizích klíčů
Většina tabulek, zejména ve velkých, složitých databázích, má primární klíče. Tabulky, které jsou určeny pro přístup k jiným tabulkám, musí mít také cizí klíč.
Chcete-li použít běžně citovanou databázi Northwinds, je zde výňatek z produktové tabulky:
ProductID | Jméno výrobku | ID kategorie | QuantityPerU | Jednotková cena |
---|---|---|---|---|
1 | Chai | 1 | 10 krabiček x 20 sáčků | 18.00 |
2 | Chang | 1 | 24 - 12 oz lahví | 19.00 |
3 | Anýzový sirup | 2 | 12 - 550 ml lahví | 10.00 |
4 | Šéfkuchař Anton Cajun koření | 2 | 48 - 6 oz džbánů | 22.00 |
5 | Šéfkuchař Anton's Gumbo Mix | 2 | 36 krabic | 21,35 |
6 | Grandma Boysenberry Spread | 2 | 12 - 8 oz džbánů | 25.00 |
7 | Strýc Bob je organické sušené hrušky | 7 | 12 - 1 lb pkgs. | 30.00 |
Sloupec ProductID je primární klíč této tabulky. Každému produktu přidělí jedinečné ID.
Tato tabulka také obsahuje sloupec cizího klíče, identifikátor kategorie . Každý produkt v tabulce Produkt odkazuje na položku v tabulce Kategorie, která definuje kategorii produktu.
Poznamenejte si tento výňatek z tabulky kategorií databáze:
ID kategorie | Název Kategorie | Popis |
---|---|---|
1 | Nápoje | Nealkoholické nápoje, kávy, čaje, piva a chobotnice |
2 | Koření | Sladké a slané omáčky, koření, nádivky a koření |
3 | Konfekce | Dezerty, bonbóny a sladké pečivo |
5 | Mléčné výrobky | Sýry |
Sloupec CategoryID je primární klíč tohoto sloupce. (Nemá žádný cizí klíč, protože není třeba přistupovat k jiné tabulce.) Každý cizí klíč v tabulce Produkt odkazuje na primární klíč v tabulce Kategorie. Například produkt Chai je přiřazen kategorii "nápoje", zatímco sirup z anýzu je v kategorii "Koření".
Tento druh propojení vytváří nesčetné množství způsobů využití a opětovného použití dat v relační databázi.