primary-key - una - llave unica base de datos
¿Cuál es la diferencia b/w clave principal y clave única (11)
Ambos representan una identificación única de una fila en una tabla, pero hay una pequeña diferencia:
La tecla PRIMARIA no permite valores NULL
mientras
La tecla ÚNICA permite solo un valor NULL.
Esa es la principal diferencia.
Traté de encontrarlo en google pero no se da una respuesta satisfactoria. ¿Alguien puede explicar la sólida diferencia?
en realidad, si la clave principal se utiliza para seleccionar datos de forma exclusiva, ¿cuál es la necesidad de la clave única?
¿Cuándo debo usar una clave principal y cuándo usar una clave única?
Antes de discutir acerca de la diferencia entre la clave principal y la clave única, es importante determinar qué es la clave, cómo desempeña un papel en la empresa y cómo se implementa en SQL / Oracle, etc.
Según el prospecto comercial: para una organización o un negocio, hay tantas entidades físicas (como personas, recursos, máquinas, etc.) y entidades virtuales (sus tareas, transacciones, actividades). Normalmente, las empresas necesitan registrar y procesar información para esas entidades comerciales. Estas entidades comerciales se identifican dentro del dominio empresarial completo mediante una clave.
Según RDBMS prospectivo: Clave (también conocida como Clave de Candidato), un valor o conjunto de valores que identifica de forma única a la entidad. Para una Db-Table, existen tantas claves que podrían ser elegibles para la Clave principal. De modo que todas las claves, clave principal, clave única, etc. se denominan colectivamente como Clave de candidato.
Para una tabla DBA seleccionada, la clave de candidato se llama clave principal, otras claves candidatas se denominan claves secundarias.
Diferencia entre clave principal y clave única
1. Comportamiento: la clave principal se utiliza para identificar una fila (registro) en una tabla, mientras que la clave única es para evitar valores duplicados en una columna.
2. Indización: de forma predeterminada, Sql-engine crea un índice agrupado en la clave principal si no existe y el índice no agrupado en la clave única.
3. Nulabilidad: la clave principal no incluye valores nulos, mientras que la clave única puede.
4. Existencia: una tabla puede tener, como máximo, una clave principal, pero puede tener varias claves únicas.
5. Modificabilidad: no puede cambiar o eliminar valores primarios, pero sí valores de clave única.
Para obtener más información con ejemplos: http://dotnetauthorities.blogspot.in/2013/11/Microsoft-SQL-Server-Training-Online-Learning-Classes-Integrity-Constraints-PrimaryKey-Unique-Key_27.html
El término "clave única" es ambiguo y tautólogo. En el modelo relacional, una "clave" significa una clave candidata, que por definición es única de todos modos. Una clave principal es cualquiera de las claves candidatas de una relación. Por lo tanto, "clave única" significa exactamente lo mismo que "clave candidata", que significa exactamente lo mismo que "clave principal". No hay diferencia.
Sin embargo, SQL tiene algo que se llama una restricción ÚNICA que es sutilmente diferente a una restricción de CLAVE PRIMARIA de SQL; ambas aplican la singularidad, pero la CLAVE PRIMARIA solo se puede usar una vez por tabla. Las restricciones ÚNICAS también permiten nulos, mientras que las restricciones PRIMARY KEY no lo hacen.
Por lo tanto, el término potencialmente confuso "clave única" se usa con más frecuencia para significar una clave impuesta por una restricción ÚNICA. Incluso podría usarse para significar una restricción ÚNICA en las columnas que pueden contener nulos, aunque, en mi opinión, es un uso muy dudoso del término porque un conjunto de columnas que incluyen nulos no puede ser una clave candidata, por lo que el uso de la palabra "clave" para anulable Las columnas no son realmente correctas y están destinadas a causar confusión.
La clave principal y la clave única se usan para diferentes cosas: entender para qué sirven le ayudará a decidir cuándo usarlas.
La clave principal se utiliza para identificar una fila de datos en una tabla. Se utiliza cuando necesita referirse a una fila en particular, por ejemplo. en otras tablas o por código de aplicación, etc. Para identificar una fila, los valores de un PK deben ser únicos. Además, no pueden ser nulos, porque la mayoría de los dbms tratan a null como no igual a null (ya que null normalmente significa "desconocido"). Una tabla solo puede tener un PK. Todas las tablas en su base de datos deben tener un PK (aunque la mayoría de los dbms no lo imponen), y PK puede abarcar varias columnas.
Se utilizan restricciones clave únicas para garantizar que los datos no se dupliquen en dos filas en la base de datos. Una fila en la base de datos puede tener un valor nulo para el valor de la restricción de clave única. Aunque una tabla debe tener un PK, no necesita tener ninguna clave única adicional. Sin embargo, las tablas pueden tener más de una clave única si eso satisface sus necesidades. Al igual que las PK, las claves únicas pueden abarcar varias columnas.
También vale la pena saber que, de manera predeterminada, muchos índices dbms y físicamente ordenan tablas en el disco usando el PK. Esto significa que buscar valores por su PK es más rápido que usar otros valores en una fila. Normalmente, sin embargo, puede anular este comportamiento si es necesario.
NOT NULL significa que cualquier entrada en esa columna en particular no debe ser nula. ÚNICO significa que cada entrada en la columna debe ser distinta. CLAVE PRIMARIA significa que cualquier entrada en la columna debe ser distinta y no nula.
Tan simplemente..
PRIMARY KEY= UNIQUE + NOT NULL
Solo para agregar otro ejemplo:
Piense en una tabla que contenga datos del usuario, donde cada usuario tenga una dirección de correo electrónico. No hay dos usuarios que puedan tener la misma dirección de correo electrónico, por lo que esa columna se convierte en una clave única. Si bien podría ser la clave principal (nunca he hecho de una cadena una clave principal), no tiene por qué serlo.
Una clave única se servirá con otra clave, mientras que una clave principal no sirve ninguna otra clave con ella. La clave principal se utiliza sin ninguna asociación de ninguna otra clave.
Una clave principal es una clave única. Ambos tipos de clave sirven para identificar de forma única una sola fila en una tabla. Muchos RDBMS requieren que una de las claves únicas en una tabla se designe como la "clave principal", por varias razones de implementación diferentes. En términos de integridad de datos, no hay diferencia.
Una clave principal no permite nulos, una clave única permitirá un nulo (en el servidor SQL y varios nulos en Oracle) Una tabla solo puede tener una clave primaria pero muchas claves únicas
use claves primarias cuando desee configurar relaciones de clave externa
Aquí hay un pequeño ejemplo con una sola columna en cada tabla.
--primary key table
CREATE TABLE PrimaryTest (id INT PRIMARY KEY NOT NULL)
GO
-- foreign key table
CREATE TABLE ForeignTest (Pkid INT NOT NULL)
GO
--relationship
ALTER TABLE dbo.ForeignTest ADD CONSTRAINT
FK_ForeignTest_PrimaryTest FOREIGN KEY
(
Pkid
) REFERENCES dbo.PrimaryTest
(
id
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
insertar una fila en la tabla de clave primaria
insert PrimaryTest values(1)
inserte una fila en la tabla de clave externa con un valor que existe en la tabla de clave principal
insert ForeignTest values(1)
Ahora esto fallará porque el valor 2 no existe en la tabla de clave primaria
insert ForeignTest values(2)
Msg 547, nivel 16, estado 0, línea 1 La instrucción INSERT entró en conflicto con la restricción FOREIGN KEY "FK_ForeignTest_PrimaryTest". El conflicto ocurrió en la base de datos "aspnetdb", tabla "dbo.PrimaryTest", columna ''id''. La instrucción se ha terminado.
puede tener muchas restricciones ÚNICAS por tabla, pero solo una restricción PRIMARIA DE CLAVE por tabla. Más información se puede encontrar here
Restricción de clave primaria
1. Una clave primaria no puede permitir nula.
2. NO se permiten múltiples claves primarias.
3. En algunos RDBMS, una clave principal genera un índice agrupado de forma predeterminada.
Restricción unica
1. Se puede definir una restricción única en las columnas que permiten valores nulos.
2. Se permiten múltiples claves únicas.
3. En algunos RDBMS, una clave única genera un índice no agrupado de forma predeterminada.
Fuente Wikipedia