différence entre la clé primaire et la clé unique

252

J'utilise la base de données mysql. J'ai une confusion entre la clé primaire et la clé unique.

Veuillez m'aider où dois-je créer la clé primaire et unique. Je veux dire dans quelle situation nous créons une clé unique ou une clé primaire.

Anuj
la source
9
wrt null-capacity un bon moyen de les distinguer n / b est PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT
KNU

Réponses:

233

Clé primaire:

  • Il ne peut y avoir qu'une seule clé primaire dans une table
  • Dans certains SGBD, cela ne peut pas être NULL- par exemple, MySQL ajouteNOT NULL
  • La clé primaire est un identifiant de clé unique de l'enregistrement

Clé unique:

  • Peut être plus d'une clé unique dans une table
  • Une clé unique peut avoir des NULLvaleurs
  • Il peut s'agir d'une clé candidate
  • La clé unique peut être NULL; plusieurs lignes peuvent avoir des NULLvaleurs et ne peuvent donc pas être considérées comme "uniques"
Monsieur KB
la source
11
Vous souhaitez également ajouter que cette clé primaire peut être créée sur plusieurs colonnes, par exemple la clé primaire (CustomerID, ProductID). C'est ce qu'on appelle la clé primaire composite. Ceci est pour clarifier le premier point, car il pourrait être pris tel quel (lire une clé => une colonne) par un nouveau venu dans sql:)
ken
1
Quelle est votre moyenne de «peut être une clé candidate»?
1
"seul un seul null est autorisé" - ce n'est pas vrai, du moins pas pour MySQL.
Jānis Elmeris
69
Clé unique peut être nul et ne peut pas être unique moyens ??
Pratik
20
@PratikCJoshi Il signifie probablement que le peut être plusieurs lignes avec null sur la clé autrement unique.
John
77

Clé unique (Royaume-Uni) : il s'agit d'une colonne ou d'un groupe de colonnes qui peut identifier l'unicité d'une ligne.

Clé primaire (PK) : c'est également une colonne ou un groupe de colonnes qui peut identifier l'unicité d'une ligne.

La clé primaire n'est donc qu'un autre nom pour la clé unique, mais l'implémentation par défaut dans SQL Server est différente pour la clé primaire et unique.

Par défaut:

  1. PK crée un index clusterisé et UK crée un index non clusterisé.
  2. PK n'est pas nul, mais le Royaume-Uni autorise les valeurs nulles (Remarque: par défaut)
  3. Il ne peut y avoir qu'un et un seul PK sur une table, mais il peut y avoir plusieurs UK
  4. Vous pouvez remplacer l'implémentation par défaut en fonction de vos besoins.

Cela dépend vraiment de votre objectif lorsque vous décidez de créer un Royaume-Uni ou un PK. Il s'ensuit une analogie comme "S'il y a une équipe de trois personnes, alors tous sont des pairs, mais il y en aura un qui sera une paire de pairs: PK et UK ont une relation similaire.". Je suggère de lire cet article: l'exemple donné par l'auteur peut ne pas sembler convenable, mais essayez de vous faire une idée globale.

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

dhi
la source
lire environ 10 pages Web, qui disent que PK peut contenir plus d'une colonne. Alors, comment peut-il y avoir un et un seul PK sur une table?
@android Un PK avec plus d'une colonne agit comme une seule colonne par rapport à l'unicité. Dans PostgreSQL au moins, cela signifie qu'une nouvelle colonne (avec le nom par défaut [table_name]_pkey) est ajoutée à la table (j'ai entendu cela appelé une clé de substitution). Source: postgresqltutorial.com/postgresql-primary-key Je suis nouveau dans tout cela, donc j'apprécierais une affiche plus compétente pour souligner les nuances que j'ai manquées.
Poik
D'accord, ce n'est pas une colonne. J'ai mal lu. C'est une contraint, pas une colonne. Il y a toujours l'index clusterisé, mais il est sur deux colonnes au lieu d'une. Et chaque colonne qu'elle contient n'est pas une clé primaire en soi, mais l'ensemble dans son ensemble est une clé primaire. Il n'y a donc pas plus d'un PK dans ces cas.
Poik
46

