este artículo le enseñará la diferencia entre una clave primaria y una clave externa. Este artículo también le enseñará por qué ambas claves son importantes cuando se trata del mantenimiento de una estructura de base de datos relacional.
Todos los ejemplos de esta lección se basan en Microsoft SQL Server Management Studio y la base de datos AdventureWorks2012. Puede comenzar a usar estas herramientas gratuitas utilizando mi guía Introducción a SQL Server.
¿Cuál es la diferencia entre una clave primaria y una clave foránea?,
antes de que podamos profundizar en la diferencia, primero exploremos las características clave primarias y foráneas. Comencemos por aprender sobre las claves primarias.
claves primarias
para que una tabla califique como tabla relacional, debe tener una clave primaria.
la clave principal consiste en una o más columnas cuyos datos contenidos dentro se utilizan para identificar de forma única cada fila de la tabla. Puedes pensar en ellos como una dirección. Si las filas de una tabla eran buzones, entonces la clave principal sería la lista de direcciones.,
Cuando una clave primaria se compone de varias columnas, los datos de cada columna se utilizan para determinar si una fila es única.
para ser una clave primaria, varias condiciones deben ser verdaderas. Primero, como mencionamos, las columnas deben ser únicas. Para aclarar, nos referimos a los datos dentro de las filas, no a los nombres de las columnas. Además, ningún valor en las columnas puede ser en blanco o nulo.
al definir una tabla se especifica la clave principal. Una tabla tiene solo una clave primaria, y su definición es obligatoria.
la clave principal de cada tabla se almacena en un índice., El índice se utiliza para hacer cumplir el requisito de unicidad. También facilita que los valores de clave foránea se refieran a los valores de clave primaria correspondientes, como aprenderemos en la siguiente sección.
claves foráneas
una clave foránea es un conjunto de una o más columnas en una tabla que se refiere a la clave principal en otra tabla. No hay ningún código especial, configuraciones o definiciones de tabla que necesite colocar para «designar» oficialmente una clave foránea.
en el diagrama de abajo mira la tabla SalesOrderHeader. La columna SalesOrderHeader.,CurrencyRateID es una clave foránea ya que está relacionada con el CurrencyRate.CurrencyRateID. Esta columna currency rate.CurrencyRateID es la clave principal de la currency rate tabla.
Claves externas como Parte de las Primarias
Buscar en el siguiente diagrama. ¿Qué columna es la clave foránea?
Si usted dijo que era PersonPhone.,Negocios, entonces tienes razón. La razón por la que es una clave foránea es que se refiere a una clave primaria, Person.Negocios, en la otra mesa.
coincidentemente, PersonPhone.BusinessEntityID no es solo una clave externa, sino que también es parte de la clave principal de PersonPhone. La clave principal de la tabla PersonPhone es la combinación de BusinessEntityID, PhoneNumber y PhoneNumberTypeID.
estoy de acuerdo en que esto es confuso, pero está permitido y no es una mala práctica.
a diferencia de las claves primarias, las claves foráneas pueden contener valores duplicados. Además, está bien que contengan valores nulos.,
los índices no se crean automáticamente para las claves foráneas; sin embargo, como DBA, puede definirlos.
Se permite que una tabla contenga más de una clave foránea. En la tabla PersonPhone puede encontrar la otra clave foránea (consulte la respuesta al final del artículo)?
encontrar claves primarias y foráneas en el Explorador de objetos
Cuando utilice SSMS encontrará todo tipo de información útil en el Explorador de objetos. Usted no tiene que cavar profundo para encontrar las claves principales. Cuando muestra las columnas de una tabla, pero hace clic en la carpeta columnas, las columnas de clave primaria tienen claves doradas junto a ellas.,
Además, si alguna de las claves foráneas está definida en las restricciones de clave foránea, que aprenderemos en la siguiente sección, entonces esas columnas tienen FK tras ellos. Estos están marcados en verde en el diagrama anterior.
restricciones de clave foránea
algunos sistemas de gestión de bases de datos, como SQL Server, permiten configurar restricciones de clave foránea. Estos ayudan a reforzar la integridad referencial., En su forma más simple, una restricción de clave foránea le impide ingresar valores que no se encuentran en la clave principal de la tabla relacionada.
Usando el primer diagrama como nuestro ejemplo, no puede ingresar el SalesOrderHeader.CurrencyRateID si no existe ya en el currency rate tabla.
estas restricciones entran en vigor de varias maneras:
- le impiden cambiar el valor de la clave foránea a uno que no existe como valor en la clave primaria de la tabla relacionada.
- le impiden eliminar una fila de la tabla de claves principales. Esto le impide crear registros huérfanos., Los registros huérfanos se describen como » registros de niños sin padres.»
- le impiden agregar un valor de clave foránea que no existe en la clave principal.
En resumen, las restricciones refuerzan la relación entre las tablas de clave primaria y foránea.
comparación de claves primarias con claves foráneas
para resumir aquí hay una comparación de claves primarias con claves foráneas
respuesta a la pregunta: anteriormente le pedimos que identifique la otra clave foránea en la tabla PersonPhone. La respuesta correcta es PhoneNumberTypeID.
Deja una respuesta