diferencia entre clave primaria y clave única

252

Estoy usando la base de datos mysql. Tengo una confusión entre la clave primaria y la clave única.

Por favor, ayúdame donde debo crear la clave principal y única. Quiero decir en qué situación creamos una clave única o clave primaria.

Anuj
fuente
99
wrt null-skill es una buena manera de distinguirlos entre ellos PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT
KNU

Respuestas:

233

Clave primaria:

  • Solo puede haber una clave principal en una tabla
  • En algunos DBMS no puede ser NULL, por ejemplo, MySQL agregaNOT NULL
  • La clave primaria es un identificador de clave único del registro

Llave unica:

  • Puede ser más de una clave única en una tabla
  • La clave única puede tener NULLvalores
  • Puede ser una clave candidata
  • Clave única puede ser NULL; varias filas pueden tener NULLvalores y, por lo tanto, no pueden considerarse "únicas"
Sr. KB
fuente
11
También desea agregar que la clave primaria se puede crear en varias columnas, por ejemplo, la clave primaria (CustomerID, ProductID). Esto se llama clave primaria compuesta. Esto es para aclarar el primer punto, ya que podría tomarse como está (lea una clave => una columna) por new comer to sql:)
ken
1
¿Cuál es su significado de 'puede ser una clave candidata'?
1
"solo se permite nulo único": esto no es cierto, al menos no para MySQL.
Jānis Elmeris
69
Clave única puede ser nulo y no puede ser única Medios ??
Pratik
20
@PratikCJoshi Probablemente quiere decir que pueden ser varias filas con nulo en la clave que de otro modo sería única.
John
77

Clave única (Reino Unido) : es una columna o un grupo de columnas que pueden identificar una singularidad en una fila.

Clave primaria (PK) : también es una columna o grupo de columnas que puede identificar una unicidad en una fila.

Por lo tanto, la clave principal es solo otro nombre para la clave única, pero la implementación predeterminada en SQL Server es diferente para la clave principal y única.

Por defecto:

  1. PK crea un índice agrupado y el Reino Unido crea un índice no agrupado.
  2. PK no es nulo, pero el Reino Unido permite nulos (Nota: por defecto)
  3. Solo puede haber una y solo una PK en una mesa, pero puede haber múltiples UK
  4. Puede anular la implementación predeterminada según su necesidad.

Realmente depende de cuál es su objetivo al decidir si crear un Reino Unido o PK. Sigue una analogía como "Si hay un equipo de tres personas, entonces todas son pares, pero habrá una de ellas que será un par de pares: PK y el Reino Unido tienen una relación similar". Sugeriría leer este artículo: el ejemplo dado por el autor puede no parecer adecuado, pero trate de tener una idea general.

http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html

dhi
fuente
lee alrededor de 10 páginas web, que dicen que PK puede contener más de una columna. Entonces, ¿cómo puede haber una y solo una PK en una mesa?
@android Un PK con más de una columna actúa como una sola columna con respecto a la unicidad. Al menos en PostgreSQL, esto significa que [table_name]_pkeyse agrega una nueva columna (con nombre predeterminado ) a la tabla (he escuchado que se conoce como una clave sustituta). Fuente: postgresqltutorial.com/postgresql-primary-key Soy nuevo en todo esto, así que agradecería un póster más informado para señalar los matices que me perdí.
Poik
De acuerdo, no es una columna. No lo leí bien. Es una contracción, no una columna. Todavía existe el índice agrupado, pero tiene más de dos columnas en lugar de una. Y cada columna en ella no es una clave primaria en sí misma, sino que todo el conjunto es una clave primaria. Por lo tanto, no hay más de una PK en estos casos.
Poik
46

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). Por lo general, las empresas necesitan registrar y procesar la información de esas entidades comerciales. Estas entidades comerciales se identifican dentro de un dominio comercial completo mediante una clave.

Según el prospectivo RDBMS, la clave (también conocida como clave candidata) es un valor o conjunto de valores que identifica de forma exclusiva a una entidad.

Para una DB-Table, existen tantas claves que pueden ser elegibles para la Clave primaria. De modo que todas las claves, clave primaria, clave única, etc. se denominan colectivamente como clave candidata. Sin embargo, DBA seleccionó una clave de la clave candidata para buscar registros que se llama Clave primaria.

Diferencia entre clave primaria y clave única

1. Comportamiento: la clave primaria se usa para identificar una fila (registro) en una tabla, mientras que la clave única es para evitar valores duplicados en una columna (con la excepción de una entrada nula).

2. Indexación: de forma predeterminada, el motor SQL crea el índice agrupado en la clave principal si no existe y el índice no agrupado en la clave única.

3. Nulabilidad: la clave primaria no incluye valores nulos, mientras que la clave única sí.

4. Existencia: una tabla puede tener como máximo una clave principal, pero puede tener varias Claves únicas.

5. Modificabilidad: no puede cambiar ni eliminar valores primarios, pero los valores de clave única sí.