Pour une organisation ou une entreprise, il y a tellement d'entités physiques (telles que des personnes, des ressources, des machines, etc.) et des entités virtuelles (leurs tâches, transactions, activités). En règle générale, les entreprises doivent enregistrer et traiter les informations de ces entités commerciales. Ces entités commerciales sont identifiées dans un domaine commercial complet par une clé.

Selon la prospective du SGBDR, la clé (ou clé candidate) est une valeur ou un ensemble de valeurs qui identifie de manière unique une entité.

Pour une table DB, il y a tellement de clés qui existent et peuvent être éligibles pour la clé primaire. Pour que toutes les clés, clé primaire, clé unique, etc. soient appelées collectivement comme clé candidate. Cependant, DBA a sélectionné une clé dans la clé candidate pour rechercher des enregistrements est appelée clé primaire.

Différence entre la clé primaire et la clé unique

1. Comportement: la clé primaire est utilisée pour identifier une ligne (enregistrement) dans une table, tandis que la clé unique sert à empêcher les valeurs en double dans une colonne (à l'exception d'une entrée nulle).

2. Indexation: par défaut, le moteur SQL crée un index clusterisé sur la clé primaire s'il n'existe pas et un index non clusterisé sur la clé unique.

3. Nullabilité: la clé primaire n'inclut pas les valeurs Null, contrairement à la clé unique.

4. Existence: une table peut avoir au plus une clé primaire, mais peut avoir plusieurs clés uniques.

5. Modifiabilité: vous ne pouvez pas modifier ou supprimer les valeurs primaires, mais les valeurs de clé unique le peuvent.

Pour plus d'informations et d'exemples:

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

nayeemDotNetAuthorities
la source
7
Au cinquième point, vous dites que nous ne pouvons pas modifier ou supprimer les valeurs primaires. nous pouvons à coup sûr changer les valeurs primaires dans le tableau en utilisant une instruction de mise à jour.
Kapil
3
@Kapil le fait dépasse le but de l'utilisation d'une clé primaire.
Gokigooooks
2
index clusterisé: les lignes sont stockées physiquement sur le disque dans le même ordre que l'index
Duy Đặng
26

Une clé primaire doit être unique.

Une clé unique ne doit pas nécessairement être la clé primaire - voir clé candidate .

C'est-à-dire qu'il peut y avoir plus d'une combinaison de colonnes sur une table qui peut identifier de manière unique une ligne - une seule d'entre elles peut être sélectionnée comme clé primaire. Les autres, bien que uniques, sont des clés candidates.

Oded
la source
17

Différence entre la clé primaire et la clé unique

+-----------------------------------------+-----------------------------------------------+
|                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.                       |
+-----------------------------------------+-----------------------------------------------+

Vous pouvez trouver des informations détaillées sur:
http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-between-Primary-Key-and-Unique-Key.html

Omer K
la source
16

Une clé primaire a la sémantique d'identifier la ligne d'une base de données. Par conséquent, il ne peut y avoir qu'une seule clé primaire pour une table donnée, alors qu'il peut y avoir plusieurs clés uniques.

Aussi pour la même raison, une clé primaire ne peut pas être NULL (au moins dans Oracle, je ne suis pas sûr des autres bases de données)

Puisqu'il identifie la ligne, il ne devrait jamais changer. Changer les clés primaires causera inévitablement de graves douleurs et probablement une damnation éternelle.

Par conséquent, dans la plupart des cas, vous voulez un identifiant artificiel pour la clé primaire qui n'est utilisé que pour identifier des lignes uniques dans la table.

En revanche, les clés uniques peuvent changer autant que vous le souhaitez.

