sql - secundarias - ¿Cuál es la diferencia entre una clave principal y una clave sustituta?
modelo relacional (6)
Creo que Michelle Poolet lo describe de una manera muy clara:
Una clave sustituta es un valor producido artificialmente, la mayoría de las veces un contador incrementado y administrado por el sistema cuyos valores pueden variar de 1 a n, donde n representa el número máximo de filas de una tabla. En SQL Server, crea una clave sustituta asignando una propiedad de identidad a una columna que tiene un tipo de datos numérico.
http://sqlmag.com/business-intelligence/surrogate-key-vs-natural-key
Por lo general, le ayuda a usar una clave sustituta cuando cambia una clave compuesta con una columna de identidad.
Busqué mucho en Google, pero no encontré la respuesta directa exacta con un ejemplo.
Cualquier ejemplo para esto sería más útil.
Este es un gran tratamiento que describe los distintos tipos de claves:
La clave principal es una clave única en su tabla que usted elige que identifica mejor un registro en la tabla. Todas las tablas deben tener una clave principal, porque si alguna vez necesita actualizar o eliminar un registro, debe saber cómo identificarlo de manera única.
Una clave sustituta es una clave generada artificialmente. Son útiles cuando sus registros esencialmente no tienen una clave natural (como una tabla de Person
, ya que es posible que dos personas nacidas en la misma fecha tengan el mismo nombre o registros en un registro, ya que es posible que ocurran dos eventos) Así ellos llevan la misma marca de tiempo). En la mayoría de los casos, verá que se implementan como enteros en un campo que se incrementa automáticamente o como GUID que se generan automáticamente para cada registro. Los números de identificación son casi siempre claves sustitutas.
Sin embargo, a diferencia de las claves primarias, no todas las tablas necesitan claves sustitutas. Si tiene una tabla que enumera los estados de América, no necesita un número de ID para ellos. Podría usar la abreviatura del estado como un código de clave principal.
La principal ventaja de la clave sustituta es que son fáciles de garantizar como únicas. La principal desventaja es que no tienen ningún significado. No tiene sentido que "28" sea Wisconsin, por ejemplo, pero cuando ve ''WI'' en la columna Estado de su tabla de Direcciones, sabe de qué estado está hablando sin tener que buscar qué estado es cuál en su estado mesa.
Todas las claves son identificadores utilizados como sustitutos de las cosas que identifican. EFCodd explicó el concepto de sustitutos asignados por el sistema de la siguiente manera [1]:
Los usuarios de la base de datos pueden hacer que el sistema genere o elimine un sustituto, pero no tienen control sobre su valor, ni tampoco se les muestra su valor.
Esto es lo que comúnmente se conoce como una clave sustituta. Sin embargo, la definición es inmediatamente problemática porque Codd suponía que el DBMS proporcionaría dicha característica. Los DBMS en general no tienen tal característica. Las claves normalmente son visibles para al menos algunos usuarios de DBMS, ya que, por razones obvias, tienen que serlo. Por lo tanto, el concepto de sustituto se ha modificado ligeramente en el uso. El término se usa generalmente en la profesión de gestión de datos para referirse a una clave que no se expone y se utiliza como un identificador en el dominio de negocios . Tenga en cuenta que esto no tiene nada que ver con cómo se genera la clave o qué tan "artificial" se percibe que es. Todas las llaves consisten en símbolos inventados por humanos o máquinas. Por lo tanto, el único significado posible del término sustituto se refiere a cómo se utiliza la clave, no cómo se crea o cuáles son sus valores.
[1] Ampliación del modelo relacional de la base de datos para capturar más significado, EFCodd, 1979
Una clave sustituta es un valor inventado con el único propósito de identificar de forma única una fila. Por lo general, esto se representa mediante un ID de incremento automático.
Código de ejemplo:
CREATE TABLE Example
(
SurrogateKey INT IDENTITY(1,1) -- A surrogate key that increments automatically
)
Una clave principal es la columna de identificación o el conjunto de columnas de una tabla. Puede ser clave sustituta o cualquier otra combinación única de columnas (por ejemplo, una clave compuesta). DEBE ser único para cualquier fila y no puede ser NULL
.
Código de ejemplo:
CREATE TABLE Example
(
PrimaryKey INT PRIMARY KEY -- A primary key is just an unique identifier
)
Una clave sustituta suele ser un valor numérico. Dentro de SQL Server, Microsoft le permite definir una columna con una propiedad de identidad para ayudar a generar valores clave sustitutos.
La restricción PRIMARY KEY identifica de forma única cada registro en una tabla de base de datos. Las claves primarias deben contener valores ÚNICOS. Una columna de clave principal no puede contener valores NULL. La mayoría de las tablas deben tener una clave principal, y cada tabla puede tener solo UNA clave principal.