Para más información y ejemplos:

http://dotnetauthorities.blogspot.in/2013/11/Microsoft-SQL-Server-Training-Online-Learning-Classes-Integrity-Constraints-PrimaryKey-Unique-Key_27.html

nayeemDotNetAuthorities
fuente
77
En el quinto punto, dice que no podemos cambiar o eliminar los valores primarios. seguramente podemos cambiar los valores primarios en la tabla mediante el uso de una declaración de actualización.
Kapil
3
Al hacerlo, @Kapil supera el propósito de usar una clave primaria.
Gokigooooks el
2
índice agrupado: las filas se almacenan físicamente en el disco en el mismo orden que el índice
Duy Janng
26

Una clave primaria debe ser única.

Una clave única no tiene que ser la clave principal; consulte la clave candidata .

Es decir, puede haber más de una combinación de columnas en una tabla que puede identificar de forma exclusiva una fila; solo una de ellas se puede seleccionar como clave principal. Los otros, aunque únicos, son claves candidatas.

Oded
fuente
17

Diferencia entre clave primaria y clave única

+-----------------------------------------+-----------------------------------------------+
|                Primary Key              |                    Unique Key                 |
+-----------------------------------------+-----------------------------------------------+
| Primary Key can't accept null values.   | Unique key can accept only one null value.    |
+-----------------------------------------+-----------------------------------------------+
| By default, Primary key is clustered    | By default, Unique key is a unique            |
| index and data in the database table is | non-clustered index.                          |
| physically organized in the sequence of |                                               |
| clustered index.                        |                                               |
+-----------------------------------------+-----------------------------------------------+
| We can have only one Primary key in a   | We can have more than one unique key in a     |
| table.                                  | table.                                        |
+-----------------------------------------+-----------------------------------------------+
| Primary key can be made foreign key     | In SQL Server, Unique key can be made foreign |
| into another table.                     | key into another table.                       |
+-----------------------------------------+-----------------------------------------------+

Puede encontrar información detallada en:
http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-between-Primary-Key-and-Unique-Key.html

Omer K
fuente
16

Una clave primaria tiene la semántica de identificar la fila de una base de datos. Por lo tanto, solo puede haber una clave principal para una tabla determinada, mientras que puede haber muchas claves únicas.

También por la misma razón, una clave principal no puede ser NULL (al menos en Oracle, no estoy seguro acerca de otras bases de datos)

Como identifica la fila, nunca debería cambiar. Cambiar las claves principales está destinado a causar un dolor grave y probablemente una condenación eterna.

Por lo tanto, en la mayoría de los casos, desea una identificación artificial para la clave primaria que no se usa para otra cosa que no sea identificar filas individuales en la tabla.

Las teclas únicas, por otro lado, pueden cambiar todo lo que desee.

Jens Schauder
fuente
22
+1 por mencionar el riesgo de condenación eterna. Es hora de introducir la teología en la teoría de bases de datos relacionales.
Neville Kuyt
PK no puede ser NULL en SQL Server también
mrd3650
7

Una clave primaria es una clave única.

Cada tabla debe tener como máximo UNA clave principal, pero puede tener varias claves únicas. Una clave primaria se utiliza para identificar de forma exclusiva una fila de la tabla. Una clave primaria no puede ser NULLya NULLque no es un valor.

Buhake Sindi
fuente
6
  • Piensa que el nombre de la tabla es empleado.
  • Clave primaria
  • La clave primaria no puede aceptar valores nulos. La clave primaria impone la unicidad de una columna. Solo podemos tener una clave primaria en una tabla.
  • Llave unica
  • La clave única puede aceptar valores nulos. la clave única también impone la unicidad de una columna. Puede pensar que si la clave única contiene valores nulos, ¿por qué puede ser única? Sí, aunque puede aceptar valores nulos, impone la unicidad de una columna. solo eche un vistazo a la imagen. Aquí Emp_ID es primario y Citizen ID es único. Espero que entiendas. Podemos usar múltiples claves únicas en una tabla. ingrese la descripción de la imagen aquí
Mahedi Hasan Durjoy
fuente
1
no podemos insertar más de un valor nulo en la clave Unique y tampoco permitirá duplicados.
Masum
@ mahedi-hasan ¿La columna de clave Isn't Unique debería tener solo un valor NULL? ¿Cómo es que las últimas dos filas en Citizen ID NULL? ¿Me estoy perdiendo de algo?
supernova
Acabo de recibir respuesta a mi propio comentario anterior. Parece que MySQL permite múltiples NULL en único también, así que parece que @Mahedi_Hasan usó MySQL. stackoverflow.com/questions/3712222/…
supernova
6

Sé que esta pregunta tiene varios años, pero me gustaría responder a esto explicando por qué en lugar de cómo

Propósito de la clave primaria : para identificar una fila en una base de datos de forma exclusiva => Una fila representa una sola instancia del tipo de entidad modelado por la tabla. Una clave primaria impone la integridad de una entidad, AKA Integridad de entidad. La clave primaria sería un índice agrupado, es decir, define el orden en que los datos se almacenan físicamente en una tabla.

