Un dos conceptos máis importantes nas bases de datos é crear relacións entre táboas de bases de datos. Estas relacións proporcionan un mecanismo para vincular os datos almacenados en varias táboas e recuperalo de forma eficiente. Para crear unha ligazón entre dúas táboas, debes especificar unha chave estranxeira nunha táboa que fai referencia a unha columna noutra táboa.
Mesas e Relacións de Base de Datos
É posible que xa saiba que as bases de datos son simplemente unha serie de táboas , semellantes ás que podería empregar nun programa de follas de cálculo , como Microsoft Excel. De feito, incluso podes converter unha folla de cálculo Excel nunha base de datos. No caso de que as bases de datos difiren das follas de cálculo, non obstante, é cando se trata de construír poderosas relacións entre táboas.
Considere, por exemplo, unha base de datos utilizada por unha empresa para rastrexar a información de recursos humanos. Esa base de datos pode ter unha táboa chamada Empleados que contén a seguinte información para cada membro do persoal da compañía:
- ID de empregado
- Nome
- Apelido
- OfficePhone
- Teléfono de casa
- Posición ID
Neste exemplo, a ID de empregado é un enteiro xerado de forma exclusiva asignado a cada empregado cando se engade á base de datos. A ID de posición é un código de traballo usado para facer referencia á posición do empregado na empresa. Neste esquema, un empregado só pode ter unha posición, pero varios (ou non) empregados poden encher cada posición. Por exemplo, podes ter centos de empregados cunha posición de "Caixeiro".
A base de datos tamén pode conter unha táboa chamada Posicións coa seguinte información adicional sobre cada posición:
- Posición ID
- Título
- JobLevel
- Categoría de habilidade
- Localización
O campo Identidade de posición nesta táboa é similar ao campo ID de empregado na táboa Empregados: é un enteiro xerado de forma única que se crea cando se engade unha posición á base de datos.
Cando imos tirar unha lista de empregados da base de datos, sería natural solicitar o nome e o título de cada persoa. Non obstante, esta información almacénase en varias táboas de bases de datos, polo que só pode recuperarse mediante unha consulta JOIN que require unha relación existente entre as táboas.
Cando mires a estrutura das táboas, o campo que define a relación é evidente: o campo ID da posición. Cada empregado pode ter só unha posición e esa posición é identificada incluíndo o ID de posición da entrada correspondente da táboa Posicións. Ademais de ser a chave primaria para a táboa de posicións, neste exemplo, o campo ID de posición tamén é unha chave estranxeira da táboa dos empregados na táboa de posicións. A base de datos pode entón usar este campo para correlacionar a información de varias táboas e garantir que os cambios ou adicións á base de datos continúen impoñendo a integridade referencial .
Unha vez que identificou a chave estranxeira, pode seguir adiante e tirar a información desexada da base de datos mediante a seguinte consulta:
Crear chaves estrañas no servidor SQL
Técnicamente, non precisa definir a relación explícitamente para poder realizar consultas como a anterior. Non obstante, se define de forma explícita a relación usando unha restrición de chave estranxeira, a base de datos poderá realizar un traballo de limpeza para ti:
- Cando engade un novo rexistro na táboa dos empregados, a base de datos asegurarase de que a ID de posición que ingrese sexa unha clave primaria válida na táboa de posicións.
- Se cambia un ID de posición na táboa de posicións, a base de datos pode realizar as actualizacións necesarias na táboa Empregados para preservar a coherencia.
- A base de datos pode protexerse contra o impacto dunha eliminación dunha posición da táboa de posición ou rexeitarse a eliminar unha posición coas entradas de empregados correspondentes ou realizar unha eliminación en cadea de datos de todos os empregados relacionados.
Vexa como crearía a chave estranxeira en SQL Server:
ALTER TABLE Empregados ADD KEY EXTERIOR (PositionID) REFERENCIAS Posicións (PositionID)Tamén pode crear unha chave estranxeira cando crea unha táboa engadindo a cláusula:
REFERENCIAS DE CLAVE EXTERIOR Posicións (PositionID)ao final da definición da columna para a columna da chave estranxeira.