El poder de les tecles estrangeres en bases de dades relacionals

Una clau externa obre la porta a un món sencer de dades

Els dissenyadors de bases de dades fan un ampli ús de les claus quan es desenvolupen bases de dades relacionals. Entre les més freqüents, aquestes tecles són claus primàries i claus estrangeres. Una clau externa de base de dades és un camp en una taula relacional que coincideix amb la columna de clau principal d'una altra taula. Per comprendre com funciona una clau externa, fem una ullada a la idea d'una base de dades relacional.

Alguns fonaments bàsics de bases de dades relacionals

En una base de dades relacional, les dades s'emmagatzemen en taules que contenen files i columnes, fent que sigui fàcil de cercar i manipular. Hi ha algunes matemàtiques serioses darrere del concepte d'una base de dades relacional (àlgebra relacional, proposta per EF

Codd a IBM el 1970), però aquest no és el tema d'aquest article.

Per a propòsits pràctics (i no matemàtics), una base de dades relacional emmagatzema dades "relacionades" en files i columnes. A més, i aquí és on es posa interessant, la majoria de les bases de dades estan dissenyades perquè les dades d'una taula puguin accedir a les dades d'una altra taula. Aquesta capacitat de crear relacions entre taules és el poder real d'una base de dades relacional.

Ús de claus externes

La majoria de les taules, especialment aquelles en bases de dades grans i complexes, tenen claus principals. Les taules que estan dissenyades per accedir a altres taules també han de tenir una clau externa.

Per utilitzar la base de dades Northwinds que es cita habitualment, aquí teniu un extracte d'una taula de productes:

El extracte de la taula de productes de la base de dades Northwind
ProductID Nom del producte Categoria ID QuantitatPerU Preu unitari
1 Chai 1 10 caixes x 20 bosses 18.00
2 Chang 1 Ampolles de 24 a 12 oz 19.00
3 Xarop anisat 2 12 ampolles de 550 ml 10.00
4 Chef Anton's Cajun Seasoning 2 48 - pots de 6 oz 22.00
5 Chef Anton's Gumbo Mix 2 36 caixes 21.35
6 Ànim de Boysenberry Spread 2 12 - pots de 8 oz 25.00
7 Pears seques orgàniques del tio Bob 7 12 - 1 lb pkgs. 30.00

La columna ProductID és la clau principal d'aquesta taula. Assigna una ID única a cada producte.

Aquesta taula també conté una columna de clau externa, categoria ID . Cada producte de la taula del producte es vincula a una entrada de la taula Categories que defineix la categoria de producte.

Tingueu en compte aquest extracte de la taula de categories de la base de dades:

Extracte de la taula de categories de Northwind Database
Categoria ID CategoriaName Descripció
1 Begudes Refrescs, cafès, tes, cerveses i ales
2 Condiments Salses dolces i salades, condiments, espècies i condiments
3 Confections Postres, caramels i pans dolços
5 Productes làctics Formatges

The column CategoryID és la clau principal d'aquesta columna. (No té clau externa perquè no necessita accés a una altra taula). Totes les claus estrangeres a la taula del producte es connecten a una clau principal a la taula Categories. Per exemple, el producte Chai se li assigna una categoria "Begudes", mentre que el xarop anís està en la categoria condiments.

Aquest tipus d'enllaç crea una infinitat de formes d'utilitzar i reutilitzar dades en una base de dades relacional.