Propósito de la clave única : Ok, con la clave primaria tenemos una manera de identificar de forma única una fila. Pero tengo una necesidad comercial tal que otra columna / un conjunto de columnas debe tener valores únicos. Bueno, técnicamente, dado que esta columna (s) es única, puede ser un candidato para hacer cumplir la integridad de la entidad. Pero, por lo que sabemos, esta columna puede contener datos provenientes de una organización externa de la que puedo tener dudas acerca de ser único. No puedo confiar en que proporcione integridad de la entidad. Simplemente lo convierto en una clave única para cumplir con los requisitos de mi negocio.

Ahí tienes!

Manuri Perera
fuente
1

Si el diseño de su base de datos es tal que no necesita una clave externa, entonces puede usar la clave única ( pero recuerde que la clave única permite un valor nulo único ).

Si la base de datos exige una clave externa, entonces se va sin opción, tiene que ir con la clave primaria.

Para ver la diferencia entre la clave única y la principal, visite aquí

usuario2903536
fuente
1

Clave única: debe usarse cuando tiene que dar un valor único. En el caso de una clave única, significa que también se permiten valores nulos. Las claves únicas son aquellas claves que son únicas y no similares en esa columna como, por ejemplo, el nombre de su mascota .it no puede ser nada como nulo y si está preguntando en el contexto de la base de datos, entonces debe tenerse en cuenta que cada nulo es diferente de otro nulo en la base de datos. EXCEPTO-SQL Server donde null = null es verdadero


clave primaria: - Debe usarse cuando tiene que dar una identificación única de una fila. La clave es la clave que es única para cada fila en una restricción de base de datos es que no permite nulo en ella. Por lo tanto, es posible que haya visto que la base de datos tiene una columna que es de incremento automático y es la clave principal de la tabla. además de que se puede utilizar como una clave externa en otro table.example puede ser orderId en una tabla de orden , billId en una tabla factura .

ahora volviendo a la situación cuando usarlo: -

1) clave principal en la columna que no puede ser nula en la tabla y que está utilizando como clave externa en otra tabla para crear una relación

2) clave única en la tabla donde no afecta en la tabla o en toda la base de datos si toma el valor nulo para la columna en particular, como bocadillos en el restaurante, es posible que no tome bocadillos en un restaurante

ayushs27
fuente
1

diferencia entre clave primaria y clave única

Ambos Primary keyy Unique Keyse utilizan para definir de forma única una fila en una tabla. Primary Keycrea a clustered indexde la columna mientras que a Unique creates an unclustered index of the column.

A Primary Keyno permite NULL value, sin embargo a Unique Key, permite one NULL value.

Gufran Hasan
fuente
0

Simply Primary Key es un único y no puede ser nulo, único puede ser nulo y puede no ser único.

Mohammed F. Ghazo
fuente
"único puede ser nulo y puede no ser único". ¿Qué may not be uniquesignifica aquí?
Yusuf Hassan
0

Claves primarias

El objetivo principal de la clave primaria es proporcionar un medio para identificar cada registro en la tabla.

La clave primaria proporciona un medio para identificar la fila, utilizando datos dentro de la fila. Una clave primaria puede basarse en una o más columnas, como el nombre y el apellido; sin embargo, en muchos diseños, la clave primaria es un número generado automáticamente a partir de una columna de identidad.

Una clave primaria tiene las siguientes características:

  1. Solo puede haber una clave principal para una tabla.
  2. La clave primaria consta de una o más columnas.
  3. La clave primaria impone la integridad de la entidad de la tabla.
  4. Todas las columnas definidas deben definirse como NOT NULL.
  5. La clave primaria identifica de forma exclusiva una fila.
  6. Las claves primarias dan como resultado índices únicos agrupados de forma predeterminada.

Llaves únicas

Una clave única también se denomina restricción única. Se puede usar una restricción única para garantizar que las filas sean únicas dentro de la base de datos.

¿Ya no hacemos eso con la clave primaria? Sí, lo hacemos, pero una tabla puede tener varios conjuntos de columnas que desea que sean únicas.

En SQL Server, la clave única tiene las siguientes características:

  1. Puede haber múltiples claves únicas definidas en una tabla.
  2. Las claves únicas dan como resultado índices únicos no agrupados de forma predeterminada.
  3. Una o más columnas forman una clave única.
  4. La columna puede ser NULL, pero en un NULL por columna está permitido.
  5. Una restricción de clave externa puede hacer referencia a una restricción única.

fuente: aquí

Vadher Manish
fuente
0

Las características principales de una clave principal son:

Debe contener un valor único para cada fila de datos. No puede contener valores nulos. Solo una clave primaria en una tabla.

Las características principales de una clave única son:

También puede contener un valor único para cada fila de datos.

También puede contener valores nulos.

Múltiples claves únicas en una tabla.

Nischal Tyagi
fuente