Jens Schauder
la source
22
+1 pour avoir mentionné le risque de damnation éternelle. Il est temps d'introduire la théologie dans la théorie des bases de données relationnelles.
Neville Kuyt
PK ne peut pas être également NULL dans SQL Server
mrd3650
7

Une clé primaire est une clé unique.

Chaque table doit avoir au plus UNE clé primaire mais elle peut avoir plusieurs clés uniques. Une clé primaire est utilisée pour identifier de manière unique une ligne de table. Une clé primaire ne peut pas l'être NULLcar NULLn'est pas une valeur.

Buhake Sindi
la source
6
  • Pensez que le nom de la table est employé.
  • Clé primaire
  • La clé primaire ne peut pas accepter de valeurs nulles. la clé primaire applique l'unicité d'une colonne. Nous ne pouvons avoir qu'une seule clé primaire dans une table.
  • Clé unique
  • Une clé unique peut accepter des valeurs nulles. La clé unique applique également l'unicité d'une colonne. Vous pouvez penser que si la clé unique contient des valeurs nulles, pourquoi peut-elle être unique? oui, bien qu'il puisse accepter des valeurs nulles, il applique l'unicité d'une colonne. jetez un œil à l'image. Ici Emp_ID est principal et Citizen ID est unique. J'espère que tu as compris. Nous pouvons utiliser plusieurs clés uniques dans une table. entrez la description de l'image ici
Mahedi Hasan Durjoy
la source
1
nous ne pouvons pas insérer plus d'une valeur nulle dans la clé Unique et cela n'autorisera pas les doublons également.
Masum
@ mahedi-hasan La colonne de clé unique ne doit-elle avoir qu'une seule valeur NULL? Comment se fait-il que les deux dernières lignes dans Citizen ID NULL? Est-ce que j'ai râté quelque chose?
supernova
Je viens de recevoir la réponse à mon propre commentaire ci-dessus. On dirait que MySQL autorise plusieurs NULL en unique, donc il semble que @Mahedi_Hasan ait utilisé MySQL. stackoverflow.com/questions/3712222/…
supernova
6

Je sais que cette question remonte à plusieurs années, mais j'aimerais y répondre en expliquant pourquoi plutôt que comment.

Objectif de la clé primaire : Identifier une ligne dans une base de données de manière unique => Une ligne représente une seule instance du type d'entité modélisée par la table. Une clé primaire applique l'intégrité d'une entité, AKA Entity Integrity. La clé primaire serait un index clusterisé, c'est-à-dire qu'elle définit l'ordre dans lequel les données sont physiquement stockées dans une table.

Objectif de la clé unique : Ok, avec la clé primaire, nous avons un moyen d'identifier de manière unique une ligne. Mais j'ai un besoin commercial tel qu'une autre colonne / un ensemble de colonnes doit avoir des valeurs uniques. Eh bien, techniquement, étant donné que cette ou ces colonnes sont uniques, elles peuvent être candidates à l'application de l'intégrité de l'entité. Mais pour tout ce que nous savons, cette colonne peut contenir des données provenant d'une organisation externe dont je doute peut-être d'être unique. Je ne peux pas lui faire confiance pour assurer l'intégrité de l'entité. J'en fais juste une clé unique pour répondre à mes besoins commerciaux.

Voilà!

Manuri Perera
la source
1

