Unha clave estranxeira abre a porta a un mundo enteiro de datos
Os deseñadores de bases de datos utilizan amplamente as teclas ao desenvolver bases de datos relacionales. Entre as máis comúns destas claves están as teclas primarias e as teclas estranxeiras. A chave estranxeira de base de datos é un campo dunha táboa relacional que coincide coa columna de chave primaria dunha outra táboa. Para entender como funciona unha chave estranxeira, vexamos máis de cerca a idea dunha base de datos relacional.
Algúns principios básicos de bases de datos relacionales
Nunha base de datos relacional, os datos almacénanse en táboas que conteñen filas e columnas, facilitando a busca e manipulación. Hai algunhas matemáticas serias detrás do concepto dunha base de datos relacional (álxebra relacional, proposta por EF
Codd en IBM en 1970), pero ese non é o tema deste artigo.
Para fins prácticos (e non matemáticos), unha base de datos relacional almacena datos "relacionados" en filas e columnas. Ademais, e aquí é onde se fai interesante, a maioría das bases de datos están deseñadas para que os datos dunha táboa poidan acceder aos datos noutra táboa. Esta capacidade de crear relacións entre táboas é o verdadeiro poder dunha base de datos relacional.
Usar chaves estranxeiras
A maioría das táboas, especialmente aquelas en bases de datos grandes e complexas, teñen teclas primarias. As táboas que están deseñadas para acceder a outras táboas tamén deben ter unha chave estranxeira.
Para usar a base de datos Northwinds comúnmente citada, aquí tes un fragmento dunha táboa de produtos:
ProdutoID | ProdutoName | CategoríaID | CantidadePerU | Prezo por unidade |
---|---|---|---|---|
1 | Chai | 1 | 10 caixas x 20 bolsas | 18.00 |
2 | Chang | 1 | Botellas de 24 a 12 oz | 19.00 |
3 | Xarope anisado | 2 | Botellas de 12 a 550 ml | 10.00 |
4 | Chef Anton's Cajun Seasoning | 2 | 48 - 6 botes de onza | 22.00 |
5 | Chef Anton's Gumbo Mix | 2 | 36 caixas | 21.35 |
6 | Grandes Girlenberry Spread | 2 | 12 - jarras de ocho onzas | 25.00 |
7 | Peras secas orgánicas do tio Bob | 7 | 12 - 1 lb pkgs. | 30.00 |
A columna ProductID é a clave principal desta táboa. Asigna un ID exclusivo a cada produto.
Esta táboa tamén contén unha columna de chave estranxeira, CategoríaID . Cada produto na táboa do produto vincúlase a unha entrada na táboa categorías que define a categoría do produto.
Nota este fragmento da táboa Categorías da base de datos:
CategoríaID | CategoryName | Descrición |
---|---|---|
1 | Bebidas | Refrescos, cafés, tés, cervexas e alas |
2 | Condimentos | Salsas doces e saborosas, saborosas, comestibles e condimentos |
3 | Confections | Sobremesas, doces e panaditas |
5 | Productos lácteos | Queixos |
A categoría categoríaID é a clave principal desta columna. (Non ten chave estranxeira porque non ten necesidade de acceder a outra táboa). Todas as chaves estranxeiras na táboa do produto enlazan a unha chave primaria na táboa Categorías. Por exemplo, o produto Chai ten asignada unha categoría "Bebidas", mentres que o xarope anís está na categoría condimentos.
Este tipo de ligazón crea unha infinidade de formas de usar e reutilizar datos nunha base de datos relacional.