Si la conception de votre base de données est telle qu'elle n'a pas besoin de clé étrangère, vous pouvez utiliser la clé unique ( mais n'oubliez pas que la clé unique autorise une valeur nulle unique ).

Si votre base de données demande une clé étrangère, vous ne partez pas avec le choix de choisir la clé primaire.

Pour voir la différence entre la clé unique et la clé primaire, visitez ici

user2903536
la source
1

Clé unique: - Elle doit être utilisée lorsque vous devez donner une valeur unique.Dans le cas d'une clé unique, cela signifie que les valeurs nulles sont également autorisées.Les clés uniques sont les clés qui sont uniques et non similaires dans cette colonne comme par exemple le nom de votre animal de compagnie .it ne peut rien avoir comme null et si vous demandez dans le contexte de la base de données, il faut noter que chaque null est différent d'un autre null dans la base de données. EXCEPT-SQL Server où null = null est vrai


Clé primaire: - Elle doit être utilisée lorsque vous devez donner une ligne de manière unique. La clé primaire est unique pour chaque ligne d'une contrainte de base de données, car elle n'autorise pas la valeur NULL dans celle-ci. avoir une colonne qui est incrémentation automatique et c'est la clé primaire de la table. De plus, il peut être utilisé comme clé étrangère dans une autre table. L'exemple peut être orderId sur une table de commande , billId dans une table de facture .

revenons maintenant à la situation quand l'utiliser: -

1) clé primaire dans la colonne qui ne peut pas être nulle dans la table et que vous utilisez comme clé étrangère dans une autre table pour créer une relation

2) clé unique dans la table où cela n'affecte pas dans la table ou dans la base de données entière que vous preniez la valeur nulle pour la colonne particulière comme les collations dans le restaurant, il est possible que vous ne preniez pas de collations dans un restaurant

ayushs27
la source
1

différence entre la clé primaire et la clé unique

Les deux Primary keyet Unique Keysont utilisés pour définir de manière unique une ligne dans une table. Primary Keycrée un clustered indexde la colonne alors qu'un Unique creates an unclustered index of the column.

A Primary Keyne permet pas NULL value, mais a Unique Keypermet one NULL value.

Gufran Hasan
la source
0

Simplement, la clé primaire est unique et ne peut pas être nulle, unique peut être nulle et peut ne pas être unique.

Mohammed F. Ghazo
la source
msgstr "unique peut être nul et peut ne pas être unique". Que may not be uniquesignifie ici?
Yusuf Hassan
0

Clés primaires

L'objectif principal de la clé primaire est de fournir un moyen d'identifier chaque enregistrement du tableau.

La clé primaire fournit un moyen d'identifier la ligne en utilisant des données à l'intérieur de la ligne. Une clé primaire peut être basée sur une ou plusieurs colonnes, telles que le prénom et le nom; cependant, dans de nombreuses conceptions, la clé primaire est un numéro généré automatiquement à partir d'une colonne d'identité.

Une clé primaire présente les caractéristiques suivantes:

  1. Il ne peut y avoir qu'une seule clé primaire pour une table.
  2. La clé primaire se compose d'une ou plusieurs colonnes.
  3. La clé primaire applique l'intégrité de l'entité de la table.
  4. Toutes les colonnes définies doivent être définies comme NON NUL.
  5. La clé primaire identifie de manière unique une ligne.
  6. Par défaut, les clés primaires génèrent des index uniques CLUSTERED.

Clés uniques

Une clé unique est également appelée contrainte unique. Une contrainte unique peut être utilisée pour garantir que les lignes sont uniques dans la base de données.

Ne le faisons-nous pas déjà avec la clé primaire? Oui, nous le faisons, mais une table peut avoir plusieurs ensembles de colonnes que vous voulez uniques.

Dans SQL Server, la clé unique a les caractéristiques suivantes:

  1. Il peut y avoir plusieurs clés uniques définies sur une table.
  2. Les clés uniques génèrent des index uniques NON CLUSTERED par défaut.
  3. Une ou plusieurs colonnes constituent une clé unique.
  4. La colonne peut être NULL, mais un NULL par colonne est autorisé.
  5. Une contrainte unique peut être référencée par une contrainte de clé étrangère.

source: ici

Manish Vadher
la source
0

Les principales caractéristiques d'une clé primaire sont:

Il doit contenir une valeur unique pour chaque ligne de données. Il ne peut pas contenir de valeurs nulles. Une seule clé primaire dans une table.

Les principales caractéristiques d'une clé unique sont:

Il peut également contenir une valeur unique pour chaque ligne de données.

Il peut également contenir des valeurs nulles.

Plusieurs clés uniques dans une table.

Nischal Tyagi
la source